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

Unified Diff: ui/events/ozone/layout/xkb/xkb_keyboard_code_conversion.cc

Issue 778503002: XKB implementation of Ozone key layout. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@x430194-layout
Patch Set: address review comments (spang) Created 6 years 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/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

Powered by Google App Engine
This is Rietveld 408576698