| 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
|
| +
|
| +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
|
|
|