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

Side by Side 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: USE_X11 ate my brain 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/events/ozone/layout/xkb/xkb_keyboard_code_conversion.h"
6
7 #include "ui/events/keycodes/dom3/dom_key.h"
8
9 namespace ui {
10
11 namespace {
12
13 } // anonymous namespace
14
15 DomKey XkbKeySymToDomKey(xkb_keysym_t keysym) {
16 switch (keysym) {
17 case XKB_KEY_BackSpace:
18 return DomKey::BACKSPACE;
19 case XKB_KEY_Tab:
20 case XKB_KEY_KP_Tab:
21 case XKB_KEY_ISO_Left_Tab:
22 return DomKey::TAB;
23 case XKB_KEY_Clear:
24 case XKB_KEY_KP_Begin:
25 case XKB_KEY_XF86Clear:
26 return DomKey::CLEAR;
27 case XKB_KEY_Return:
28 case XKB_KEY_KP_Enter:
29 return DomKey::ENTER;
30 case XKB_KEY_Linefeed:
31 return DomKey::ENTER;
32 case XKB_KEY_Pause:
33 return DomKey::PAUSE;
34 case XKB_KEY_Scroll_Lock:
35 return DomKey::SCROLL_LOCK;
36 case XKB_KEY_Escape:
37 return DomKey::ESCAPE;
38 case XKB_KEY_Multi_key:
39 return DomKey::COMPOSE;
40 case XKB_KEY_Kanji:
41 return DomKey::KANJI_MODE;
42 case XKB_KEY_Muhenkan:
43 return DomKey::NON_CONVERT;
44 case XKB_KEY_Henkan_Mode:
45 return DomKey::CONVERT;
46 case XKB_KEY_Romaji:
47 return DomKey::ROMAJI;
48 case XKB_KEY_Hiragana:
49 return DomKey::HIRAGANA;
50 case XKB_KEY_Katakana:
51 return DomKey::KATAKANA;
52 case XKB_KEY_Hiragana_Katakana:
53 return DomKey::HIRAGANA_KATAKANA;
54 case XKB_KEY_Zenkaku:
55 return DomKey::ZENKAKU;
56 case XKB_KEY_Hankaku:
57 return DomKey::HANKAKU;
58 case XKB_KEY_Zenkaku_Hankaku:
59 return DomKey::ZENKAKU_HANKAKU;
60 case XKB_KEY_Kana_Lock:
61 return DomKey::KANA_MODE;
62 case XKB_KEY_Eisu_Shift:
63 case XKB_KEY_Eisu_toggle:
64 return DomKey::EISU;
65 case XKB_KEY_Hangul:
66 return DomKey::HANGUL_MODE;
67 case XKB_KEY_Hangul_Hanja:
68 return DomKey::HANJA_MODE;
69 case XKB_KEY_Codeinput:
70 return DomKey::CODE_INPUT;
71 case XKB_KEY_SingleCandidate:
72 return DomKey::SINGLE_CANDIDATE;
73 case XKB_KEY_MultipleCandidate:
74 return DomKey::ALL_CANDIDATES;
75 case XKB_KEY_PreviousCandidate:
76 return DomKey::PREVIOUS_CANDIDATE;
77 case XKB_KEY_Home:
78 case XKB_KEY_KP_Home:
79 return DomKey::HOME;
80 case XKB_KEY_Left:
81 case XKB_KEY_KP_Left:
82 return DomKey::ARROW_LEFT;
83 case XKB_KEY_Up:
84 case XKB_KEY_KP_Up:
85 return DomKey::ARROW_UP;
86 case XKB_KEY_Right:
87 case XKB_KEY_KP_Right:
88 return DomKey::ARROW_RIGHT;
89 case XKB_KEY_Down:
90 case XKB_KEY_KP_Down:
91 return DomKey::ARROW_DOWN;
92 case XKB_KEY_Prior:
93 case XKB_KEY_KP_Prior:
94 return DomKey::PAGE_UP;
95 case XKB_KEY_Next:
96 case XKB_KEY_KP_Next:
97 case XKB_KEY_XF86ScrollDown:
98 return DomKey::PAGE_DOWN;
99 case XKB_KEY_End:
100 case XKB_KEY_KP_End:
101 case XKB_KEY_XF86ScrollUp:
102 return DomKey::END;
103 case XKB_KEY_Select:
104 return DomKey::SELECT;
105 case XKB_KEY_Print:
106 return DomKey::PRINT;
107 case XKB_KEY_Execute:
108 return DomKey::EXECUTE;
109 case XKB_KEY_Insert:
110 case XKB_KEY_KP_Insert:
111 return DomKey::INSERT;
112 case XKB_KEY_Undo:
113 return DomKey::UNDO;
114 case XKB_KEY_Redo:
115 return DomKey::REDO;
116 case XKB_KEY_Menu:
117 return DomKey::CONTEXT_MENU;
118 case XKB_KEY_Find:
119 return DomKey::FIND;
120 case XKB_KEY_Cancel:
121 return DomKey::CANCEL;
122 case XKB_KEY_Help:
123 return DomKey::HELP;
124 case XKB_KEY_Break:
125 case XKB_KEY_3270_Attn:
126 return DomKey::ATTN;
127 case XKB_KEY_Mode_switch:
128 return DomKey::MODE_CHANGE;
129 case XKB_KEY_Num_Lock:
130 return DomKey::NUM_LOCK;
131 case XKB_KEY_F1:
132 case XKB_KEY_KP_F1:
133 return DomKey::F1;
134 case XKB_KEY_F2:
135 case XKB_KEY_KP_F2:
136 return DomKey::F2;
137 case XKB_KEY_F3:
138 case XKB_KEY_KP_F3:
139 return DomKey::F3;
140 case XKB_KEY_F4:
141 case XKB_KEY_KP_F4:
142 return DomKey::F4;
143 case XKB_KEY_F5:
144 return DomKey::F5;
145 case XKB_KEY_F6:
146 return DomKey::F6;
147 case XKB_KEY_F7:
148 return DomKey::F7;
149 case XKB_KEY_F8:
150 return DomKey::F8;
151 case XKB_KEY_F9:
152 return DomKey::F9;
153 case XKB_KEY_F10:
154 return DomKey::F10;
155 case XKB_KEY_F11:
156 return DomKey::F11;
157 case XKB_KEY_F12:
158 return DomKey::F12;
159 case XKB_KEY_F13:
160 return DomKey::F13;
161 case XKB_KEY_F14:
162 return DomKey::F14;
163 case XKB_KEY_F15:
164 return DomKey::F15;
165 case XKB_KEY_F16:
166 return DomKey::F16;
167 case XKB_KEY_F17:
168 return DomKey::F17;
169 case XKB_KEY_F18:
170 return DomKey::F18;
171 case XKB_KEY_F19:
172 return DomKey::F19;
173 case XKB_KEY_F20:
174 return DomKey::F20;
175 case XKB_KEY_F21:
176 return DomKey::F21;
177 case XKB_KEY_F22:
178 return DomKey::F22;
179 case XKB_KEY_F23:
180 return DomKey::F23;
181 case XKB_KEY_F24:
182 return DomKey::F24;
183 case XKB_KEY_Shift_L:
184 case XKB_KEY_Shift_R:
185 return DomKey::SHIFT;
186 case XKB_KEY_Control_L:
187 case XKB_KEY_Control_R:
188 return DomKey::CONTROL;
189 case XKB_KEY_Caps_Lock:
190 return DomKey::CAPS_LOCK;
191 case XKB_KEY_Meta_L:
192 case XKB_KEY_Meta_R:
193 return DomKey::META;
194 case XKB_KEY_Alt_L:
195 case XKB_KEY_Alt_R:
196 return DomKey::ALT;
197 case XKB_KEY_Super_L:
198 case XKB_KEY_Super_R:
199 return DomKey::OS;
200 case XKB_KEY_Hyper_L:
201 case XKB_KEY_Hyper_R:
202 return DomKey::HYPER;
203 case XKB_KEY_Delete:
204 return DomKey::DEL;
205 case XKB_KEY_SunProps:
206 return DomKey::PROPS;
207 case XKB_KEY_XF86Next_VMode:
208 return DomKey::VIDEO_MODE_NEXT;
209 case XKB_KEY_XF86MonBrightnessUp:
210 return DomKey::BRIGHTNESS_UP;
211 case XKB_KEY_XF86MonBrightnessDown:
212 return DomKey::BRIGHTNESS_DOWN;
213 case XKB_KEY_XF86Standby:
214 case XKB_KEY_XF86Sleep:
215 case XKB_KEY_XF86Suspend:
216 return DomKey::STANDBY;
217 case XKB_KEY_XF86AudioLowerVolume:
218 return DomKey::VOLUME_DOWN;
219 case XKB_KEY_XF86AudioMute:
220 return DomKey::VOLUME_MUTE;
221 case XKB_KEY_XF86AudioRaiseVolume:
222 return DomKey::VOLUME_UP;
223 case XKB_KEY_XF86AudioPlay:
224 return DomKey::MEDIA_PLAY;
225 case XKB_KEY_XF86AudioStop:
226 return DomKey::MEDIA_STOP;
227 case XKB_KEY_XF86AudioPrev:
228 return DomKey::MEDIA_TRACK_PREVIOUS;
229 case XKB_KEY_XF86AudioNext:
230 return DomKey::MEDIA_TRACK_NEXT;
231 case XKB_KEY_XF86HomePage:
232 return DomKey::BROWSER_HOME;
233 case XKB_KEY_XF86Mail:
234 return DomKey::LAUNCH_MAIL;
235 case XKB_KEY_XF86Search:
236 return DomKey::BROWSER_SEARCH;
237 case XKB_KEY_XF86AudioRecord:
238 return DomKey::MEDIA_RECORD;
239 case XKB_KEY_XF86Calculator:
240 return DomKey::LAUNCH_CALCULATOR;
241 case XKB_KEY_XF86Calendar:
242 return DomKey::LAUNCH_CALENDAR;
243 case XKB_KEY_XF86Back:
244 return DomKey::BROWSER_BACK;
245 case XKB_KEY_XF86Forward:
246 return DomKey::BROWSER_FORWARD;
247 case XKB_KEY_XF86Stop:
248 return DomKey::BROWSER_STOP;
249 case XKB_KEY_XF86Refresh:
250 case XKB_KEY_XF86Reload:
251 return DomKey::BROWSER_REFRESH;
252 case XKB_KEY_XF86PowerOff:
253 return DomKey::POWER_OFF;
254 case XKB_KEY_XF86WakeUp:
255 return DomKey::WAKE_UP;
256 case XKB_KEY_XF86Eject:
257 return DomKey::EJECT;
258 case XKB_KEY_XF86ScreenSaver:
259 return DomKey::LAUNCH_SCREEN_SAVER;
260 case XKB_KEY_XF86WWW:
261 return DomKey::LAUNCH_WEB_BROWSER;
262 case XKB_KEY_XF86Favorites:
263 return DomKey::BROWSER_FAVORITES;
264 case XKB_KEY_XF86AudioPause:
265 return DomKey::MEDIA_PAUSE;
266 case XKB_KEY_XF86AudioMedia:
267 case XKB_KEY_XF86Music:
268 return DomKey::LAUNCH_MUSIC_PLAYER;
269 case XKB_KEY_XF86MyComputer:
270 case XKB_KEY_XF86Explorer:
271 return DomKey::LAUNCH_MY_COMPUTER;
272 case XKB_KEY_XF86AudioRewind:
273 return DomKey::MEDIA_REWIND;
274 case XKB_KEY_XF86CD:
275 case XKB_KEY_XF86Video:
276 return DomKey::LAUNCH_MEDIA_PLAYER;
277 case XKB_KEY_XF86Close:
278 return DomKey::CLOSE;
279 case XKB_KEY_XF86Copy:
280 case XKB_KEY_SunCopy:
281 return DomKey::COPY;
282 case XKB_KEY_XF86Cut:
283 case XKB_KEY_SunCut:
284 return DomKey::CUT;
285 case XKB_KEY_XF86Display:
286 return DomKey::DISPLAY_SWAP;
287 case XKB_KEY_XF86Excel:
288 return DomKey::LAUNCH_SPREADSHEET;
289 case XKB_KEY_XF86LogOff:
290 return DomKey::LOG_OFF;
291 case XKB_KEY_XF86New:
292 return DomKey::NEW;
293 case XKB_KEY_XF86Open:
294 case XKB_KEY_SunOpen:
295 return DomKey::OPEN;
296 case XKB_KEY_XF86Paste:
297 case XKB_KEY_SunPaste:
298 return DomKey::PASTE;
299 case XKB_KEY_XF86Reply:
300 return DomKey::MAIL_REPLY;
301 case XKB_KEY_XF86Save:
302 return DomKey::SAVE;
303 case XKB_KEY_XF86Send:
304 return DomKey::MAIL_SEND;
305 case XKB_KEY_XF86Spell:
306 return DomKey::SPELL_CHECK;
307 case XKB_KEY_XF86SplitScreen:
308 return DomKey::SPLIT_SCREEN_TOGGLE;
309 case XKB_KEY_XF86Word:
310 case XKB_KEY_XF86OfficeHome:
311 return DomKey::LAUNCH_WORD_PROCESSOR;
312 case XKB_KEY_XF86ZoomIn:
313 return DomKey::ZOOM_IN;
314 case XKB_KEY_XF86ZoomOut:
315 return DomKey::ZOOM_OUT;
316 case XKB_KEY_XF86WebCam:
317 return DomKey::LAUNCH_WEB_CAM;
318 case XKB_KEY_XF86MailForward:
319 return DomKey::MAIL_FORWARD;
320 case XKB_KEY_XF86AudioForward:
321 return DomKey::MEDIA_FAST_FORWARD;
322 case XKB_KEY_XF86AudioRandomPlay:
323 return DomKey::RANDOM_TOGGLE;
324 case XKB_KEY_XF86Subtitle:
325 return DomKey::SUBTITLE;
326 case XKB_KEY_XF86Hibernate:
327 return DomKey::HIBERNATE;
328 case XKB_KEY_3270_EraseEOF:
329 return DomKey::ERASE_EOF;
330 case XKB_KEY_3270_Play:
331 return DomKey::PLAY;
332 case XKB_KEY_3270_ExSelect:
333 return DomKey::EX_SEL;
334 case XKB_KEY_3270_CursorSelect:
335 return DomKey::CR_SEL;
336 case XKB_KEY_3270_PrintScreen:
337 return DomKey::PRINT_SCREEN;
338 case XKB_KEY_ISO_Level3_Shift:
339 return DomKey::ALT_GRAPH;
340 case XKB_KEY_ISO_Next_Group:
341 return DomKey::GROUP_NEXT;
342 case XKB_KEY_ISO_Prev_Group:
343 return DomKey::GROUP_PREVIOUS;
344 case XKB_KEY_ISO_First_Group:
345 return DomKey::GROUP_FIRST;
346 case XKB_KEY_ISO_Last_Group:
347 return DomKey::GROUP_LAST;
348 case XKB_KEY_dead_grave:
349 case XKB_KEY_dead_acute:
350 case XKB_KEY_dead_circumflex:
351 case XKB_KEY_dead_tilde:
352 case XKB_KEY_dead_macron:
353 case XKB_KEY_dead_breve:
354 case XKB_KEY_dead_abovedot:
355 case XKB_KEY_dead_diaeresis:
356 case XKB_KEY_dead_abovering:
357 case XKB_KEY_dead_doubleacute:
358 case XKB_KEY_dead_caron:
359 case XKB_KEY_dead_cedilla:
360 case XKB_KEY_dead_ogonek:
361 case XKB_KEY_dead_iota:
362 case XKB_KEY_dead_belowdot:
363 case XKB_KEY_dead_hook:
364 case XKB_KEY_dead_horn:
365 case XKB_KEY_dead_stroke:
366 case XKB_KEY_dead_abovecomma:
367 case XKB_KEY_dead_abovereversedcomma:
368 case XKB_KEY_dead_doublegrave:
369 case XKB_KEY_dead_belowring:
370 case XKB_KEY_dead_belowmacron:
371 case XKB_KEY_dead_belowcircumflex:
372 case XKB_KEY_dead_belowtilde:
373 case XKB_KEY_dead_belowbreve:
374 case XKB_KEY_dead_belowdiaeresis:
375 case XKB_KEY_dead_invertedbreve:
376 case XKB_KEY_dead_belowcomma:
377 case XKB_KEY_dead_currency:
378 return DomKey::DEAD;
379 default:
380 return DomKey::NONE;
381 }
382 }
383
384 base::char16 XkbKeySymDeadKey(xkb_keysym_t keysym) {
385 switch (keysym) {
386 case XKB_KEY_dead_grave:
387 return 0x0768; // combining grave accent
388 case XKB_KEY_dead_acute:
389 return 0x0769; // combining acute accent
390 case XKB_KEY_dead_circumflex:
391 return 0x0770; // combining circumflex accent
392 case XKB_KEY_dead_tilde:
393 return 0x0771; // combining tilde
394 case XKB_KEY_dead_macron:
395 return 0x0772; // combining macron
396 case XKB_KEY_dead_breve:
397 return 0x0774; // combining breve
398 case XKB_KEY_dead_abovedot:
399 return 0x0775; // combining dot above
400 case XKB_KEY_dead_diaeresis:
401 return 0x0776; // combining diaeresis
402 case XKB_KEY_dead_abovering:
403 return 0x0778; // combining ring above
404 case XKB_KEY_dead_doubleacute:
405 return 0x0779; // combining double acute accent
406 case XKB_KEY_dead_caron:
407 return 0x0780; // combining caron
408 case XKB_KEY_dead_cedilla:
409 return 0x0807; // combining cedilla
410 case XKB_KEY_dead_ogonek:
411 return 0x0808; // combining ogonek
412 case XKB_KEY_dead_iota:
413 return 0x0837; // combining greek ypogegrammeni
414 case XKB_KEY_dead_belowdot:
415 return 0x0803; // combining dot below
416 case XKB_KEY_dead_hook:
417 return 0x0777; // combining hook above
418 case XKB_KEY_dead_horn:
419 return 0x0795; // combining horn
420 case XKB_KEY_dead_stroke:
421 return 0x0824; // combining long solidus overlay
422 case XKB_KEY_dead_abovecomma:
423 return 0x0787; // combining comma above
424 case XKB_KEY_dead_abovereversedcomma:
425 return 0x0788; // combining reversed comma above
426 case XKB_KEY_dead_doublegrave:
427 return 0x0783; // combining double grave accent
428 case XKB_KEY_dead_belowring:
429 return 0x0805; // combining ring below
430 case XKB_KEY_dead_belowmacron:
431 return 0x0817; // combining macron below
432 case XKB_KEY_dead_belowcircumflex:
433 return 0x0813; // combining circumflex accent below
434 case XKB_KEY_dead_belowtilde:
435 return 0x0816; // combining tilde below
436 case XKB_KEY_dead_belowbreve:
437 return 0x0814; // combining breve below
438 case XKB_KEY_dead_belowdiaeresis:
439 return 0x0804; // combining diaeresis below
440 case XKB_KEY_dead_invertedbreve:
441 return 0x0785; // combining inverted breve
442 case XKB_KEY_dead_belowcomma:
443 return 0x0806; // combining comma below
444 case XKB_KEY_dead_currency:
445 return 0x0164; // currency sign
446 default:
447 return 0;
448 }
449 }
450
451 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698