| 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..0f6a6e86e9e0bcd4ed60b6e05998fddb49ee5caf
|
| --- /dev/null
|
| +++ b/ui/events/ozone/layout/xkb/xkb_keyboard_code_conversion.cc
|
| @@ -0,0 +1,447 @@
|
| +// 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"
|
| +
|
| +namespace ui {
|
| +
|
| +DomKey XkbKeySymToDomKey(xkb_keysym_t keysym) {
|
| + switch (keysym) {
|
| + case XKB_KEY_BackSpace:
|
| + return DomKey::BACKSPACE;
|
| + case XKB_KEY_Tab:
|
| + case XKB_KEY_KP_Tab:
|
| + case XKB_KEY_ISO_Left_Tab:
|
| + return DomKey::TAB;
|
| + case XKB_KEY_Clear:
|
| + case XKB_KEY_KP_Begin:
|
| + case XKB_KEY_XF86Clear:
|
| + return DomKey::CLEAR;
|
| + case XKB_KEY_Return:
|
| + case XKB_KEY_KP_Enter:
|
| + return DomKey::ENTER;
|
| + case XKB_KEY_Linefeed:
|
| + return DomKey::ENTER;
|
| + case XKB_KEY_Pause:
|
| + return DomKey::PAUSE;
|
| + case XKB_KEY_Scroll_Lock:
|
| + return DomKey::SCROLL_LOCK;
|
| + case XKB_KEY_Escape:
|
| + return DomKey::ESCAPE;
|
| + case XKB_KEY_Multi_key:
|
| + return DomKey::COMPOSE;
|
| + case XKB_KEY_Kanji:
|
| + return DomKey::KANJI_MODE;
|
| + case XKB_KEY_Muhenkan:
|
| + return DomKey::NON_CONVERT;
|
| + case XKB_KEY_Henkan_Mode:
|
| + return DomKey::CONVERT;
|
| + case XKB_KEY_Romaji:
|
| + return DomKey::ROMAJI;
|
| + case XKB_KEY_Hiragana:
|
| + return DomKey::HIRAGANA;
|
| + case XKB_KEY_Katakana:
|
| + return DomKey::KATAKANA;
|
| + case XKB_KEY_Hiragana_Katakana:
|
| + return DomKey::HIRAGANA_KATAKANA;
|
| + case XKB_KEY_Zenkaku:
|
| + return DomKey::ZENKAKU;
|
| + case XKB_KEY_Hankaku:
|
| + return DomKey::HANKAKU;
|
| + case XKB_KEY_Zenkaku_Hankaku:
|
| + return DomKey::ZENKAKU_HANKAKU;
|
| + case XKB_KEY_Kana_Lock:
|
| + return DomKey::KANA_MODE;
|
| + case XKB_KEY_Eisu_Shift:
|
| + case XKB_KEY_Eisu_toggle:
|
| + return DomKey::EISU;
|
| + case XKB_KEY_Hangul:
|
| + return DomKey::HANGUL_MODE;
|
| + case XKB_KEY_Hangul_Hanja:
|
| + return DomKey::HANJA_MODE;
|
| + case XKB_KEY_Codeinput:
|
| + return DomKey::CODE_INPUT;
|
| + case XKB_KEY_SingleCandidate:
|
| + return DomKey::SINGLE_CANDIDATE;
|
| + case XKB_KEY_MultipleCandidate:
|
| + return DomKey::ALL_CANDIDATES;
|
| + case XKB_KEY_PreviousCandidate:
|
| + return DomKey::PREVIOUS_CANDIDATE;
|
| + case XKB_KEY_Home:
|
| + case XKB_KEY_KP_Home:
|
| + return DomKey::HOME;
|
| + case XKB_KEY_Left:
|
| + case XKB_KEY_KP_Left:
|
| + return DomKey::ARROW_LEFT;
|
| + case XKB_KEY_Up:
|
| + case XKB_KEY_KP_Up:
|
| + return DomKey::ARROW_UP;
|
| + case XKB_KEY_Right:
|
| + case XKB_KEY_KP_Right:
|
| + return DomKey::ARROW_RIGHT;
|
| + case XKB_KEY_Down:
|
| + case XKB_KEY_KP_Down:
|
| + return DomKey::ARROW_DOWN;
|
| + case XKB_KEY_Prior:
|
| + case XKB_KEY_KP_Prior:
|
| + return DomKey::PAGE_UP;
|
| + case XKB_KEY_Next:
|
| + case XKB_KEY_KP_Next:
|
| + case XKB_KEY_XF86ScrollDown:
|
| + return DomKey::PAGE_DOWN;
|
| + case XKB_KEY_End:
|
| + case XKB_KEY_KP_End:
|
| + case XKB_KEY_XF86ScrollUp:
|
| + return DomKey::END;
|
| + case XKB_KEY_Select:
|
| + return DomKey::SELECT;
|
| + case XKB_KEY_Print:
|
| + return DomKey::PRINT;
|
| + case XKB_KEY_Execute:
|
| + return DomKey::EXECUTE;
|
| + case XKB_KEY_Insert:
|
| + case XKB_KEY_KP_Insert:
|
| + return DomKey::INSERT;
|
| + case XKB_KEY_Undo:
|
| + return DomKey::UNDO;
|
| + case XKB_KEY_Redo:
|
| + return DomKey::REDO;
|
| + case XKB_KEY_Menu:
|
| + return DomKey::CONTEXT_MENU;
|
| + case XKB_KEY_Find:
|
| + return DomKey::FIND;
|
| + case XKB_KEY_Cancel:
|
| + return DomKey::CANCEL;
|
| + case XKB_KEY_Help:
|
| + return DomKey::HELP;
|
| + case XKB_KEY_Break:
|
| + case XKB_KEY_3270_Attn:
|
| + return DomKey::ATTN;
|
| + case XKB_KEY_Mode_switch:
|
| + return DomKey::MODE_CHANGE;
|
| + case XKB_KEY_Num_Lock:
|
| + return DomKey::NUM_LOCK;
|
| + case XKB_KEY_F1:
|
| + case XKB_KEY_KP_F1:
|
| + return DomKey::F1;
|
| + case XKB_KEY_F2:
|
| + case XKB_KEY_KP_F2:
|
| + return DomKey::F2;
|
| + case XKB_KEY_F3:
|
| + case XKB_KEY_KP_F3:
|
| + return DomKey::F3;
|
| + case XKB_KEY_F4:
|
| + case XKB_KEY_KP_F4:
|
| + return DomKey::F4;
|
| + case XKB_KEY_F5:
|
| + return DomKey::F5;
|
| + case XKB_KEY_F6:
|
| + return DomKey::F6;
|
| + case XKB_KEY_F7:
|
| + return DomKey::F7;
|
| + case XKB_KEY_F8:
|
| + return DomKey::F8;
|
| + case XKB_KEY_F9:
|
| + return DomKey::F9;
|
| + case XKB_KEY_F10:
|
| + return DomKey::F10;
|
| + case XKB_KEY_F11:
|
| + return DomKey::F11;
|
| + case XKB_KEY_F12:
|
| + return DomKey::F12;
|
| + case XKB_KEY_F13:
|
| + return DomKey::F13;
|
| + case XKB_KEY_F14:
|
| + return DomKey::F14;
|
| + case XKB_KEY_F15:
|
| + return DomKey::F15;
|
| + case XKB_KEY_F16:
|
| + return DomKey::F16;
|
| + case XKB_KEY_F17:
|
| + return DomKey::F17;
|
| + case XKB_KEY_F18:
|
| + return DomKey::F18;
|
| + case XKB_KEY_F19:
|
| + return DomKey::F19;
|
| + case XKB_KEY_F20:
|
| + return DomKey::F20;
|
| + case XKB_KEY_F21:
|
| + return DomKey::F21;
|
| + case XKB_KEY_F22:
|
| + return DomKey::F22;
|
| + case XKB_KEY_F23:
|
| + return DomKey::F23;
|
| + case XKB_KEY_F24:
|
| + return DomKey::F24;
|
| + case XKB_KEY_Shift_L:
|
| + case XKB_KEY_Shift_R:
|
| + return DomKey::SHIFT;
|
| + case XKB_KEY_Control_L:
|
| + case XKB_KEY_Control_R:
|
| + return DomKey::CONTROL;
|
| + case XKB_KEY_Caps_Lock:
|
| + return DomKey::CAPS_LOCK;
|
| + case XKB_KEY_Meta_L:
|
| + case XKB_KEY_Meta_R:
|
| + return DomKey::META;
|
| + case XKB_KEY_Alt_L:
|
| + case XKB_KEY_Alt_R:
|
| + return DomKey::ALT;
|
| + case XKB_KEY_Super_L:
|
| + case XKB_KEY_Super_R:
|
| + return DomKey::OS;
|
| + case XKB_KEY_Hyper_L:
|
| + case XKB_KEY_Hyper_R:
|
| + return DomKey::HYPER;
|
| + case XKB_KEY_Delete:
|
| + return DomKey::DEL;
|
| + case XKB_KEY_SunProps:
|
| + return DomKey::PROPS;
|
| + case XKB_KEY_XF86Next_VMode:
|
| + return DomKey::VIDEO_MODE_NEXT;
|
| + case XKB_KEY_XF86MonBrightnessUp:
|
| + return DomKey::BRIGHTNESS_UP;
|
| + case XKB_KEY_XF86MonBrightnessDown:
|
| + return DomKey::BRIGHTNESS_DOWN;
|
| + case XKB_KEY_XF86Standby:
|
| + case XKB_KEY_XF86Sleep:
|
| + case XKB_KEY_XF86Suspend:
|
| + return DomKey::STANDBY;
|
| + case XKB_KEY_XF86AudioLowerVolume:
|
| + return DomKey::VOLUME_DOWN;
|
| + case XKB_KEY_XF86AudioMute:
|
| + return DomKey::VOLUME_MUTE;
|
| + case XKB_KEY_XF86AudioRaiseVolume:
|
| + return DomKey::VOLUME_UP;
|
| + case XKB_KEY_XF86AudioPlay:
|
| + return DomKey::MEDIA_PLAY;
|
| + case XKB_KEY_XF86AudioStop:
|
| + return DomKey::MEDIA_STOP;
|
| + case XKB_KEY_XF86AudioPrev:
|
| + return DomKey::MEDIA_TRACK_PREVIOUS;
|
| + case XKB_KEY_XF86AudioNext:
|
| + return DomKey::MEDIA_TRACK_NEXT;
|
| + case XKB_KEY_XF86HomePage:
|
| + return DomKey::BROWSER_HOME;
|
| + case XKB_KEY_XF86Mail:
|
| + return DomKey::LAUNCH_MAIL;
|
| + case XKB_KEY_XF86Search:
|
| + return DomKey::BROWSER_SEARCH;
|
| + case XKB_KEY_XF86AudioRecord:
|
| + return DomKey::MEDIA_RECORD;
|
| + case XKB_KEY_XF86Calculator:
|
| + return DomKey::LAUNCH_CALCULATOR;
|
| + case XKB_KEY_XF86Calendar:
|
| + return DomKey::LAUNCH_CALENDAR;
|
| + case XKB_KEY_XF86Back:
|
| + return DomKey::BROWSER_BACK;
|
| + case XKB_KEY_XF86Forward:
|
| + return DomKey::BROWSER_FORWARD;
|
| + case XKB_KEY_XF86Stop:
|
| + return DomKey::BROWSER_STOP;
|
| + case XKB_KEY_XF86Refresh:
|
| + case XKB_KEY_XF86Reload:
|
| + return DomKey::BROWSER_REFRESH;
|
| + case XKB_KEY_XF86PowerOff:
|
| + return DomKey::POWER_OFF;
|
| + case XKB_KEY_XF86WakeUp:
|
| + return DomKey::WAKE_UP;
|
| + case XKB_KEY_XF86Eject:
|
| + return DomKey::EJECT;
|
| + case XKB_KEY_XF86ScreenSaver:
|
| + return DomKey::LAUNCH_SCREEN_SAVER;
|
| + case XKB_KEY_XF86WWW:
|
| + return DomKey::LAUNCH_WEB_BROWSER;
|
| + case XKB_KEY_XF86Favorites:
|
| + return DomKey::BROWSER_FAVORITES;
|
| + case XKB_KEY_XF86AudioPause:
|
| + return DomKey::MEDIA_PAUSE;
|
| + case XKB_KEY_XF86AudioMedia:
|
| + case XKB_KEY_XF86Music:
|
| + return DomKey::LAUNCH_MUSIC_PLAYER;
|
| + case XKB_KEY_XF86MyComputer:
|
| + case XKB_KEY_XF86Explorer:
|
| + return DomKey::LAUNCH_MY_COMPUTER;
|
| + case XKB_KEY_XF86AudioRewind:
|
| + return DomKey::MEDIA_REWIND;
|
| + case XKB_KEY_XF86CD:
|
| + case XKB_KEY_XF86Video:
|
| + return DomKey::LAUNCH_MEDIA_PLAYER;
|
| + case XKB_KEY_XF86Close:
|
| + return DomKey::CLOSE;
|
| + case XKB_KEY_XF86Copy:
|
| + case XKB_KEY_SunCopy:
|
| + return DomKey::COPY;
|
| + case XKB_KEY_XF86Cut:
|
| + case XKB_KEY_SunCut:
|
| + return DomKey::CUT;
|
| + case XKB_KEY_XF86Display:
|
| + return DomKey::DISPLAY_SWAP;
|
| + case XKB_KEY_XF86Excel:
|
| + return DomKey::LAUNCH_SPREADSHEET;
|
| + case XKB_KEY_XF86LogOff:
|
| + return DomKey::LOG_OFF;
|
| + case XKB_KEY_XF86New:
|
| + return DomKey::NEW;
|
| + case XKB_KEY_XF86Open:
|
| + case XKB_KEY_SunOpen:
|
| + return DomKey::OPEN;
|
| + case XKB_KEY_XF86Paste:
|
| + case XKB_KEY_SunPaste:
|
| + return DomKey::PASTE;
|
| + case XKB_KEY_XF86Reply:
|
| + return DomKey::MAIL_REPLY;
|
| + case XKB_KEY_XF86Save:
|
| + return DomKey::SAVE;
|
| + case XKB_KEY_XF86Send:
|
| + return DomKey::MAIL_SEND;
|
| + case XKB_KEY_XF86Spell:
|
| + return DomKey::SPELL_CHECK;
|
| + case XKB_KEY_XF86SplitScreen:
|
| + return DomKey::SPLIT_SCREEN_TOGGLE;
|
| + case XKB_KEY_XF86Word:
|
| + case XKB_KEY_XF86OfficeHome:
|
| + return DomKey::LAUNCH_WORD_PROCESSOR;
|
| + case XKB_KEY_XF86ZoomIn:
|
| + return DomKey::ZOOM_IN;
|
| + case XKB_KEY_XF86ZoomOut:
|
| + return DomKey::ZOOM_OUT;
|
| + case XKB_KEY_XF86WebCam:
|
| + return DomKey::LAUNCH_WEB_CAM;
|
| + case XKB_KEY_XF86MailForward:
|
| + return DomKey::MAIL_FORWARD;
|
| + case XKB_KEY_XF86AudioForward:
|
| + return DomKey::MEDIA_FAST_FORWARD;
|
| + case XKB_KEY_XF86AudioRandomPlay:
|
| + return DomKey::RANDOM_TOGGLE;
|
| + case XKB_KEY_XF86Subtitle:
|
| + return DomKey::SUBTITLE;
|
| + case XKB_KEY_XF86Hibernate:
|
| + return DomKey::HIBERNATE;
|
| + case XKB_KEY_3270_EraseEOF:
|
| + return DomKey::ERASE_EOF;
|
| + case XKB_KEY_3270_Play:
|
| + return DomKey::PLAY;
|
| + case XKB_KEY_3270_ExSelect:
|
| + return DomKey::EX_SEL;
|
| + case XKB_KEY_3270_CursorSelect:
|
| + return DomKey::CR_SEL;
|
| + case XKB_KEY_3270_PrintScreen:
|
| + return DomKey::PRINT_SCREEN;
|
| + case XKB_KEY_ISO_Level3_Shift:
|
| + return DomKey::ALT_GRAPH;
|
| + case XKB_KEY_ISO_Next_Group:
|
| + return DomKey::GROUP_NEXT;
|
| + case XKB_KEY_ISO_Prev_Group:
|
| + return DomKey::GROUP_PREVIOUS;
|
| + case XKB_KEY_ISO_First_Group:
|
| + return DomKey::GROUP_FIRST;
|
| + case XKB_KEY_ISO_Last_Group:
|
| + return DomKey::GROUP_LAST;
|
| + case XKB_KEY_dead_grave:
|
| + case XKB_KEY_dead_acute:
|
| + case XKB_KEY_dead_circumflex:
|
| + case XKB_KEY_dead_tilde:
|
| + case XKB_KEY_dead_macron:
|
| + case XKB_KEY_dead_breve:
|
| + case XKB_KEY_dead_abovedot:
|
| + case XKB_KEY_dead_diaeresis:
|
| + case XKB_KEY_dead_abovering:
|
| + case XKB_KEY_dead_doubleacute:
|
| + case XKB_KEY_dead_caron:
|
| + case XKB_KEY_dead_cedilla:
|
| + case XKB_KEY_dead_ogonek:
|
| + case XKB_KEY_dead_iota:
|
| + case XKB_KEY_dead_belowdot:
|
| + case XKB_KEY_dead_hook:
|
| + case XKB_KEY_dead_horn:
|
| + case XKB_KEY_dead_stroke:
|
| + case XKB_KEY_dead_abovecomma:
|
| + case XKB_KEY_dead_abovereversedcomma:
|
| + case XKB_KEY_dead_doublegrave:
|
| + case XKB_KEY_dead_belowring:
|
| + case XKB_KEY_dead_belowmacron:
|
| + case XKB_KEY_dead_belowcircumflex:
|
| + case XKB_KEY_dead_belowtilde:
|
| + case XKB_KEY_dead_belowbreve:
|
| + case XKB_KEY_dead_belowdiaeresis:
|
| + case XKB_KEY_dead_invertedbreve:
|
| + case XKB_KEY_dead_belowcomma:
|
| + case XKB_KEY_dead_currency:
|
| + return DomKey::DEAD;
|
| + default:
|
| + return DomKey::NONE;
|
| + }
|
| +}
|
| +
|
| +base::char16 XkbKeySymDeadKey(xkb_keysym_t keysym) {
|
| + switch (keysym) {
|
| + case XKB_KEY_dead_grave:
|
| + return 0x0768; // combining grave accent
|
| + case XKB_KEY_dead_acute:
|
| + return 0x0769; // combining acute accent
|
| + case XKB_KEY_dead_circumflex:
|
| + return 0x0770; // combining circumflex accent
|
| + case XKB_KEY_dead_tilde:
|
| + return 0x0771; // combining tilde
|
| + case XKB_KEY_dead_macron:
|
| + return 0x0772; // combining macron
|
| + case XKB_KEY_dead_breve:
|
| + return 0x0774; // combining breve
|
| + case XKB_KEY_dead_abovedot:
|
| + return 0x0775; // combining dot above
|
| + case XKB_KEY_dead_diaeresis:
|
| + return 0x0776; // combining diaeresis
|
| + case XKB_KEY_dead_abovering:
|
| + return 0x0778; // combining ring above
|
| + case XKB_KEY_dead_doubleacute:
|
| + return 0x0779; // combining double acute accent
|
| + case XKB_KEY_dead_caron:
|
| + return 0x0780; // combining caron
|
| + case XKB_KEY_dead_cedilla:
|
| + return 0x0807; // combining cedilla
|
| + case XKB_KEY_dead_ogonek:
|
| + return 0x0808; // combining ogonek
|
| + case XKB_KEY_dead_iota:
|
| + return 0x0837; // combining greek ypogegrammeni
|
| + case XKB_KEY_dead_belowdot:
|
| + return 0x0803; // combining dot below
|
| + case XKB_KEY_dead_hook:
|
| + return 0x0777; // combining hook above
|
| + case XKB_KEY_dead_horn:
|
| + return 0x0795; // combining horn
|
| + case XKB_KEY_dead_stroke:
|
| + return 0x0824; // combining long solidus overlay
|
| + case XKB_KEY_dead_abovecomma:
|
| + return 0x0787; // combining comma above
|
| + case XKB_KEY_dead_abovereversedcomma:
|
| + return 0x0788; // combining reversed comma above
|
| + case XKB_KEY_dead_doublegrave:
|
| + return 0x0783; // combining double grave accent
|
| + case XKB_KEY_dead_belowring:
|
| + return 0x0805; // combining ring below
|
| + case XKB_KEY_dead_belowmacron:
|
| + return 0x0817; // combining macron below
|
| + case XKB_KEY_dead_belowcircumflex:
|
| + return 0x0813; // combining circumflex accent below
|
| + case XKB_KEY_dead_belowtilde:
|
| + return 0x0816; // combining tilde below
|
| + case XKB_KEY_dead_belowbreve:
|
| + return 0x0814; // combining breve below
|
| + case XKB_KEY_dead_belowdiaeresis:
|
| + return 0x0804; // combining diaeresis below
|
| + case XKB_KEY_dead_invertedbreve:
|
| + return 0x0785; // combining inverted breve
|
| + case XKB_KEY_dead_belowcomma:
|
| + return 0x0806; // combining comma below
|
| + case XKB_KEY_dead_currency:
|
| + return 0x0164; // currency sign
|
| + default:
|
| + return 0;
|
| + }
|
| +}
|
| +
|
| +} // namespace ui
|
|
|