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 XkbKeySymToDomKey(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 XkbKeySymDeadKey(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 |