Chromium Code Reviews| Index: ui/events/ozone/layout/xkb/xkb_keyboard_code_conversion.cc |
| diff --git a/ui/events/ozone/layout/xkb/xkb_keyboard_code_conversion.cc b/ui/events/ozone/layout/xkb/xkb_keyboard_code_conversion.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..431a4c2d00b73443e88205e532b8dce79702a6cb |
| --- /dev/null |
| +++ b/ui/events/ozone/layout/xkb/xkb_keyboard_code_conversion.cc |
| @@ -0,0 +1,452 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "ui/events/ozone/layout/xkb/xkb_keyboard_code_conversion.h" |
| + |
| +#include "ui/events/keycodes/dom3/dom_key.h" |
| +#include "ui/events/ozone/layout/xkb/xkb_keysym.h" |
| + |
| +namespace ui { |
| + |
| +namespace { |
| + |
| +} // anonymous namespace |
|
spang
2014/12/08 22:47:28
remove this
kpschoedel
2014/12/08 23:15:26
Oops, USE_X11 was in there.
|
| + |
| +DomKey XkbKeySymToDomKey(XkbKeySym keysym) { |
| + switch (keysym) { |
| + case XK_BackSpace: |
| + return DomKey::BACKSPACE; |
| + case XK_Tab: |
| + case XK_KP_Tab: |
| + case XK_ISO_Left_Tab: |
| + return DomKey::TAB; |
| + case XK_Clear: |
| + case XK_KP_Begin: |
| + case XF86XK_Clear: |
| + return DomKey::CLEAR; |
| + case XK_Return: |
| + case XK_KP_Enter: |
| + return DomKey::ENTER; |
| + case XK_Linefeed: |
| + return DomKey::ENTER; |
| + case XK_Pause: |
| + return DomKey::PAUSE; |
| + case XK_Scroll_Lock: |
| + return DomKey::SCROLL_LOCK; |
| + case XK_Escape: |
| + return DomKey::ESCAPE; |
| + case XK_Multi_key: |
| + return DomKey::COMPOSE; |
| + case XK_Kanji: |
| + return DomKey::KANJI_MODE; |
| + case XK_Muhenkan: |
| + return DomKey::NON_CONVERT; |
| + case XK_Henkan_Mode: |
| + return DomKey::CONVERT; |
| + case XK_Romaji: |
| + return DomKey::ROMAJI; |
| + case XK_Hiragana: |
| + return DomKey::HIRAGANA; |
| + case XK_Katakana: |
| + return DomKey::KATAKANA; |
| + case XK_Hiragana_Katakana: |
| + return DomKey::HIRAGANA_KATAKANA; |
| + case XK_Zenkaku: |
| + return DomKey::ZENKAKU; |
| + case XK_Hankaku: |
| + return DomKey::HANKAKU; |
| + case XK_Zenkaku_Hankaku: |
| + return DomKey::ZENKAKU_HANKAKU; |
| + case XK_Kana_Lock: |
| + return DomKey::KANA_MODE; |
| + case XK_Eisu_Shift: |
| + case XK_Eisu_toggle: |
| + return DomKey::EISU; |
| + case XK_Hangul: |
| + return DomKey::HANGUL_MODE; |
| + case XK_Hangul_Hanja: |
| + return DomKey::HANJA_MODE; |
| + case XK_Codeinput: |
| + return DomKey::CODE_INPUT; |
| + case XK_SingleCandidate: |
| + return DomKey::SINGLE_CANDIDATE; |
| + case XK_MultipleCandidate: |
| + return DomKey::ALL_CANDIDATES; |
| + case XK_PreviousCandidate: |
| + return DomKey::PREVIOUS_CANDIDATE; |
| + case XK_Home: |
| + case XK_KP_Home: |
| + return DomKey::HOME; |
| + case XK_Left: |
| + case XK_KP_Left: |
| + return DomKey::ARROW_LEFT; |
| + case XK_Up: |
| + case XK_KP_Up: |
| + return DomKey::ARROW_UP; |
| + case XK_Right: |
| + case XK_KP_Right: |
| + return DomKey::ARROW_RIGHT; |
| + case XK_Down: |
| + case XK_KP_Down: |
| + return DomKey::ARROW_DOWN; |
| + case XK_Prior: |
| + case XK_KP_Prior: |
| + return DomKey::PAGE_UP; |
| + case XK_Next: |
| + case XK_KP_Next: |
| + case XF86XK_ScrollDown: |
| + return DomKey::PAGE_DOWN; |
| + case XK_End: |
| + case XK_KP_End: |
| + case XF86XK_ScrollUp: |
| + return DomKey::END; |
| + case XK_Select: |
| + return DomKey::SELECT; |
| + case XK_Print: |
| + return DomKey::PRINT; |
| + case XK_Execute: |
| + return DomKey::EXECUTE; |
| + case XK_Insert: |
| + case XK_KP_Insert: |
| + return DomKey::INSERT; |
| + case XK_Undo: |
| + return DomKey::UNDO; |
| + case XK_Redo: |
| + return DomKey::REDO; |
| + case XK_Menu: |
| + return DomKey::CONTEXT_MENU; |
| + case XK_Find: |
| + return DomKey::FIND; |
| + case XK_Cancel: |
| + return DomKey::CANCEL; |
| + case XK_Help: |
| + return DomKey::HELP; |
| + case XK_Break: |
| + case XK_3270_Attn: |
| + return DomKey::ATTN; |
| + case XK_Mode_switch: |
| + return DomKey::MODE_CHANGE; |
| + case XK_Num_Lock: |
| + return DomKey::NUM_LOCK; |
| + case XK_F1: |
| + case XK_KP_F1: |
| + return DomKey::F1; |
| + case XK_F2: |
| + case XK_KP_F2: |
| + return DomKey::F2; |
| + case XK_F3: |
| + case XK_KP_F3: |
| + return DomKey::F3; |
| + case XK_F4: |
| + case XK_KP_F4: |
| + return DomKey::F4; |
| + case XK_F5: |
| + return DomKey::F5; |
| + case XK_F6: |
| + return DomKey::F6; |
| + case XK_F7: |
| + return DomKey::F7; |
| + case XK_F8: |
| + return DomKey::F8; |
| + case XK_F9: |
| + return DomKey::F9; |
| + case XK_F10: |
| + return DomKey::F10; |
| + case XK_F11: |
| + return DomKey::F11; |
| + case XK_F12: |
| + return DomKey::F12; |
| + case XK_F13: |
| + return DomKey::F13; |
| + case XK_F14: |
| + return DomKey::F14; |
| + case XK_F15: |
| + return DomKey::F15; |
| + case XK_F16: |
| + return DomKey::F16; |
| + case XK_F17: |
| + return DomKey::F17; |
| + case XK_F18: |
| + return DomKey::F18; |
| + case XK_F19: |
| + return DomKey::F19; |
| + case XK_F20: |
| + return DomKey::F20; |
| + case XK_F21: |
| + return DomKey::F21; |
| + case XK_F22: |
| + return DomKey::F22; |
| + case XK_F23: |
| + return DomKey::F23; |
| + case XK_F24: |
| + return DomKey::F24; |
| + case XK_Shift_L: |
| + case XK_Shift_R: |
| + return DomKey::SHIFT; |
| + case XK_Control_L: |
| + case XK_Control_R: |
| + return DomKey::CONTROL; |
| + case XK_Caps_Lock: |
| + return DomKey::CAPS_LOCK; |
| + case XK_Meta_L: |
| + case XK_Meta_R: |
| + return DomKey::META; |
| + case XK_Alt_L: |
| + case XK_Alt_R: |
| + return DomKey::ALT; |
| + case XK_Super_L: |
| + case XK_Super_R: |
| + return DomKey::OS; |
| + case XK_Hyper_L: |
| + case XK_Hyper_R: |
| + return DomKey::HYPER; |
| + case XK_Delete: |
| + return DomKey::DEL; |
| + case SunXK_Props: |
| + return DomKey::PROPS; |
| + case XF86XK_Next_VMode: |
| + return DomKey::VIDEO_MODE_NEXT; |
| + case XF86XK_MonBrightnessUp: |
| + return DomKey::BRIGHTNESS_UP; |
| + case XF86XK_MonBrightnessDown: |
| + return DomKey::BRIGHTNESS_DOWN; |
| + case XF86XK_Standby: |
| + case XF86XK_Sleep: |
| + case XF86XK_Suspend: |
| + return DomKey::STANDBY; |
| + case XF86XK_AudioLowerVolume: |
| + return DomKey::VOLUME_DOWN; |
| + case XF86XK_AudioMute: |
| + return DomKey::VOLUME_MUTE; |
| + case XF86XK_AudioRaiseVolume: |
| + return DomKey::VOLUME_UP; |
| + case XF86XK_AudioPlay: |
| + return DomKey::MEDIA_PLAY; |
| + case XF86XK_AudioStop: |
| + return DomKey::MEDIA_STOP; |
| + case XF86XK_AudioPrev: |
| + return DomKey::MEDIA_TRACK_PREVIOUS; |
| + case XF86XK_AudioNext: |
| + return DomKey::MEDIA_TRACK_NEXT; |
| + case XF86XK_HomePage: |
| + return DomKey::BROWSER_HOME; |
| + case XF86XK_Mail: |
| + return DomKey::LAUNCH_MAIL; |
| + case XF86XK_Search: |
| + return DomKey::BROWSER_SEARCH; |
| + case XF86XK_AudioRecord: |
| + return DomKey::MEDIA_RECORD; |
| + case XF86XK_Calculator: |
| + return DomKey::LAUNCH_CALCULATOR; |
| + case XF86XK_Calendar: |
| + return DomKey::LAUNCH_CALENDAR; |
| + case XF86XK_Back: |
| + return DomKey::BROWSER_BACK; |
| + case XF86XK_Forward: |
| + return DomKey::BROWSER_FORWARD; |
| + case XF86XK_Stop: |
| + return DomKey::BROWSER_STOP; |
| + case XF86XK_Refresh: |
| + case XF86XK_Reload: |
| + return DomKey::BROWSER_REFRESH; |
| + case XF86XK_PowerOff: |
| + return DomKey::POWER_OFF; |
| + case XF86XK_WakeUp: |
| + return DomKey::WAKE_UP; |
| + case XF86XK_Eject: |
| + return DomKey::EJECT; |
| + case XF86XK_ScreenSaver: |
| + return DomKey::LAUNCH_SCREEN_SAVER; |
| + case XF86XK_WWW: |
| + return DomKey::LAUNCH_WEB_BROWSER; |
| + case XF86XK_Favorites: |
| + return DomKey::BROWSER_FAVORITES; |
| + case XF86XK_AudioPause: |
| + return DomKey::MEDIA_PAUSE; |
| + case XF86XK_AudioMedia: |
| + case XF86XK_Music: |
| + return DomKey::LAUNCH_MUSIC_PLAYER; |
| + case XF86XK_MyComputer: |
| + case XF86XK_Explorer: |
| + return DomKey::LAUNCH_MY_COMPUTER; |
| + case XF86XK_AudioRewind: |
| + return DomKey::MEDIA_REWIND; |
| + case XF86XK_CD: |
| + case XF86XK_Video: |
| + return DomKey::LAUNCH_MEDIA_PLAYER; |
| + case XF86XK_Close: |
| + return DomKey::CLOSE; |
| + case XF86XK_Copy: |
| + case SunXK_Copy: |
| + return DomKey::COPY; |
| + case XF86XK_Cut: |
| + case SunXK_Cut: |
| + return DomKey::CUT; |
| + case XF86XK_Display: |
| + return DomKey::DISPLAY_SWAP; |
| + case XF86XK_Excel: |
| + return DomKey::LAUNCH_SPREADSHEET; |
| + case XF86XK_LogOff: |
| + return DomKey::LOG_OFF; |
| + case XF86XK_New: |
| + return DomKey::NEW; |
| + case XF86XK_Open: |
| + case SunXK_Open: |
| + return DomKey::OPEN; |
| + case XF86XK_Paste: |
| + case SunXK_Paste: |
| + return DomKey::PASTE; |
| + case XF86XK_Reply: |
| + return DomKey::MAIL_REPLY; |
| + case XF86XK_Save: |
| + return DomKey::SAVE; |
| + case XF86XK_Send: |
| + return DomKey::MAIL_SEND; |
| + case XF86XK_Spell: |
| + return DomKey::SPELL_CHECK; |
| + case XF86XK_SplitScreen: |
| + return DomKey::SPLIT_SCREEN_TOGGLE; |
| + case XF86XK_Word: |
| + case XF86XK_OfficeHome: |
| + return DomKey::LAUNCH_WORD_PROCESSOR; |
| + case XF86XK_ZoomIn: |
| + return DomKey::ZOOM_IN; |
| + case XF86XK_ZoomOut: |
| + return DomKey::ZOOM_OUT; |
| + case XF86XK_WebCam: |
| + return DomKey::LAUNCH_WEB_CAM; |
| + case XF86XK_MailForward: |
| + return DomKey::MAIL_FORWARD; |
| + case XF86XK_AudioForward: |
| + return DomKey::MEDIA_FAST_FORWARD; |
| + case XF86XK_AudioRandomPlay: |
| + return DomKey::RANDOM_TOGGLE; |
| + case XF86XK_Subtitle: |
| + return DomKey::SUBTITLE; |
| + case XF86XK_Hibernate: |
| + return DomKey::HIBERNATE; |
| + case XK_3270_EraseEOF: |
| + return DomKey::ERASE_EOF; |
| + case XK_3270_Play: |
| + return DomKey::PLAY; |
| + case XK_3270_ExSelect: |
| + return DomKey::EX_SEL; |
| + case XK_3270_CursorSelect: |
| + return DomKey::CR_SEL; |
| + case XK_3270_PrintScreen: |
| + return DomKey::PRINT_SCREEN; |
| + case XK_ISO_Level3_Shift: |
| + return DomKey::ALT_GRAPH; |
| + case XK_ISO_Next_Group: |
| + return DomKey::GROUP_NEXT; |
| + case XK_ISO_Prev_Group: |
| + return DomKey::GROUP_PREVIOUS; |
| + case XK_ISO_First_Group: |
| + return DomKey::GROUP_FIRST; |
| + case XK_ISO_Last_Group: |
| + return DomKey::GROUP_LAST; |
| + case XK_dead_grave: |
| + case XK_dead_acute: |
| + case XK_dead_circumflex: |
| + case XK_dead_tilde: |
| + case XK_dead_macron: |
| + case XK_dead_breve: |
| + case XK_dead_abovedot: |
| + case XK_dead_diaeresis: |
| + case XK_dead_abovering: |
| + case XK_dead_doubleacute: |
| + case XK_dead_caron: |
| + case XK_dead_cedilla: |
| + case XK_dead_ogonek: |
| + case XK_dead_iota: |
| + case XK_dead_belowdot: |
| + case XK_dead_hook: |
| + case XK_dead_horn: |
| + case XK_dead_stroke: |
| + case XK_dead_abovecomma: |
| + case XK_dead_abovereversedcomma: |
| + case XK_dead_doublegrave: |
| + case XK_dead_belowring: |
| + case XK_dead_belowmacron: |
| + case XK_dead_belowcircumflex: |
| + case XK_dead_belowtilde: |
| + case XK_dead_belowbreve: |
| + case XK_dead_belowdiaeresis: |
| + case XK_dead_invertedbreve: |
| + case XK_dead_belowcomma: |
| + case XK_dead_currency: |
| + return DomKey::DEAD; |
| + default: |
| + return DomKey::NONE; |
| + } |
| +} |
| + |
| +base::char16 XkbKeySymDeadKey(XkbKeySym keysym) { |
| + switch (keysym) { |
| + case XK_dead_grave: |
| + return 0x0768; // combining grave accent |
| + case XK_dead_acute: |
| + return 0x0769; // combining acute accent |
| + case XK_dead_circumflex: |
| + return 0x0770; // combining circumflex accent |
| + case XK_dead_tilde: |
| + return 0x0771; // combining tilde |
| + case XK_dead_macron: |
| + return 0x0772; // combining macron |
| + case XK_dead_breve: |
| + return 0x0774; // combining breve |
| + case XK_dead_abovedot: |
| + return 0x0775; // combining dot above |
| + case XK_dead_diaeresis: |
| + return 0x0776; // combining diaeresis |
| + case XK_dead_abovering: |
| + return 0x0778; // combining ring above |
| + case XK_dead_doubleacute: |
| + return 0x0779; // combining double acute accent |
| + case XK_dead_caron: |
| + return 0x0780; // combining caron |
| + case XK_dead_cedilla: |
| + return 0x0807; // combining cedilla |
| + case XK_dead_ogonek: |
| + return 0x0808; // combining ogonek |
| + case XK_dead_iota: |
| + return 0x0837; // combining greek ypogegrammeni |
| + case XK_dead_belowdot: |
| + return 0x0803; // combining dot below |
| + case XK_dead_hook: |
| + return 0x0777; // combining hook above |
| + case XK_dead_horn: |
| + return 0x0795; // combining horn |
| + case XK_dead_stroke: |
| + return 0x0824; // combining long solidus overlay |
| + case XK_dead_abovecomma: |
| + return 0x0787; // combining comma above |
| + case XK_dead_abovereversedcomma: |
| + return 0x0788; // combining reversed comma above |
| + case XK_dead_doublegrave: |
| + return 0x0783; // combining double grave accent |
| + case XK_dead_belowring: |
| + return 0x0805; // combining ring below |
| + case XK_dead_belowmacron: |
| + return 0x0817; // combining macron below |
| + case XK_dead_belowcircumflex: |
| + return 0x0813; // combining circumflex accent below |
| + case XK_dead_belowtilde: |
| + return 0x0816; // combining tilde below |
| + case XK_dead_belowbreve: |
| + return 0x0814; // combining breve below |
| + case XK_dead_belowdiaeresis: |
| + return 0x0804; // combining diaeresis below |
| + case XK_dead_invertedbreve: |
| + return 0x0785; // combining inverted breve |
| + case XK_dead_belowcomma: |
| + return 0x0806; // combining comma below |
| + case XK_dead_currency: |
| + return 0x0164; // currency sign |
| + default: |
| + return 0; |
| + } |
| +} |
| + |
| +} // namespace ui |