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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: ui/base/ime/chromeos/ime_keymap.cc
diff --git a/ui/base/ime/chromeos/ime_keymap.cc b/ui/base/ime/chromeos/ime_keymap.cc
index 16b32f328ad8ee2d98f6df0da022135e5d7c2dbd..a068295c00cf8d372ddac2662bea182c89eef953 100644
--- a/ui/base/ime/chromeos/ime_keymap.cc
+++ b/ui/base/ime/chromeos/ime_keymap.cc
@@ -4,98 +4,158 @@
#include "ui/base/ime/chromeos/ime_keymap.h"
-#define XK_MISCELLANY
-#include <X11/keysymdef.h>
-#include <X11/XF86keysym.h>
+#include <map>
namespace ui {
-std::string FromXKeycodeToKeyValue(int keyval) {
- // TODO: Ensure all keys are supported.
- switch (keyval) {
- case XK_Escape:
- return "Esc";
- case XK_F1:
- case XF86XK_Back:
- return "HistoryBack";
- case XK_F2:
- case XF86XK_Forward:
- return "HistoryForward";
- case XK_F3:
- case XF86XK_Reload:
- return "BrowserRefresh";
- case XK_F4:
- case XF86XK_LaunchB:
- return "ChromeOSFullscreen"; // TODO: Check this value
- case XK_F5:
- case XF86XK_LaunchA:
- return "ChromeOSSwitchWindow"; // TODO: Check this value
- case XK_F6:
- case XF86XK_MonBrightnessDown:
- return "BrightnessDown";
- case XK_F7:
- case XF86XK_MonBrightnessUp:
- return "BrightnessUp";
- case XK_F8:
- case XF86XK_AudioMute:
- return "AudioVolumeMute";
- case XK_F9:
- case XF86XK_AudioLowerVolume:
- return "AudioVolumeDown";
- case XK_F10:
- case XF86XK_AudioRaiseVolume:
- return "AudioVolumeUp";
- case XK_BackSpace:
- return "Backspace";
- case XK_Delete:
- case XK_KP_Delete:
- return "Delete";
- case XK_Tab:
- return "Tab";
- case XK_KP_Enter:
- case XK_Return:
- return "Enter";
- case XK_Meta_L:
- return "BrowserSearch";
- case XK_Up:
- case XK_KP_Up:
- return "Up";
- case XK_Down:
- case XK_KP_Down:
- return "Down";
- case XK_Left:
- case XK_KP_Left:
- return "Left";
- case XK_Right:
- case XK_KP_Right:
- return "Right";
- case XK_Page_Up:
- return "PageUp";
- case XK_Page_Down:
- return "PageDown";
- case XK_Home:
- return "Home";
- case XK_End:
- return "End";
- case XK_Shift_L:
- case XK_Shift_R:
- return "Shift";
- case XK_Alt_L:
- case XK_Alt_R:
- return "Alt";
- case XK_Control_L:
- case XK_Control_R:
- return "Ctrl";
- case XK_Caps_Lock:
- return "CapsLock";
- default: {
- // TODO: Properly support unicode characters.
- char value[2];
- value[0] = keyval;
- value[1] = '\0';
- return value;
- }
+namespace {
+
+struct KeyCodeMap {
+ KeyboardCode keyboard_code;
+ const char* code;
+} kKeyCodeMap[] = {{VKEY_BACK, "Backspace"},
+ {VKEY_TAB, "Tab"},
+ {VKEY_RETURN, "Enter"},
+ {VKEY_MENU, "ContextMenu"},
+ {VKEY_PAUSE, "Pause"},
+ {VKEY_CAPITAL, "CapsLock"},
+ {VKEY_KANA, "KanaMode"},
+ {VKEY_HANGUL, "HangulMode"},
+ {VKEY_HANJA, "Hanja"},
+ {VKEY_KANJI, "Kanji"},
+ {VKEY_ESCAPE, "Escape"},
+ {VKEY_CONVERT, "Convert"},
+ {VKEY_NONCONVERT, "NoConvert"},
+ {VKEY_SPACE, "Space"},
+ {VKEY_END, "End"},
+ {VKEY_HOME, "Home"},
+ {VKEY_LEFT, "ArrowLeft"},
+ {VKEY_UP, "ArrowUp"},
+ {VKEY_RIGHT, "ArrowRight"},
+ {VKEY_DOWN, "ArrowDown"},
+ {VKEY_PRINT, "PrintScreen"},
+ {VKEY_INSERT, "Insert"},
+ {VKEY_DELETE, "Delete"},
+ {VKEY_HELP, "Help"},
+ {VKEY_0, "Digit0"},
+ {VKEY_1, "Digit1"},
+ {VKEY_2, "Digit2"},
+ {VKEY_3, "Digit3"},
+ {VKEY_4, "Digit4"},
+ {VKEY_5, "Digit5"},
+ {VKEY_6, "Digit6"},
+ {VKEY_7, "Digit7"},
+ {VKEY_8, "Digit8"},
+ {VKEY_9, "Digit9"},
+ {VKEY_A, "KeyA"},
+ {VKEY_B, "KeyB"},
+ {VKEY_C, "KeyC"},
+ {VKEY_D, "KeyD"},
+ {VKEY_E, "KeyE"},
+ {VKEY_F, "KeyF"},
+ {VKEY_G, "KeyG"},
+ {VKEY_H, "KeyH"},
+ {VKEY_I, "KeyI"},
+ {VKEY_J, "KeyJ"},
+ {VKEY_K, "KeyK"},
+ {VKEY_L, "KeyL"},
+ {VKEY_M, "KeyM"},
+ {VKEY_N, "KeyN"},
+ {VKEY_O, "KeyO"},
+ {VKEY_P, "KeyP"},
+ {VKEY_Q, "KeyQ"},
+ {VKEY_R, "KeyR"},
+ {VKEY_S, "KeyS"},
+ {VKEY_T, "KeyT"},
+ {VKEY_U, "KeyU"},
+ {VKEY_V, "KeyV"},
+ {VKEY_W, "KeyW"},
+ {VKEY_X, "KeyX"},
+ {VKEY_Y, "KeyY"},
+ {VKEY_Z, "KeyZ"},
+ {VKEY_LWIN, "OSLeft"},
+ {VKEY_RWIN, "OSRight"},
+ {VKEY_NUMPAD0, "Numpad0"},
+ {VKEY_NUMPAD1, "Numpad1"},
+ {VKEY_NUMPAD2, "Numpad2"},
+ {VKEY_NUMPAD3, "Numpad3"},
+ {VKEY_NUMPAD4, "Numpad4"},
+ {VKEY_NUMPAD5, "Numpad5"},
+ {VKEY_NUMPAD6, "Numpad6"},
+ {VKEY_NUMPAD7, "Numpad7"},
+ {VKEY_NUMPAD8, "Numpad8"},
+ {VKEY_NUMPAD9, "Numpad9"},
+ {VKEY_MULTIPLY, "NumpadMultiply"},
+ {VKEY_ADD, "NumpadAdd"},
+ {VKEY_SUBTRACT, "NumpadSubtract"},
+ {VKEY_DECIMAL, "NumpadDecimal"},
+ {VKEY_DIVIDE, "NumpadDivide"},
+ {VKEY_F1, "F1"},
+ {VKEY_F2, "F2"},
+ {VKEY_F3, "F3"},
+ {VKEY_F4, "F4"},
+ {VKEY_F5, "F5"},
+ {VKEY_F6, "F6"},
+ {VKEY_F7, "F7"},
+ {VKEY_F8, "F8"},
+ {VKEY_F9, "F9"},
+ {VKEY_F10, "F10"},
+ {VKEY_F11, "F11"},
+ {VKEY_F12, "F12"},
+ {VKEY_F13, "F13"},
+ {VKEY_F14, "F14"},
+ {VKEY_F15, "F15"},
+ {VKEY_F16, "F16"},
+ {VKEY_F17, "F17"},
+ {VKEY_F18, "F18"},
+ {VKEY_F19, "F19"},
+ {VKEY_F20, "F20"},
+ {VKEY_F21, "F21"},
+ {VKEY_F22, "F22"},
+ {VKEY_F23, "F23"},
+ {VKEY_F24, "F24"},
+ {VKEY_NUMLOCK, "NumLock"},
+ {VKEY_SCROLL, "ScrollLock"},
+ {VKEY_LSHIFT, "ShiftLeft"},
+ {VKEY_RSHIFT, "ShiftRight"},
+ {VKEY_LCONTROL, "CtrlLeft"},
+ {VKEY_RCONTROL, "CtrlRight"},
+ {VKEY_BROWSER_BACK, "BrowserBack"},
+ {VKEY_BROWSER_FORWARD, "BrowserForward"},
+ {VKEY_BROWSER_REFRESH, "BrowserRefresh"},
+ {VKEY_BROWSER_STOP, "BrowserStop"},
+ {VKEY_BROWSER_SEARCH, "BrowserSearch"},
+ {VKEY_BROWSER_HOME, "BrowserHome"},
+ {VKEY_VOLUME_MUTE, "VolumeMute"},
+ {VKEY_VOLUME_DOWN, "VolumeDown"},
+ {VKEY_VOLUME_UP, "VolumeUp"},
+ {VKEY_MEDIA_NEXT_TRACK, "MediaTrackNext"},
+ {VKEY_MEDIA_PREV_TRACK, "MediaTrackPrevious"},
+ {VKEY_MEDIA_STOP, "MediaStop"},
+ {VKEY_MEDIA_PLAY_PAUSE, "MediaPlayPause"},
+ {VKEY_MEDIA_LAUNCH_MAIL, "LaunchMail"},
+ {VKEY_OEM_1, "Semicolon"},
+ {VKEY_OEM_PLUS, "Equal"},
+ {VKEY_OEM_COMMA, "Comma"},
+ {VKEY_OEM_MINUS, "Minus"},
+ {VKEY_OEM_PERIOD, "Period"},
+ {VKEY_OEM_2, "Slash"},
+ {VKEY_OEM_3, "Backquote"},
+ {VKEY_OEM_4, "BracketLeft"},
+ {VKEY_OEM_5, "Backslash"},
+ {VKEY_OEM_6, "BracketRight"},
+ {VKEY_OEM_7, "Quote"}};
+
+} // namespace
+
+KeyboardCode FromCodeToKeyboardCode(const std::string& code) {
+ static std::map<std::string, KeyboardCode> map;
+ if (map.empty()) {
+ for (size_t i = 0; i < arraysize(kKeyCodeMap); ++i)
+ map[kKeyCodeMap[i].code] = kKeyCodeMap[i].keyboard_code;
}
+ std::map<std::string, KeyboardCode>::const_iterator it = map.find(code);
+ return (it == map.end()) ? VKEY_UNKNOWN : it->second;
}
} // namespace ui

Powered by Google App Engine
This is Rietveld 408576698