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

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: 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 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 #include "ui/events/ozone/layout/xkb/xkb_keysym.h"
9
10 namespace ui {
11
12 namespace {
13
14 } // anonymous namespace
spang 2014/12/08 22:47:28 remove this
kpschoedel 2014/12/08 23:15:26 Oops, USE_X11 was in there.
15
16 DomKey XkbKeySymToDomKey(XkbKeySym keysym) {
17 switch (keysym) {
18 case XK_BackSpace:
19 return DomKey::BACKSPACE;
20 case XK_Tab:
21 case XK_KP_Tab:
22 case XK_ISO_Left_Tab:
23 return DomKey::TAB;
24 case XK_Clear:
25 case XK_KP_Begin:
26 case XF86XK_Clear:
27 return DomKey::CLEAR;
28 case XK_Return:
29 case XK_KP_Enter:
30 return DomKey::ENTER;
31 case XK_Linefeed:
32 return DomKey::ENTER;
33 case XK_Pause:
34 return DomKey::PAUSE;
35 case XK_Scroll_Lock:
36 return DomKey::SCROLL_LOCK;
37 case XK_Escape:
38 return DomKey::ESCAPE;
39 case XK_Multi_key:
40 return DomKey::COMPOSE;
41 case XK_Kanji:
42 return DomKey::KANJI_MODE;
43 case XK_Muhenkan:
44 return DomKey::NON_CONVERT;
45 case XK_Henkan_Mode:
46 return DomKey::CONVERT;
47 case XK_Romaji:
48 return DomKey::ROMAJI;
49 case XK_Hiragana:
50 return DomKey::HIRAGANA;
51 case XK_Katakana:
52 return DomKey::KATAKANA;
53 case XK_Hiragana_Katakana:
54 return DomKey::HIRAGANA_KATAKANA;
55 case XK_Zenkaku:
56 return DomKey::ZENKAKU;
57 case XK_Hankaku:
58 return DomKey::HANKAKU;
59 case XK_Zenkaku_Hankaku:
60 return DomKey::ZENKAKU_HANKAKU;
61 case XK_Kana_Lock:
62 return DomKey::KANA_MODE;
63 case XK_Eisu_Shift:
64 case XK_Eisu_toggle:
65 return DomKey::EISU;
66 case XK_Hangul:
67 return DomKey::HANGUL_MODE;
68 case XK_Hangul_Hanja:
69 return DomKey::HANJA_MODE;
70 case XK_Codeinput:
71 return DomKey::CODE_INPUT;
72 case XK_SingleCandidate:
73 return DomKey::SINGLE_CANDIDATE;
74 case XK_MultipleCandidate:
75 return DomKey::ALL_CANDIDATES;
76 case XK_PreviousCandidate:
77 return DomKey::PREVIOUS_CANDIDATE;
78 case XK_Home:
79 case XK_KP_Home:
80 return DomKey::HOME;
81 case XK_Left:
82 case XK_KP_Left:
83 return DomKey::ARROW_LEFT;
84 case XK_Up:
85 case XK_KP_Up:
86 return DomKey::ARROW_UP;
87 case XK_Right:
88 case XK_KP_Right:
89 return DomKey::ARROW_RIGHT;
90 case XK_Down:
91 case XK_KP_Down:
92 return DomKey::ARROW_DOWN;
93 case XK_Prior:
94 case XK_KP_Prior:
95 return DomKey::PAGE_UP;
96 case XK_Next:
97 case XK_KP_Next:
98 case XF86XK_ScrollDown:
99 return DomKey::PAGE_DOWN;
100 case XK_End:
101 case XK_KP_End:
102 case XF86XK_ScrollUp:
103 return DomKey::END;
104 case XK_Select:
105 return DomKey::SELECT;
106 case XK_Print:
107 return DomKey::PRINT;
108 case XK_Execute:
109 return DomKey::EXECUTE;
110 case XK_Insert:
111 case XK_KP_Insert:
112 return DomKey::INSERT;
113 case XK_Undo:
114 return DomKey::UNDO;
115 case XK_Redo:
116 return DomKey::REDO;
117 case XK_Menu:
118 return DomKey::CONTEXT_MENU;
119 case XK_Find:
120 return DomKey::FIND;
121 case XK_Cancel:
122 return DomKey::CANCEL;
123 case XK_Help:
124 return DomKey::HELP;
125 case XK_Break:
126 case XK_3270_Attn:
127 return DomKey::ATTN;
128 case XK_Mode_switch:
129 return DomKey::MODE_CHANGE;
130 case XK_Num_Lock:
131 return DomKey::NUM_LOCK;
132 case XK_F1:
133 case XK_KP_F1:
134 return DomKey::F1;
135 case XK_F2:
136 case XK_KP_F2:
137 return DomKey::F2;
138 case XK_F3:
139 case XK_KP_F3:
140 return DomKey::F3;
141 case XK_F4:
142 case XK_KP_F4:
143 return DomKey::F4;
144 case XK_F5:
145 return DomKey::F5;
146 case XK_F6:
147 return DomKey::F6;
148 case XK_F7:
149 return DomKey::F7;
150 case XK_F8:
151 return DomKey::F8;
152 case XK_F9:
153 return DomKey::F9;
154 case XK_F10:
155 return DomKey::F10;
156 case XK_F11:
157 return DomKey::F11;
158 case XK_F12:
159 return DomKey::F12;
160 case XK_F13:
161 return DomKey::F13;
162 case XK_F14:
163 return DomKey::F14;
164 case XK_F15:
165 return DomKey::F15;
166 case XK_F16:
167 return DomKey::F16;
168 case XK_F17:
169 return DomKey::F17;
170 case XK_F18:
171 return DomKey::F18;
172 case XK_F19:
173 return DomKey::F19;
174 case XK_F20:
175 return DomKey::F20;
176 case XK_F21:
177 return DomKey::F21;
178 case XK_F22:
179 return DomKey::F22;
180 case XK_F23:
181 return DomKey::F23;
182 case XK_F24:
183 return DomKey::F24;
184 case XK_Shift_L:
185 case XK_Shift_R:
186 return DomKey::SHIFT;
187 case XK_Control_L:
188 case XK_Control_R:
189 return DomKey::CONTROL;
190 case XK_Caps_Lock:
191 return DomKey::CAPS_LOCK;
192 case XK_Meta_L:
193 case XK_Meta_R:
194 return DomKey::META;
195 case XK_Alt_L:
196 case XK_Alt_R:
197 return DomKey::ALT;
198 case XK_Super_L:
199 case XK_Super_R:
200 return DomKey::OS;
201 case XK_Hyper_L:
202 case XK_Hyper_R:
203 return DomKey::HYPER;
204 case XK_Delete:
205 return DomKey::DEL;
206 case SunXK_Props:
207 return DomKey::PROPS;
208 case XF86XK_Next_VMode:
209 return DomKey::VIDEO_MODE_NEXT;
210 case XF86XK_MonBrightnessUp:
211 return DomKey::BRIGHTNESS_UP;
212 case XF86XK_MonBrightnessDown:
213 return DomKey::BRIGHTNESS_DOWN;
214 case XF86XK_Standby:
215 case XF86XK_Sleep:
216 case XF86XK_Suspend:
217 return DomKey::STANDBY;
218 case XF86XK_AudioLowerVolume:
219 return DomKey::VOLUME_DOWN;
220 case XF86XK_AudioMute:
221 return DomKey::VOLUME_MUTE;
222 case XF86XK_AudioRaiseVolume:
223 return DomKey::VOLUME_UP;
224 case XF86XK_AudioPlay:
225 return DomKey::MEDIA_PLAY;
226 case XF86XK_AudioStop:
227 return DomKey::MEDIA_STOP;
228 case XF86XK_AudioPrev:
229 return DomKey::MEDIA_TRACK_PREVIOUS;
230 case XF86XK_AudioNext:
231 return DomKey::MEDIA_TRACK_NEXT;
232 case XF86XK_HomePage:
233 return DomKey::BROWSER_HOME;
234 case XF86XK_Mail:
235 return DomKey::LAUNCH_MAIL;
236 case XF86XK_Search:
237 return DomKey::BROWSER_SEARCH;
238 case XF86XK_AudioRecord:
239 return DomKey::MEDIA_RECORD;
240 case XF86XK_Calculator:
241 return DomKey::LAUNCH_CALCULATOR;
242 case XF86XK_Calendar:
243 return DomKey::LAUNCH_CALENDAR;
244 case XF86XK_Back:
245 return DomKey::BROWSER_BACK;
246 case XF86XK_Forward:
247 return DomKey::BROWSER_FORWARD;
248 case XF86XK_Stop:
249 return DomKey::BROWSER_STOP;
250 case XF86XK_Refresh:
251 case XF86XK_Reload:
252 return DomKey::BROWSER_REFRESH;
253 case XF86XK_PowerOff:
254 return DomKey::POWER_OFF;
255 case XF86XK_WakeUp:
256 return DomKey::WAKE_UP;
257 case XF86XK_Eject:
258 return DomKey::EJECT;
259 case XF86XK_ScreenSaver:
260 return DomKey::LAUNCH_SCREEN_SAVER;
261 case XF86XK_WWW:
262 return DomKey::LAUNCH_WEB_BROWSER;
263 case XF86XK_Favorites:
264 return DomKey::BROWSER_FAVORITES;
265 case XF86XK_AudioPause:
266 return DomKey::MEDIA_PAUSE;
267 case XF86XK_AudioMedia:
268 case XF86XK_Music:
269 return DomKey::LAUNCH_MUSIC_PLAYER;
270 case XF86XK_MyComputer:
271 case XF86XK_Explorer:
272 return DomKey::LAUNCH_MY_COMPUTER;
273 case XF86XK_AudioRewind:
274 return DomKey::MEDIA_REWIND;
275 case XF86XK_CD:
276 case XF86XK_Video:
277 return DomKey::LAUNCH_MEDIA_PLAYER;
278 case XF86XK_Close:
279 return DomKey::CLOSE;
280 case XF86XK_Copy:
281 case SunXK_Copy:
282 return DomKey::COPY;
283 case XF86XK_Cut:
284 case SunXK_Cut:
285 return DomKey::CUT;
286 case XF86XK_Display:
287 return DomKey::DISPLAY_SWAP;
288 case XF86XK_Excel:
289 return DomKey::LAUNCH_SPREADSHEET;
290 case XF86XK_LogOff:
291 return DomKey::LOG_OFF;
292 case XF86XK_New:
293 return DomKey::NEW;
294 case XF86XK_Open:
295 case SunXK_Open:
296 return DomKey::OPEN;
297 case XF86XK_Paste:
298 case SunXK_Paste:
299 return DomKey::PASTE;
300 case XF86XK_Reply:
301 return DomKey::MAIL_REPLY;
302 case XF86XK_Save:
303 return DomKey::SAVE;
304 case XF86XK_Send:
305 return DomKey::MAIL_SEND;
306 case XF86XK_Spell:
307 return DomKey::SPELL_CHECK;
308 case XF86XK_SplitScreen:
309 return DomKey::SPLIT_SCREEN_TOGGLE;
310 case XF86XK_Word:
311 case XF86XK_OfficeHome:
312 return DomKey::LAUNCH_WORD_PROCESSOR;
313 case XF86XK_ZoomIn:
314 return DomKey::ZOOM_IN;
315 case XF86XK_ZoomOut:
316 return DomKey::ZOOM_OUT;
317 case XF86XK_WebCam:
318 return DomKey::LAUNCH_WEB_CAM;
319 case XF86XK_MailForward:
320 return DomKey::MAIL_FORWARD;
321 case XF86XK_AudioForward:
322 return DomKey::MEDIA_FAST_FORWARD;
323 case XF86XK_AudioRandomPlay:
324 return DomKey::RANDOM_TOGGLE;
325 case XF86XK_Subtitle:
326 return DomKey::SUBTITLE;
327 case XF86XK_Hibernate:
328 return DomKey::HIBERNATE;
329 case XK_3270_EraseEOF:
330 return DomKey::ERASE_EOF;
331 case XK_3270_Play:
332 return DomKey::PLAY;
333 case XK_3270_ExSelect:
334 return DomKey::EX_SEL;
335 case XK_3270_CursorSelect:
336 return DomKey::CR_SEL;
337 case XK_3270_PrintScreen:
338 return DomKey::PRINT_SCREEN;
339 case XK_ISO_Level3_Shift:
340 return DomKey::ALT_GRAPH;
341 case XK_ISO_Next_Group:
342 return DomKey::GROUP_NEXT;
343 case XK_ISO_Prev_Group:
344 return DomKey::GROUP_PREVIOUS;
345 case XK_ISO_First_Group:
346 return DomKey::GROUP_FIRST;
347 case XK_ISO_Last_Group:
348 return DomKey::GROUP_LAST;
349 case XK_dead_grave:
350 case XK_dead_acute:
351 case XK_dead_circumflex:
352 case XK_dead_tilde:
353 case XK_dead_macron:
354 case XK_dead_breve:
355 case XK_dead_abovedot:
356 case XK_dead_diaeresis:
357 case XK_dead_abovering:
358 case XK_dead_doubleacute:
359 case XK_dead_caron:
360 case XK_dead_cedilla:
361 case XK_dead_ogonek:
362 case XK_dead_iota:
363 case XK_dead_belowdot:
364 case XK_dead_hook:
365 case XK_dead_horn:
366 case XK_dead_stroke:
367 case XK_dead_abovecomma:
368 case XK_dead_abovereversedcomma:
369 case XK_dead_doublegrave:
370 case XK_dead_belowring:
371 case XK_dead_belowmacron:
372 case XK_dead_belowcircumflex:
373 case XK_dead_belowtilde:
374 case XK_dead_belowbreve:
375 case XK_dead_belowdiaeresis:
376 case XK_dead_invertedbreve:
377 case XK_dead_belowcomma:
378 case XK_dead_currency:
379 return DomKey::DEAD;
380 default:
381 return DomKey::NONE;
382 }
383 }
384
385 base::char16 XkbKeySymDeadKey(XkbKeySym keysym) {
386 switch (keysym) {
387 case XK_dead_grave:
388 return 0x0768; // combining grave accent
389 case XK_dead_acute:
390 return 0x0769; // combining acute accent
391 case XK_dead_circumflex:
392 return 0x0770; // combining circumflex accent
393 case XK_dead_tilde:
394 return 0x0771; // combining tilde
395 case XK_dead_macron:
396 return 0x0772; // combining macron
397 case XK_dead_breve:
398 return 0x0774; // combining breve
399 case XK_dead_abovedot:
400 return 0x0775; // combining dot above
401 case XK_dead_diaeresis:
402 return 0x0776; // combining diaeresis
403 case XK_dead_abovering:
404 return 0x0778; // combining ring above
405 case XK_dead_doubleacute:
406 return 0x0779; // combining double acute accent
407 case XK_dead_caron:
408 return 0x0780; // combining caron
409 case XK_dead_cedilla:
410 return 0x0807; // combining cedilla
411 case XK_dead_ogonek:
412 return 0x0808; // combining ogonek
413 case XK_dead_iota:
414 return 0x0837; // combining greek ypogegrammeni
415 case XK_dead_belowdot:
416 return 0x0803; // combining dot below
417 case XK_dead_hook:
418 return 0x0777; // combining hook above
419 case XK_dead_horn:
420 return 0x0795; // combining horn
421 case XK_dead_stroke:
422 return 0x0824; // combining long solidus overlay
423 case XK_dead_abovecomma:
424 return 0x0787; // combining comma above
425 case XK_dead_abovereversedcomma:
426 return 0x0788; // combining reversed comma above
427 case XK_dead_doublegrave:
428 return 0x0783; // combining double grave accent
429 case XK_dead_belowring:
430 return 0x0805; // combining ring below
431 case XK_dead_belowmacron:
432 return 0x0817; // combining macron below
433 case XK_dead_belowcircumflex:
434 return 0x0813; // combining circumflex accent below
435 case XK_dead_belowtilde:
436 return 0x0816; // combining tilde below
437 case XK_dead_belowbreve:
438 return 0x0814; // combining breve below
439 case XK_dead_belowdiaeresis:
440 return 0x0804; // combining diaeresis below
441 case XK_dead_invertedbreve:
442 return 0x0785; // combining inverted breve
443 case XK_dead_belowcomma:
444 return 0x0806; // combining comma below
445 case XK_dead_currency:
446 return 0x0164; // currency sign
447 default:
448 return 0;
449 }
450 }
451
452 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698