| // Copyright 2013 The Flutter 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 "key_mapping.h" | |
| #include <glib.h> | |
| #include <map> | |
| #include "flutter/shell/platform/linux/fl_key_embedder_responder_private.h" | |
| // DO NOT EDIT -- DO NOT EDIT -- DO NOT EDIT | |
| // This file is generated by | |
| // flutter/flutter@dev/tools/gen_keycodes/bin/gen_keycodes.dart and should not | |
| // be edited directly. | |
| // | |
| // Edit the template dev/tools/gen_keycodes/data/gtk_key_mapping_cc.tmpl | |
| // instead. See dev/tools/gen_keycodes/README.md for more information. | |
| std::map<uint64_t, uint64_t> xkb_to_physical_key_map = { | |
| {0x00000009, 0x00070029}, // escape | |
| {0x0000000a, 0x0007001e}, // digit1 | |
| {0x0000000b, 0x0007001f}, // digit2 | |
| {0x0000000c, 0x00070020}, // digit3 | |
| {0x0000000d, 0x00070021}, // digit4 | |
| {0x0000000e, 0x00070022}, // digit5 | |
| {0x0000000f, 0x00070023}, // digit6 | |
| {0x00000010, 0x00070024}, // digit7 | |
| {0x00000011, 0x00070025}, // digit8 | |
| {0x00000012, 0x00070026}, // digit9 | |
| {0x00000013, 0x00070027}, // digit0 | |
| {0x00000014, 0x0007002d}, // minus | |
| {0x00000015, 0x0007002e}, // equal | |
| {0x00000016, 0x0007002a}, // backspace | |
| {0x00000017, 0x0007002b}, // tab | |
| {0x00000018, 0x00070014}, // keyQ | |
| {0x00000019, 0x0007001a}, // keyW | |
| {0x0000001a, 0x00070008}, // keyE | |
| {0x0000001b, 0x00070015}, // keyR | |
| {0x0000001c, 0x00070017}, // keyT | |
| {0x0000001d, 0x0007001c}, // keyY | |
| {0x0000001e, 0x00070018}, // keyU | |
| {0x0000001f, 0x0007000c}, // keyI | |
| {0x00000020, 0x00070012}, // keyO | |
| {0x00000021, 0x00070013}, // keyP | |
| {0x00000022, 0x0007002f}, // bracketLeft | |
| {0x00000023, 0x00070030}, // bracketRight | |
| {0x00000024, 0x00070028}, // enter | |
| {0x00000025, 0x000700e0}, // controlLeft | |
| {0x00000026, 0x00070004}, // keyA | |
| {0x00000027, 0x00070016}, // keyS | |
| {0x00000028, 0x00070007}, // keyD | |
| {0x00000029, 0x00070009}, // keyF | |
| {0x0000002a, 0x0007000a}, // keyG | |
| {0x0000002b, 0x0007000b}, // keyH | |
| {0x0000002c, 0x0007000d}, // keyJ | |
| {0x0000002d, 0x0007000e}, // keyK | |
| {0x0000002e, 0x0007000f}, // keyL | |
| {0x0000002f, 0x00070033}, // semicolon | |
| {0x00000030, 0x00070034}, // quote | |
| {0x00000031, 0x00070035}, // backquote | |
| {0x00000032, 0x000700e1}, // shiftLeft | |
| {0x00000033, 0x00070031}, // backslash | |
| {0x00000034, 0x0007001d}, // keyZ | |
| {0x00000035, 0x0007001b}, // keyX | |
| {0x00000036, 0x00070006}, // keyC | |
| {0x00000037, 0x00070019}, // keyV | |
| {0x00000038, 0x00070005}, // keyB | |
| {0x00000039, 0x00070011}, // keyN | |
| {0x0000003a, 0x00070010}, // keyM | |
| {0x0000003b, 0x00070036}, // comma | |
| {0x0000003c, 0x00070037}, // period | |
| {0x0000003d, 0x00070038}, // slash | |
| {0x0000003e, 0x000700e5}, // shiftRight | |
| {0x0000003f, 0x00070055}, // numpadMultiply | |
| {0x00000040, 0x000700e2}, // altLeft | |
| {0x00000041, 0x0007002c}, // space | |
| {0x00000042, 0x00070039}, // capsLock | |
| {0x00000043, 0x0007003a}, // f1 | |
| {0x00000044, 0x0007003b}, // f2 | |
| {0x00000045, 0x0007003c}, // f3 | |
| {0x00000046, 0x0007003d}, // f4 | |
| {0x00000047, 0x0007003e}, // f5 | |
| {0x00000048, 0x0007003f}, // f6 | |
| {0x00000049, 0x00070040}, // f7 | |
| {0x0000004a, 0x00070041}, // f8 | |
| {0x0000004b, 0x00070042}, // f9 | |
| {0x0000004c, 0x00070043}, // f10 | |
| {0x0000004d, 0x00070053}, // numLock | |
| {0x0000004e, 0x00070047}, // scrollLock | |
| {0x0000004f, 0x0007005f}, // numpad7 | |
| {0x00000050, 0x00070060}, // numpad8 | |
| {0x00000051, 0x00070061}, // numpad9 | |
| {0x00000052, 0x00070056}, // numpadSubtract | |
| {0x00000053, 0x0007005c}, // numpad4 | |
| {0x00000054, 0x0007005d}, // numpad5 | |
| {0x00000055, 0x0007005e}, // numpad6 | |
| {0x00000056, 0x00070057}, // numpadAdd | |
| {0x00000057, 0x00070059}, // numpad1 | |
| {0x00000058, 0x0007005a}, // numpad2 | |
| {0x00000059, 0x0007005b}, // numpad3 | |
| {0x0000005a, 0x00070062}, // numpad0 | |
| {0x0000005b, 0x00070063}, // numpadDecimal | |
| {0x0000005d, 0x00070094}, // lang5 | |
| {0x0000005e, 0x00070064}, // intlBackslash | |
| {0x0000005f, 0x00070044}, // f11 | |
| {0x00000060, 0x00070045}, // f12 | |
| {0x00000061, 0x00070087}, // intlRo | |
| {0x00000062, 0x00070092}, // lang3 | |
| {0x00000063, 0x00070093}, // lang4 | |
| {0x00000064, 0x0007008a}, // convert | |
| {0x00000065, 0x00070088}, // kanaMode | |
| {0x00000066, 0x0007008b}, // nonConvert | |
| {0x00000068, 0x00070058}, // numpadEnter | |
| {0x00000069, 0x000700e4}, // controlRight | |
| {0x0000006a, 0x00070054}, // numpadDivide | |
| {0x0000006b, 0x00070046}, // printScreen | |
| {0x0000006c, 0x000700e6}, // altRight | |
| {0x0000006e, 0x0007004a}, // home | |
| {0x0000006f, 0x00070052}, // arrowUp | |
| {0x00000070, 0x0007004b}, // pageUp | |
| {0x00000071, 0x00070050}, // arrowLeft | |
| {0x00000072, 0x0007004f}, // arrowRight | |
| {0x00000073, 0x0007004d}, // end | |
| {0x00000074, 0x00070051}, // arrowDown | |
| {0x00000075, 0x0007004e}, // pageDown | |
| {0x00000076, 0x00070049}, // insert | |
| {0x00000077, 0x0007004c}, // delete | |
| {0x00000079, 0x0007007f}, // audioVolumeMute | |
| {0x0000007a, 0x00070081}, // audioVolumeDown | |
| {0x0000007b, 0x00070080}, // audioVolumeUp | |
| {0x0000007c, 0x00070066}, // power | |
| {0x0000007d, 0x00070067}, // numpadEqual | |
| {0x0000007e, 0x000700d7}, // numpadSignChange | |
| {0x0000007f, 0x00070048}, // pause | |
| {0x00000080, 0x000c029f}, // showAllWindows | |
| {0x00000081, 0x00070085}, // numpadComma | |
| {0x00000082, 0x00070090}, // lang1 | |
| {0x00000083, 0x00070091}, // lang2 | |
| {0x00000084, 0x00070089}, // intlYen | |
| {0x00000085, 0x000700e3}, // metaLeft | |
| {0x00000086, 0x000700e7}, // metaRight | |
| {0x00000087, 0x00070065}, // contextMenu | |
| {0x00000088, 0x000c0226}, // browserStop | |
| {0x00000089, 0x00070079}, // again | |
| {0x0000008b, 0x0007007a}, // undo | |
| {0x0000008c, 0x00070077}, // select | |
| {0x0000008d, 0x0007007c}, // copy | |
| {0x0000008e, 0x00070074}, // open | |
| {0x0000008f, 0x0007007d}, // paste | |
| {0x00000090, 0x0007007e}, // find | |
| {0x00000091, 0x0007007b}, // cut | |
| {0x00000092, 0x00070075}, // help | |
| {0x00000094, 0x000c0192}, // launchApp2 | |
| {0x00000096, 0x00010082}, // sleep | |
| {0x00000097, 0x00010083}, // wakeUp | |
| {0x00000098, 0x000c0194}, // launchApp1 | |
| {0x0000009e, 0x000c0196}, // launchInternetBrowser | |
| {0x000000a0, 0x000c019e}, // lockScreen | |
| {0x000000a3, 0x000c018a}, // launchMail | |
| {0x000000a4, 0x000c022a}, // browserFavorites | |
| {0x000000a6, 0x000c0224}, // browserBack | |
| {0x000000a7, 0x000c0225}, // browserForward | |
| {0x000000a9, 0x000c00b8}, // eject | |
| {0x000000ab, 0x000c00b5}, // mediaTrackNext | |
| {0x000000ac, 0x000c00cd}, // mediaPlayPause | |
| {0x000000ad, 0x000c00b6}, // mediaTrackPrevious | |
| {0x000000ae, 0x000c00b7}, // mediaStop | |
| {0x000000af, 0x000c00b2}, // mediaRecord | |
| {0x000000b0, 0x000c00b4}, // mediaRewind | |
| {0x000000b1, 0x000c008c}, // launchPhone | |
| {0x000000b3, 0x000c0183}, // mediaSelect | |
| {0x000000b4, 0x000c0223}, // browserHome | |
| {0x000000b5, 0x000c0227}, // browserRefresh | |
| {0x000000b6, 0x000c0094}, // exit | |
| {0x000000bb, 0x000700b6}, // numpadParenLeft | |
| {0x000000bc, 0x000700b7}, // numpadParenRight | |
| {0x000000bd, 0x000c0201}, // newKey | |
| {0x000000be, 0x000c0279}, // redo | |
| {0x000000bf, 0x00070068}, // f13 | |
| {0x000000c0, 0x00070069}, // f14 | |
| {0x000000c1, 0x0007006a}, // f15 | |
| {0x000000c2, 0x0007006b}, // f16 | |
| {0x000000c3, 0x0007006c}, // f17 | |
| {0x000000c4, 0x0007006d}, // f18 | |
| {0x000000c5, 0x0007006e}, // f19 | |
| {0x000000c6, 0x0007006f}, // f20 | |
| {0x000000c7, 0x00070070}, // f21 | |
| {0x000000c8, 0x00070071}, // f22 | |
| {0x000000c9, 0x00070072}, // f23 | |
| {0x000000ca, 0x00070073}, // f24 | |
| {0x000000d1, 0x000c00b1}, // mediaPause | |
| {0x000000d6, 0x000c0203}, // close | |
| {0x000000d7, 0x000c00b0}, // mediaPlay | |
| {0x000000d8, 0x000c00b3}, // mediaFastForward | |
| {0x000000d9, 0x000c00e5}, // bassBoost | |
| {0x000000da, 0x000c0208}, // print | |
| {0x000000e1, 0x000c0221}, // browserSearch | |
| {0x000000e8, 0x000c0070}, // brightnessDown | |
| {0x000000e9, 0x000c006f}, // brightnessUp | |
| {0x000000eb, 0x000100b5}, // displayToggleIntExt | |
| {0x000000ed, 0x000c007a}, // kbdIllumDown | |
| {0x000000ee, 0x000c0079}, // kbdIllumUp | |
| {0x000000ef, 0x000c028c}, // mailSend | |
| {0x000000f0, 0x000c0289}, // mailReply | |
| {0x000000f1, 0x000c028b}, // mailForward | |
| {0x000000f2, 0x000c0207}, // save | |
| {0x000000f3, 0x000c01a7}, // launchDocuments | |
| {0x000000fc, 0x000c0075}, // brightnessAuto | |
| {0x00000100, 0x00000018}, // microphoneMuteToggle | |
| {0x0000016e, 0x000c0060}, // info | |
| {0x00000172, 0x000c008d}, // programGuide | |
| {0x0000017a, 0x000c0061}, // closedCaptionToggle | |
| {0x0000017c, 0x000c0232}, // zoomToggle | |
| {0x0000017e, 0x000c01ae}, // launchKeyboardLayout | |
| {0x00000190, 0x000c01b7}, // launchAudioBrowser | |
| {0x00000195, 0x000c018e}, // launchCalendar | |
| {0x0000019d, 0x000c0083}, // mediaLast | |
| {0x000001a2, 0x000c009c}, // channelUp | |
| {0x000001a3, 0x000c009d}, // channelDown | |
| {0x000001aa, 0x000c022d}, // zoomIn | |
| {0x000001ab, 0x000c022e}, // zoomOut | |
| {0x000001ad, 0x000c0184}, // launchWordProcessor | |
| {0x000001af, 0x000c0186}, // launchSpreadsheet | |
| {0x000001b5, 0x000c018d}, // launchContacts | |
| {0x000001b7, 0x000c0072}, // brightnessToggle | |
| {0x000001b8, 0x000c01ab}, // spellCheck | |
| {0x000001b9, 0x000c019c}, // logOff | |
| {0x0000024b, 0x000c019f}, // launchControlPanel | |
| {0x0000024c, 0x000c01a2}, // selectTask | |
| {0x0000024d, 0x000c01b1}, // launchScreenSaver | |
| {0x0000024e, 0x000c00cf}, // speechInputToggle | |
| {0x0000024f, 0x000c01cb}, // launchAssistant | |
| {0x00000250, 0x000c029d}, // keyboardLayoutSelect | |
| {0x00000258, 0x000c0073}, // brightnessMinimum | |
| {0x00000259, 0x000c0074}, // brightnessMaximum | |
| {0x00000281, 0x00000017}, // privacyScreenToggle | |
| }; | |
| std::map<uint64_t, uint64_t> gtk_keyval_to_logical_key_map = { | |
| {0x000000a5, 0x00200000022}, // yen | |
| {0x0000fd06, 0x00100000405}, // 3270_EraseEOF | |
| {0x0000fd0e, 0x00100000503}, // 3270_Attn | |
| {0x0000fd15, 0x00100000402}, // 3270_Copy | |
| {0x0000fd16, 0x00100000d2f}, // 3270_Play | |
| {0x0000fd1b, 0x00100000406}, // 3270_ExSelect | |
| {0x0000fd1d, 0x00100000608}, // 3270_PrintScreen | |
| {0x0000fd1e, 0x0010000000d}, // 3270_Enter | |
| {0x0000fe03, 0x00200000105}, // ISO_Level3_Shift | |
| {0x0000fe08, 0x00100000709}, // ISO_Next_Group | |
| {0x0000fe0a, 0x0010000070a}, // ISO_Prev_Group | |
| {0x0000fe0c, 0x00100000707}, // ISO_First_Group | |
| {0x0000fe0e, 0x00100000708}, // ISO_Last_Group | |
| {0x0000fe20, 0x00100000009}, // ISO_Left_Tab | |
| {0x0000fe34, 0x0010000000d}, // ISO_Enter | |
| {0x0000ff08, 0x00100000008}, // BackSpace | |
| {0x0000ff09, 0x00100000009}, // Tab | |
| {0x0000ff0b, 0x00100000401}, // Clear | |
| {0x0000ff0d, 0x0010000000d}, // Return | |
| {0x0000ff13, 0x00100000509}, // Pause | |
| {0x0000ff14, 0x0010000010c}, // Scroll_Lock | |
| {0x0000ff1b, 0x0010000001b}, // Escape | |
| {0x0000ff21, 0x00100000719}, // Kanji | |
| {0x0000ff24, 0x0010000071b}, // Romaji | |
| {0x0000ff25, 0x00100000716}, // Hiragana | |
| {0x0000ff26, 0x0010000071a}, // Katakana | |
| {0x0000ff27, 0x00100000717}, // Hiragana_Katakana | |
| {0x0000ff28, 0x0010000071c}, // Zenkaku | |
| {0x0000ff29, 0x00100000715}, // Hankaku | |
| {0x0000ff2a, 0x0010000071d}, // Zenkaku_Hankaku | |
| {0x0000ff2f, 0x00100000714}, // Eisu_Shift | |
| {0x0000ff31, 0x00100000711}, // Hangul | |
| {0x0000ff34, 0x00100000712}, // Hangul_Hanja | |
| {0x0000ff37, 0x00100000703}, // Codeinput | |
| {0x0000ff3c, 0x00100000710}, // SingleCandidate | |
| {0x0000ff3e, 0x0010000070e}, // PreviousCandidate | |
| {0x0000ff50, 0x00100000306}, // Home | |
| {0x0000ff51, 0x00100000302}, // Left | |
| {0x0000ff52, 0x00100000304}, // Up | |
| {0x0000ff53, 0x00100000303}, // Right | |
| {0x0000ff54, 0x00100000301}, // Down | |
| {0x0000ff55, 0x00100000308}, // Page_Up | |
| {0x0000ff56, 0x00100000307}, // Page_Down | |
| {0x0000ff57, 0x00100000305}, // End | |
| {0x0000ff60, 0x0010000050c}, // Select | |
| {0x0000ff61, 0x00100000a0c}, // Print | |
| {0x0000ff62, 0x00100000506}, // Execute | |
| {0x0000ff63, 0x00100000407}, // Insert | |
| {0x0000ff65, 0x0010000040a}, // Undo | |
| {0x0000ff66, 0x00100000409}, // Redo | |
| {0x0000ff67, 0x00100000505}, // Menu | |
| {0x0000ff68, 0x00100000507}, // Find | |
| {0x0000ff69, 0x00100000504}, // Cancel | |
| {0x0000ff6a, 0x00100000508}, // Help | |
| {0x0000ff7e, 0x0010000070b}, // Mode_switch | |
| {0x0000ff7f, 0x0010000010a}, // Num_Lock | |
| {0x0000ff80, 0x00000000020}, // KP_Space | |
| {0x0000ff89, 0x00100000009}, // KP_Tab | |
| {0x0000ff8d, 0x0020000020d}, // KP_Enter | |
| {0x0000ff91, 0x00100000801}, // KP_F1 | |
| {0x0000ff92, 0x00100000802}, // KP_F2 | |
| {0x0000ff93, 0x00100000803}, // KP_F3 | |
| {0x0000ff94, 0x00100000804}, // KP_F4 | |
| {0x0000ff95, 0x00200000237}, // KP_Home | |
| {0x0000ff96, 0x00200000234}, // KP_Left | |
| {0x0000ff97, 0x00200000238}, // KP_Up | |
| {0x0000ff98, 0x00200000236}, // KP_Right | |
| {0x0000ff99, 0x00200000232}, // KP_Down | |
| {0x0000ff9a, 0x00200000239}, // KP_Page_Up | |
| {0x0000ff9b, 0x00200000233}, // KP_Page_Down | |
| {0x0000ff9c, 0x00200000231}, // KP_End | |
| {0x0000ff9e, 0x00200000230}, // KP_Insert | |
| {0x0000ff9f, 0x0020000022e}, // KP_Delete | |
| {0x0000ffaa, 0x0020000022a}, // KP_Multiply | |
| {0x0000ffab, 0x0020000022b}, // KP_Add | |
| {0x0000ffad, 0x0020000022d}, // KP_Subtract | |
| {0x0000ffae, 0x0000000002e}, // KP_Decimal | |
| {0x0000ffaf, 0x0020000022f}, // KP_Divide | |
| {0x0000ffb0, 0x00200000230}, // KP_0 | |
| {0x0000ffb1, 0x00200000231}, // KP_1 | |
| {0x0000ffb2, 0x00200000232}, // KP_2 | |
| {0x0000ffb3, 0x00200000233}, // KP_3 | |
| {0x0000ffb4, 0x00200000234}, // KP_4 | |
| {0x0000ffb5, 0x00200000235}, // KP_5 | |
| {0x0000ffb6, 0x00200000236}, // KP_6 | |
| {0x0000ffb7, 0x00200000237}, // KP_7 | |
| {0x0000ffb8, 0x00200000238}, // KP_8 | |
| {0x0000ffb9, 0x00200000239}, // KP_9 | |
| {0x0000ffbd, 0x0020000023d}, // KP_Equal | |
| {0x0000ffbe, 0x00100000801}, // F1 | |
| {0x0000ffbf, 0x00100000802}, // F2 | |
| {0x0000ffc0, 0x00100000803}, // F3 | |
| {0x0000ffc1, 0x00100000804}, // F4 | |
| {0x0000ffc2, 0x00100000805}, // F5 | |
| {0x0000ffc3, 0x00100000806}, // F6 | |
| {0x0000ffc4, 0x00100000807}, // F7 | |
| {0x0000ffc5, 0x00100000808}, // F8 | |
| {0x0000ffc6, 0x00100000809}, // F9 | |
| {0x0000ffc7, 0x0010000080a}, // F10 | |
| {0x0000ffc8, 0x0010000080b}, // F11 | |
| {0x0000ffc9, 0x0010000080c}, // F12 | |
| {0x0000ffca, 0x0010000080d}, // F13 | |
| {0x0000ffcb, 0x0010000080e}, // F14 | |
| {0x0000ffcc, 0x0010000080f}, // F15 | |
| {0x0000ffcd, 0x00100000810}, // F16 | |
| {0x0000ffce, 0x00100000811}, // F17 | |
| {0x0000ffcf, 0x00100000812}, // F18 | |
| {0x0000ffd0, 0x00100000813}, // F19 | |
| {0x0000ffd1, 0x00100000814}, // F20 | |
| {0x0000ffd2, 0x00100000815}, // F21 | |
| {0x0000ffd3, 0x00100000816}, // F22 | |
| {0x0000ffd4, 0x00100000817}, // F23 | |
| {0x0000ffd5, 0x00100000818}, // F24 | |
| {0x0000ffe1, 0x00200000102}, // Shift_L | |
| {0x0000ffe2, 0x00200000103}, // Shift_R | |
| {0x0000ffe3, 0x00200000100}, // Control_L | |
| {0x0000ffe4, 0x00200000101}, // Control_R | |
| {0x0000ffe5, 0x00100000104}, // Caps_Lock | |
| {0x0000ffe7, 0x00200000106}, // Meta_L | |
| {0x0000ffe8, 0x00200000107}, // Meta_R | |
| {0x0000ffe9, 0x00200000104}, // Alt_L | |
| {0x0000ffea, 0x00200000105}, // Alt_R | |
| {0x0000ffeb, 0x0010000010e}, // Super_L | |
| {0x0000ffec, 0x0010000010e}, // Super_R | |
| {0x0000ffed, 0x00100000108}, // Hyper_L | |
| {0x0000ffee, 0x00100000108}, // Hyper_R | |
| {0x0000ffff, 0x0010000007f}, // Delete | |
| {0x1008ff02, 0x00100000602}, // MonBrightnessUp | |
| {0x1008ff03, 0x00100000601}, // MonBrightnessDown | |
| {0x1008ff10, 0x0010000060a}, // Standby | |
| {0x1008ff11, 0x00100000a0f}, // AudioLowerVolume | |
| {0x1008ff12, 0x00100000a11}, // AudioMute | |
| {0x1008ff13, 0x00100000a10}, // AudioRaiseVolume | |
| {0x1008ff14, 0x00100000d2f}, // AudioPlay | |
| {0x1008ff15, 0x00100000a07}, // AudioStop | |
| {0x1008ff16, 0x00100000a09}, // AudioPrev | |
| {0x1008ff17, 0x00100000a08}, // AudioNext | |
| {0x1008ff18, 0x00100000c04}, // HomePage | |
| {0x1008ff19, 0x00100000b03}, // Mail | |
| {0x1008ff1b, 0x00100000c06}, // Search | |
| {0x1008ff1c, 0x00100000d30}, // AudioRecord | |
| {0x1008ff20, 0x00100000b02}, // Calendar | |
| {0x1008ff26, 0x00100000c01}, // Back | |
| {0x1008ff27, 0x00100000c03}, // Forward | |
| {0x1008ff28, 0x00100000c07}, // Stop | |
| {0x1008ff29, 0x00100000c05}, // Refresh | |
| {0x1008ff2a, 0x00100000607}, // PowerOff | |
| {0x1008ff2b, 0x0010000060b}, // WakeUp | |
| {0x1008ff2c, 0x00100000604}, // Eject | |
| {0x1008ff2d, 0x00100000b07}, // ScreenSaver | |
| {0x1008ff2f, 0x00200000002}, // Sleep | |
| {0x1008ff30, 0x00100000c02}, // Favorites | |
| {0x1008ff31, 0x00100000d2e}, // AudioPause | |
| {0x1008ff3e, 0x00100000d31}, // AudioRewind | |
| {0x1008ff56, 0x00100000a01}, // Close | |
| {0x1008ff57, 0x00100000402}, // Copy | |
| {0x1008ff58, 0x00100000404}, // Cut | |
| {0x1008ff61, 0x00100000605}, // LogOff | |
| {0x1008ff68, 0x00100000a0a}, // New | |
| {0x1008ff6b, 0x00100000a0b}, // Open | |
| {0x1008ff6d, 0x00100000408}, // Paste | |
| {0x1008ff6e, 0x00100000b0d}, // Phone | |
| {0x1008ff72, 0x00100000a03}, // Reply | |
| {0x1008ff77, 0x00100000a0d}, // Save | |
| {0x1008ff7b, 0x00100000a04}, // Send | |
| {0x1008ff7c, 0x00100000a0e}, // Spell | |
| {0x1008ff8b, 0x0010000050d}, // ZoomIn | |
| {0x1008ff8c, 0x0010000050e}, // ZoomOut | |
| {0x1008ff90, 0x00100000a02}, // MailForward | |
| {0x1008ff97, 0x00100000d2c}, // AudioForward | |
| {0x1008ffa7, 0x00200000000}, // Suspend | |
| }; | |
| void initialize_modifier_bit_to_checked_keys(GHashTable* table) { | |
| FlKeyEmbedderCheckedKey* data; | |
| data = g_new(FlKeyEmbedderCheckedKey, 1); | |
| g_hash_table_insert(table, GUINT_TO_POINTER(GDK_SHIFT_MASK), data); | |
| data->is_caps_lock = false; | |
| data->primary_physical_key = 0x0000700e1; // shiftLeft | |
| data->primary_logical_key = 0x00200000102; // shiftLeft | |
| data->secondary_logical_key = 0x00200000103; // shiftRight | |
| data = g_new(FlKeyEmbedderCheckedKey, 1); | |
| g_hash_table_insert(table, GUINT_TO_POINTER(GDK_CONTROL_MASK), data); | |
| data->is_caps_lock = false; | |
| data->primary_physical_key = 0x0000700e0; // controlLeft | |
| data->primary_logical_key = 0x00200000100; // controlLeft | |
| data->secondary_logical_key = 0x00200000101; // controlRight | |
| data = g_new(FlKeyEmbedderCheckedKey, 1); | |
| g_hash_table_insert(table, GUINT_TO_POINTER(GDK_MOD1_MASK), data); | |
| data->is_caps_lock = false; | |
| data->primary_physical_key = 0x0000700e2; // altLeft | |
| data->primary_logical_key = 0x00200000104; // altLeft | |
| data->secondary_logical_key = 0x00200000105; // altRight | |
| data = g_new(FlKeyEmbedderCheckedKey, 1); | |
| g_hash_table_insert(table, GUINT_TO_POINTER(GDK_META_MASK), data); | |
| data->is_caps_lock = false; | |
| data->primary_physical_key = 0x0000700e3; // metaLeft | |
| data->primary_logical_key = 0x00200000106; // metaLeft | |
| data->secondary_logical_key = 0x00200000107; // metaRight | |
| } | |
| void initialize_lock_bit_to_checked_keys(GHashTable* table) { | |
| FlKeyEmbedderCheckedKey* data; | |
| data = g_new(FlKeyEmbedderCheckedKey, 1); | |
| g_hash_table_insert(table, GUINT_TO_POINTER(GDK_LOCK_MASK), data); | |
| data->is_caps_lock = true; | |
| data->primary_physical_key = 0x000070039; // capsLock | |
| data->primary_logical_key = 0x00100000104; // capsLock | |
| data = g_new(FlKeyEmbedderCheckedKey, 1); | |
| g_hash_table_insert(table, GUINT_TO_POINTER(GDK_MOD2_MASK), data); | |
| data->is_caps_lock = false; | |
| data->primary_physical_key = 0x000070053; // numLock | |
| data->primary_logical_key = 0x0010000010a; // numLock | |
| } | |
| const std::vector<LayoutGoal> layout_goals = { | |
| LayoutGoal{0x41, 0x20, false}, // Space | |
| LayoutGoal{0x30, 0x22, false}, // Quote | |
| LayoutGoal{0x3b, 0x2c, false}, // Comma | |
| LayoutGoal{0x14, 0x2d, false}, // Minus | |
| LayoutGoal{0x3c, 0x2e, false}, // Period | |
| LayoutGoal{0x3d, 0x2f, false}, // Slash | |
| LayoutGoal{0x13, 0x30, true}, // Digit0 | |
| LayoutGoal{0x0a, 0x31, true}, // Digit1 | |
| LayoutGoal{0x0b, 0x32, true}, // Digit2 | |
| LayoutGoal{0x0c, 0x33, true}, // Digit3 | |
| LayoutGoal{0x0d, 0x34, true}, // Digit4 | |
| LayoutGoal{0x0e, 0x35, true}, // Digit5 | |
| LayoutGoal{0x0f, 0x36, true}, // Digit6 | |
| LayoutGoal{0x10, 0x37, true}, // Digit7 | |
| LayoutGoal{0x11, 0x38, true}, // Digit8 | |
| LayoutGoal{0x12, 0x39, true}, // Digit9 | |
| LayoutGoal{0x2f, 0x3b, false}, // Semicolon | |
| LayoutGoal{0x15, 0x3d, false}, // Equal | |
| LayoutGoal{0x22, 0x5b, false}, // BracketLeft | |
| LayoutGoal{0x33, 0x5c, false}, // Backslash | |
| LayoutGoal{0x23, 0x5d, false}, // BracketRight | |
| LayoutGoal{0x31, 0x60, false}, // Backquote | |
| LayoutGoal{0x26, 0x61, true}, // KeyA | |
| LayoutGoal{0x38, 0x62, true}, // KeyB | |
| LayoutGoal{0x36, 0x63, true}, // KeyC | |
| LayoutGoal{0x28, 0x64, true}, // KeyD | |
| LayoutGoal{0x1a, 0x65, true}, // KeyE | |
| LayoutGoal{0x29, 0x66, true}, // KeyF | |
| LayoutGoal{0x2a, 0x67, true}, // KeyG | |
| LayoutGoal{0x2b, 0x68, true}, // KeyH | |
| LayoutGoal{0x1f, 0x69, true}, // KeyI | |
| LayoutGoal{0x2c, 0x6a, true}, // KeyJ | |
| LayoutGoal{0x2d, 0x6b, true}, // KeyK | |
| LayoutGoal{0x2e, 0x6c, true}, // KeyL | |
| LayoutGoal{0x3a, 0x6d, true}, // KeyM | |
| LayoutGoal{0x39, 0x6e, true}, // KeyN | |
| LayoutGoal{0x20, 0x6f, true}, // KeyO | |
| LayoutGoal{0x21, 0x70, true}, // KeyP | |
| LayoutGoal{0x18, 0x71, true}, // KeyQ | |
| LayoutGoal{0x1b, 0x72, true}, // KeyR | |
| LayoutGoal{0x27, 0x73, true}, // KeyS | |
| LayoutGoal{0x1c, 0x74, true}, // KeyT | |
| LayoutGoal{0x1e, 0x75, true}, // KeyU | |
| LayoutGoal{0x37, 0x76, true}, // KeyV | |
| LayoutGoal{0x19, 0x77, true}, // KeyW | |
| LayoutGoal{0x35, 0x78, true}, // KeyX | |
| LayoutGoal{0x1d, 0x79, true}, // KeyY | |
| LayoutGoal{0x34, 0x7a, true}, // KeyZ | |
| LayoutGoal{0x5e, 0x200000020, false}, // IntlBackslash | |
| }; | |
| const uint64_t kValueMask = 0x000ffffffff; | |
| const uint64_t kUnicodePlane = 0x00000000000; | |
| const uint64_t kGtkPlane = 0x01500000000; |