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