// 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
    {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, 0x01100070089},  // yen
    {0x0000fd06, 0x01000000405},  // 3270_EraseEOF
    {0x0000fd0e, 0x01000000503},  // 3270_Attn
    {0x0000fd15, 0x01000000402},  // 3270_Copy
    {0x0000fd16, 0x01000000d2f},  // 3270_Play
    {0x0000fd1b, 0x01000000406},  // 3270_ExSelect
    {0x0000fd1d, 0x01000000608},  // 3270_PrintScreen
    {0x0000fd1e, 0x0100000000d},  // 3270_Enter
    {0x0000fe03, 0x40000000102},  // ISO_Level3_Shift
    {0x0000fe08, 0x01000000709},  // ISO_Next_Group
    {0x0000fe0a, 0x0100000070a},  // ISO_Prev_Group
    {0x0000fe0c, 0x01000000707},  // ISO_First_Group
    {0x0000fe0e, 0x01000000708},  // ISO_Last_Group
    {0x0000fe20, 0x01000000009},  // ISO_Left_Tab
    {0x0000fe34, 0x0100000000d},  // ISO_Enter
    {0x0000ff08, 0x01000000008},  // BackSpace
    {0x0000ff09, 0x01000000009},  // Tab
    {0x0000ff0b, 0x01000000401},  // Clear
    {0x0000ff0d, 0x0100000000d},  // Return
    {0x0000ff13, 0x01000000509},  // Pause
    {0x0000ff14, 0x0100000010c},  // Scroll_Lock
    {0x0000ff1b, 0x0100000001b},  // Escape
    {0x0000ff21, 0x01000000719},  // Kanji
    {0x0000ff24, 0x0100000071b},  // Romaji
    {0x0000ff25, 0x01000000716},  // Hiragana
    {0x0000ff26, 0x0100000071a},  // Katakana
    {0x0000ff27, 0x01000000717},  // Hiragana_Katakana
    {0x0000ff28, 0x0100000071c},  // Zenkaku
    {0x0000ff29, 0x01000000715},  // Hankaku
    {0x0000ff2a, 0x0100000071d},  // Zenkaku_Hankaku
    {0x0000ff2f, 0x01000000714},  // Eisu_Shift
    {0x0000ff31, 0x01000000711},  // Hangul
    {0x0000ff34, 0x01000000712},  // Hangul_Hanja
    {0x0000ff37, 0x01000000703},  // Codeinput
    {0x0000ff3c, 0x01000000710},  // SingleCandidate
    {0x0000ff3e, 0x0100000070e},  // PreviousCandidate
    {0x0000ff50, 0x01000000306},  // Home
    {0x0000ff51, 0x01000000302},  // Left
    {0x0000ff52, 0x01000000304},  // Up
    {0x0000ff53, 0x01000000303},  // Right
    {0x0000ff54, 0x01000000301},  // Down
    {0x0000ff55, 0x01000000308},  // Page_Up
    {0x0000ff56, 0x01000000307},  // Page_Down
    {0x0000ff57, 0x01000000305},  // End
    {0x0000ff60, 0x0100000050c},  // Select
    {0x0000ff61, 0x01000000a0c},  // Print
    {0x0000ff62, 0x01000000506},  // Execute
    {0x0000ff63, 0x01000000407},  // Insert
    {0x0000ff65, 0x0100000040a},  // Undo
    {0x0000ff66, 0x01000000409},  // Redo
    {0x0000ff67, 0x01000000505},  // Menu
    {0x0000ff68, 0x01000000507},  // Find
    {0x0000ff69, 0x01000000504},  // Cancel
    {0x0000ff6a, 0x01000000508},  // Help
    {0x0000ff7e, 0x0100000070b},  // Mode_switch
    {0x0000ff7f, 0x0100000010a},  // Num_Lock
    {0x0000ff80, 0x00000000020},  // KP_Space
    {0x0000ff89, 0x01000000009},  // KP_Tab
    {0x0000ff8d, 0x5000000000d},  // KP_Enter
    {0x0000ff91, 0x01000000801},  // KP_F1
    {0x0000ff92, 0x01000000802},  // KP_F2
    {0x0000ff93, 0x01000000803},  // KP_F3
    {0x0000ff94, 0x01000000804},  // KP_F4
    {0x0000ff95, 0x50000000037},  // KP_Home
    {0x0000ff96, 0x50000000034},  // KP_Left
    {0x0000ff97, 0x50000000038},  // KP_Up
    {0x0000ff98, 0x50000000036},  // KP_Right
    {0x0000ff99, 0x50000000032},  // KP_Down
    {0x0000ff9a, 0x50000000039},  // KP_Page_Up
    {0x0000ff9b, 0x50000000033},  // KP_Page_Down
    {0x0000ff9c, 0x50000000031},  // KP_End
    {0x0000ff9e, 0x50000000030},  // KP_Insert
    {0x0000ff9f, 0x5000000002e},  // KP_Delete
    {0x0000ffaa, 0x5000000002a},  // KP_Multiply
    {0x0000ffab, 0x5000000002b},  // KP_Add
    {0x0000ffad, 0x5000000002d},  // KP_Subtract
    {0x0000ffae, 0x0000000002e},  // KP_Decimal
    {0x0000ffaf, 0x5000000002f},  // KP_Divide
    {0x0000ffb0, 0x50000000030},  // KP_0
    {0x0000ffb1, 0x50000000031},  // KP_1
    {0x0000ffb2, 0x50000000032},  // KP_2
    {0x0000ffb3, 0x50000000033},  // KP_3
    {0x0000ffb4, 0x50000000034},  // KP_4
    {0x0000ffb5, 0x50000000035},  // KP_5
    {0x0000ffb6, 0x50000000036},  // KP_6
    {0x0000ffb7, 0x50000000037},  // KP_7
    {0x0000ffb8, 0x50000000038},  // KP_8
    {0x0000ffb9, 0x50000000039},  // KP_9
    {0x0000ffbd, 0x5000000003d},  // KP_Equal
    {0x0000ffbe, 0x01000000801},  // F1
    {0x0000ffbf, 0x01000000802},  // F2
    {0x0000ffc0, 0x01000000803},  // F3
    {0x0000ffc1, 0x01000000804},  // F4
    {0x0000ffc2, 0x01000000805},  // F5
    {0x0000ffc3, 0x01000000806},  // F6
    {0x0000ffc4, 0x01000000807},  // F7
    {0x0000ffc5, 0x01000000808},  // F8
    {0x0000ffc6, 0x01000000809},  // F9
    {0x0000ffc7, 0x0100000080a},  // F10
    {0x0000ffc8, 0x0100000080b},  // F11
    {0x0000ffc9, 0x0100000080c},  // F12
    {0x0000ffca, 0x0100000080d},  // F13
    {0x0000ffcb, 0x0100000080e},  // F14
    {0x0000ffcc, 0x0100000080f},  // F15
    {0x0000ffcd, 0x01000000810},  // F16
    {0x0000ffce, 0x01000000811},  // F17
    {0x0000ffcf, 0x01000000812},  // F18
    {0x0000ffd0, 0x01000000813},  // F19
    {0x0000ffd1, 0x01000000814},  // F20
    {0x0000ffd2, 0x01000000815},  // F21
    {0x0000ffd3, 0x01000000816},  // F22
    {0x0000ffd4, 0x01000000817},  // F23
    {0x0000ffd5, 0x01000000818},  // F24
    {0x0000ffe1, 0x3000000010d},  // Shift_L
    {0x0000ffe2, 0x4000000010d},  // Shift_R
    {0x0000ffe3, 0x30000000105},  // Control_L
    {0x0000ffe4, 0x40000000105},  // Control_R
    {0x0000ffe5, 0x01000000104},  // Caps_Lock
    {0x0000ffe7, 0x30000000109},  // Meta_L
    {0x0000ffe8, 0x40000000109},  // Meta_R
    {0x0000ffe9, 0x30000000102},  // Alt_L
    {0x0000ffea, 0x40000000102},  // Alt_R
    {0x0000ffeb, 0x0100000010e},  // Super_L
    {0x0000ffec, 0x0100000010e},  // Super_R
    {0x0000ffed, 0x01000000108},  // Hyper_L
    {0x0000ffee, 0x01000000108},  // Hyper_R
    {0x0000ffff, 0x0100000007f},  // Delete
    {0x1008ff02, 0x01000000602},  // MonBrightnessUp
    {0x1008ff03, 0x01000000601},  // MonBrightnessDown
    {0x1008ff10, 0x0100000060a},  // Standby
    {0x1008ff11, 0x01000000a0f},  // AudioLowerVolume
    {0x1008ff12, 0x01000000a11},  // AudioMute
    {0x1008ff13, 0x01000000a10},  // AudioRaiseVolume
    {0x1008ff14, 0x01000000d2f},  // AudioPlay
    {0x1008ff15, 0x01000000a07},  // AudioStop
    {0x1008ff16, 0x01000000a09},  // AudioPrev
    {0x1008ff17, 0x01000000a08},  // AudioNext
    {0x1008ff18, 0x01000000c04},  // HomePage
    {0x1008ff19, 0x01000000b03},  // Mail
    {0x1008ff1b, 0x01000000c06},  // Search
    {0x1008ff1c, 0x01000000d30},  // AudioRecord
    {0x1008ff20, 0x01000000b02},  // Calendar
    {0x1008ff26, 0x01000000c01},  // Back
    {0x1008ff27, 0x01000000c03},  // Forward
    {0x1008ff28, 0x01000000c07},  // Stop
    {0x1008ff29, 0x01000000c05},  // Refresh
    {0x1008ff2a, 0x01000000607},  // PowerOff
    {0x1008ff2b, 0x0100000060b},  // WakeUp
    {0x1008ff2c, 0x01000000604},  // Eject
    {0x1008ff2d, 0x01000000b07},  // ScreenSaver
    {0x1008ff2f, 0x01100010082},  // Sleep
    {0x1008ff30, 0x01000000c02},  // Favorites
    {0x1008ff31, 0x01000000d2e},  // AudioPause
    {0x1008ff3e, 0x01000000d31},  // AudioRewind
    {0x1008ff56, 0x01000000a01},  // Close
    {0x1008ff57, 0x01000000402},  // Copy
    {0x1008ff58, 0x01000000404},  // Cut
    {0x1008ff61, 0x01000000605},  // LogOff
    {0x1008ff68, 0x01000000a0a},  // New
    {0x1008ff6b, 0x01000000a0b},  // Open
    {0x1008ff6d, 0x01000000408},  // Paste
    {0x1008ff6e, 0x01000000b0d},  // Phone
    {0x1008ff72, 0x01000000a03},  // Reply
    {0x1008ff77, 0x01000000a0d},  // Save
    {0x1008ff7b, 0x01000000a04},  // Send
    {0x1008ff7c, 0x01000000a0e},  // Spell
    {0x1008ff8b, 0x0100000050d},  // ZoomIn
    {0x1008ff8c, 0x0100000050e},  // ZoomOut
    {0x1008ff90, 0x01000000a02},  // MailForward
    {0x1008ff97, 0x01000000d2c},  // AudioForward
    {0x1008ffa7, 0x01100000014},  // 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 = 0x3000000010d;    // shiftLeft
  data->secondary_logical_key = 0x4000000010d;  // 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 = 0x30000000105;    // controlLeft
  data->secondary_logical_key = 0x40000000105;  // 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 = 0x30000000102;    // altLeft
  data->secondary_logical_key = 0x40000000102;  // 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 = 0x30000000109;    // metaLeft
  data->secondary_logical_key = 0x40000000109;  // 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 = 0x01000000104;  // 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 = 0x0100000010a;  // numLock
}
