Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(484)

Side by Side Diff: ui/base/ime/chromeos/ime_keymap.cc

Issue 324903002: Remoes X11 dependency in InputMethodEngine. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/base/ime/chromeos/ime_keymap.h" 5 #include "ui/base/ime/chromeos/ime_keymap.h"
6 6
7 #define XK_MISCELLANY 7 #include <map>
8 #include <X11/keysymdef.h>
9 #include <X11/XF86keysym.h>
10 8
11 namespace ui { 9 namespace ui {
12 10
13 std::string FromXKeycodeToKeyValue(int keyval) { 11 namespace {
14 // TODO: Ensure all keys are supported. 12
15 switch (keyval) { 13 struct KeyCodeMap {
Yuki 2014/06/16 07:34:24 const struct
Shu Chen 2014/06/16 08:06:47 Done.
16 case XK_Escape: 14 KeyboardCode keyboard_code;
17 return "Esc"; 15 const char* code;
Yuki 2014/06/16 07:34:24 Better to have more descriptive name for "code".
Shu Chen 2014/06/16 08:06:47 Done.
18 case XK_F1: 16 } kKeyCodeMap[] = {{VKEY_BACK, "Backspace"},
19 case XF86XK_Back: 17 {VKEY_TAB, "Tab"},
20 return "HistoryBack"; 18 {VKEY_RETURN, "Enter"},
21 case XK_F2: 19 {VKEY_MENU, "ContextMenu"},
22 case XF86XK_Forward: 20 {VKEY_PAUSE, "Pause"},
23 return "HistoryForward"; 21 {VKEY_CAPITAL, "CapsLock"},
24 case XK_F3: 22 {VKEY_KANA, "KanaMode"},
25 case XF86XK_Reload: 23 {VKEY_HANGUL, "HangulMode"},
26 return "BrowserRefresh"; 24 {VKEY_HANJA, "Hanja"},
27 case XK_F4: 25 {VKEY_KANJI, "Kanji"},
28 case XF86XK_LaunchB: 26 {VKEY_ESCAPE, "Escape"},
29 return "ChromeOSFullscreen"; // TODO: Check this value 27 {VKEY_CONVERT, "Convert"},
30 case XK_F5: 28 {VKEY_NONCONVERT, "NoConvert"},
31 case XF86XK_LaunchA: 29 {VKEY_SPACE, "Space"},
32 return "ChromeOSSwitchWindow"; // TODO: Check this value 30 {VKEY_END, "End"},
33 case XK_F6: 31 {VKEY_HOME, "Home"},
34 case XF86XK_MonBrightnessDown: 32 {VKEY_LEFT, "ArrowLeft"},
35 return "BrightnessDown"; 33 {VKEY_UP, "ArrowUp"},
36 case XK_F7: 34 {VKEY_RIGHT, "ArrowRight"},
37 case XF86XK_MonBrightnessUp: 35 {VKEY_DOWN, "ArrowDown"},
38 return "BrightnessUp"; 36 {VKEY_PRINT, "PrintScreen"},
39 case XK_F8: 37 {VKEY_INSERT, "Insert"},
40 case XF86XK_AudioMute: 38 {VKEY_DELETE, "Delete"},
41 return "AudioVolumeMute"; 39 {VKEY_HELP, "Help"},
42 case XK_F9: 40 {VKEY_0, "Digit0"},
43 case XF86XK_AudioLowerVolume: 41 {VKEY_1, "Digit1"},
44 return "AudioVolumeDown"; 42 {VKEY_2, "Digit2"},
45 case XK_F10: 43 {VKEY_3, "Digit3"},
46 case XF86XK_AudioRaiseVolume: 44 {VKEY_4, "Digit4"},
47 return "AudioVolumeUp"; 45 {VKEY_5, "Digit5"},
48 case XK_BackSpace: 46 {VKEY_6, "Digit6"},
49 return "Backspace"; 47 {VKEY_7, "Digit7"},
50 case XK_Delete: 48 {VKEY_8, "Digit8"},
51 case XK_KP_Delete: 49 {VKEY_9, "Digit9"},
52 return "Delete"; 50 {VKEY_A, "KeyA"},
53 case XK_Tab: 51 {VKEY_B, "KeyB"},
54 return "Tab"; 52 {VKEY_C, "KeyC"},
55 case XK_KP_Enter: 53 {VKEY_D, "KeyD"},
56 case XK_Return: 54 {VKEY_E, "KeyE"},
57 return "Enter"; 55 {VKEY_F, "KeyF"},
58 case XK_Meta_L: 56 {VKEY_G, "KeyG"},
59 return "BrowserSearch"; 57 {VKEY_H, "KeyH"},
60 case XK_Up: 58 {VKEY_I, "KeyI"},
61 case XK_KP_Up: 59 {VKEY_J, "KeyJ"},
62 return "Up"; 60 {VKEY_K, "KeyK"},
63 case XK_Down: 61 {VKEY_L, "KeyL"},
64 case XK_KP_Down: 62 {VKEY_M, "KeyM"},
65 return "Down"; 63 {VKEY_N, "KeyN"},
66 case XK_Left: 64 {VKEY_O, "KeyO"},
67 case XK_KP_Left: 65 {VKEY_P, "KeyP"},
68 return "Left"; 66 {VKEY_Q, "KeyQ"},
69 case XK_Right: 67 {VKEY_R, "KeyR"},
70 case XK_KP_Right: 68 {VKEY_S, "KeyS"},
71 return "Right"; 69 {VKEY_T, "KeyT"},
72 case XK_Page_Up: 70 {VKEY_U, "KeyU"},
73 return "PageUp"; 71 {VKEY_V, "KeyV"},
74 case XK_Page_Down: 72 {VKEY_W, "KeyW"},
75 return "PageDown"; 73 {VKEY_X, "KeyX"},
76 case XK_Home: 74 {VKEY_Y, "KeyY"},
77 return "Home"; 75 {VKEY_Z, "KeyZ"},
78 case XK_End: 76 {VKEY_LWIN, "OSLeft"},
79 return "End"; 77 {VKEY_RWIN, "OSRight"},
80 case XK_Shift_L: 78 {VKEY_NUMPAD0, "Numpad0"},
81 case XK_Shift_R: 79 {VKEY_NUMPAD1, "Numpad1"},
82 return "Shift"; 80 {VKEY_NUMPAD2, "Numpad2"},
83 case XK_Alt_L: 81 {VKEY_NUMPAD3, "Numpad3"},
84 case XK_Alt_R: 82 {VKEY_NUMPAD4, "Numpad4"},
85 return "Alt"; 83 {VKEY_NUMPAD5, "Numpad5"},
86 case XK_Control_L: 84 {VKEY_NUMPAD6, "Numpad6"},
87 case XK_Control_R: 85 {VKEY_NUMPAD7, "Numpad7"},
88 return "Ctrl"; 86 {VKEY_NUMPAD8, "Numpad8"},
89 case XK_Caps_Lock: 87 {VKEY_NUMPAD9, "Numpad9"},
90 return "CapsLock"; 88 {VKEY_MULTIPLY, "NumpadMultiply"},
91 default: { 89 {VKEY_ADD, "NumpadAdd"},
92 // TODO: Properly support unicode characters. 90 {VKEY_SUBTRACT, "NumpadSubtract"},
93 char value[2]; 91 {VKEY_DECIMAL, "NumpadDecimal"},
94 value[0] = keyval; 92 {VKEY_DIVIDE, "NumpadDivide"},
95 value[1] = '\0'; 93 {VKEY_F1, "F1"},
96 return value; 94 {VKEY_F2, "F2"},
97 } 95 {VKEY_F3, "F3"},
96 {VKEY_F4, "F4"},
97 {VKEY_F5, "F5"},
98 {VKEY_F6, "F6"},
99 {VKEY_F7, "F7"},
100 {VKEY_F8, "F8"},
101 {VKEY_F9, "F9"},
102 {VKEY_F10, "F10"},
103 {VKEY_F11, "F11"},
104 {VKEY_F12, "F12"},
105 {VKEY_F13, "F13"},
106 {VKEY_F14, "F14"},
107 {VKEY_F15, "F15"},
108 {VKEY_F16, "F16"},
109 {VKEY_F17, "F17"},
110 {VKEY_F18, "F18"},
111 {VKEY_F19, "F19"},
112 {VKEY_F20, "F20"},
113 {VKEY_F21, "F21"},
114 {VKEY_F22, "F22"},
115 {VKEY_F23, "F23"},
116 {VKEY_F24, "F24"},
117 {VKEY_NUMLOCK, "NumLock"},
118 {VKEY_SCROLL, "ScrollLock"},
119 {VKEY_LSHIFT, "ShiftLeft"},
120 {VKEY_RSHIFT, "ShiftRight"},
121 {VKEY_LCONTROL, "CtrlLeft"},
122 {VKEY_RCONTROL, "CtrlRight"},
123 {VKEY_BROWSER_BACK, "BrowserBack"},
124 {VKEY_BROWSER_FORWARD, "BrowserForward"},
125 {VKEY_BROWSER_REFRESH, "BrowserRefresh"},
126 {VKEY_BROWSER_STOP, "BrowserStop"},
127 {VKEY_BROWSER_SEARCH, "BrowserSearch"},
128 {VKEY_BROWSER_HOME, "BrowserHome"},
129 {VKEY_VOLUME_MUTE, "VolumeMute"},
130 {VKEY_VOLUME_DOWN, "VolumeDown"},
131 {VKEY_VOLUME_UP, "VolumeUp"},
132 {VKEY_MEDIA_NEXT_TRACK, "MediaTrackNext"},
133 {VKEY_MEDIA_PREV_TRACK, "MediaTrackPrevious"},
134 {VKEY_MEDIA_STOP, "MediaStop"},
135 {VKEY_MEDIA_PLAY_PAUSE, "MediaPlayPause"},
136 {VKEY_MEDIA_LAUNCH_MAIL, "LaunchMail"},
137 {VKEY_OEM_1, "Semicolon"},
138 {VKEY_OEM_PLUS, "Equal"},
139 {VKEY_OEM_COMMA, "Comma"},
140 {VKEY_OEM_MINUS, "Minus"},
141 {VKEY_OEM_PERIOD, "Period"},
142 {VKEY_OEM_2, "Slash"},
143 {VKEY_OEM_3, "Backquote"},
144 {VKEY_OEM_4, "BracketLeft"},
145 {VKEY_OEM_5, "Backslash"},
146 {VKEY_OEM_6, "BracketRight"},
147 {VKEY_OEM_7, "Quote"}};
148
149 } // namespace
150
151 KeyboardCode FromCodeToKeyboardCode(const std::string& code) {
152 static std::map<std::string, KeyboardCode> map;
Yuki 2014/06/16 07:34:24 I don't remember our exact policy about static obj
Shu Chen 2014/06/16 08:06:48 Done.
153 if (map.empty()) {
154 for (size_t i = 0; i < arraysize(kKeyCodeMap); ++i)
155 map[kKeyCodeMap[i].code] = kKeyCodeMap[i].keyboard_code;
98 } 156 }
157 std::map<std::string, KeyboardCode>::const_iterator it = map.find(code);
158 return (it == map.end()) ? VKEY_UNKNOWN : it->second;
99 } 159 }
100 160
101 } // namespace ui 161 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698