/*
 * This file is auto-generated from keymaps.csv on 2022-10-18 11:59
 * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
 * To re-generate, run:
 *   keymap-gen --lang=glib2 --varname=qemu_input_map_qcode_to_sun code-map keymaps.csv qcode sun
*/
const guint16 qemu_input_map_qcode_to_sun[Q_KEY_CODE__MAX] = {
  [Q_KEY_CODE_0] = 0x27, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) -> sun:39 */
  [Q_KEY_CODE_1] = 0x1e, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) -> sun:30 */
  [Q_KEY_CODE_2] = 0x1f, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) -> sun:31 */
  [Q_KEY_CODE_3] = 0x20, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) -> sun:32 */
  [Q_KEY_CODE_4] = 0x21, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) -> sun:33 */
  [Q_KEY_CODE_5] = 0x22, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) -> sun:34 */
  [Q_KEY_CODE_6] = 0x23, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) -> sun:35 */
  [Q_KEY_CODE_7] = 0x24, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) -> sun:36 */
  [Q_KEY_CODE_8] = 0x25, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) -> sun:37 */
  [Q_KEY_CODE_9] = 0x26, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) -> sun:38 */
  [Q_KEY_CODE_A] = 0x4d, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -> sun:77 */
  [Q_KEY_CODE_AGAIN] = 0x3, /* qcode:Q_KEY_CODE_AGAIN (again) -> linux:129 (KEY_AGAIN) -> sun:3 */
  [Q_KEY_CODE_ALT] = 0x13, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KEY_LEFTALT) -> sun:19 */
  [Q_KEY_CODE_ALT_R] = 0xd, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linux:100 (KEY_RIGHTALT) -> sun:13 */
  [Q_KEY_CODE_APOSTROPHE] = 0x57, /* qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) -> linux:40 (KEY_APOSTROPHE) -> sun:87 */
  [Q_KEY_CODE_ASTERISK] = 0x2f, /* qcode:Q_KEY_CODE_ASTERISK (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> sun:47 */
  [Q_KEY_CODE_B] = 0x68, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -> sun:104 */
  [Q_KEY_CODE_BACKSLASH] = 0x58, /* qcode:Q_KEY_CODE_BACKSLASH (backslash) -> linux:43 (KEY_BACKSLASH) -> sun:88 */
  [Q_KEY_CODE_BACKSPACE] = 0x2b, /* qcode:Q_KEY_CODE_BACKSPACE (backspace) -> linux:14 (KEY_BACKSPACE) -> sun:43 */
  [Q_KEY_CODE_BRACKET_LEFT] = 0x40, /* qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) -> linux:26 (KEY_LEFTBRACE) -> sun:64 */
  [Q_KEY_CODE_BRACKET_RIGHT] = 0x41, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> sun:65 */
  [Q_KEY_CODE_C] = 0x66, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -> sun:102 */
  [Q_KEY_CODE_CAPS_LOCK] = 0x77, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) -> linux:58 (KEY_CAPSLOCK) -> sun:119 */
  [Q_KEY_CODE_COMMA] = 0x6b, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:51 (KEY_COMMA) -> sun:107 */
  [Q_KEY_CODE_COMPOSE] = 0x43, /* qcode:Q_KEY_CODE_COMPOSE (compose) -> linux:127 (KEY_COMPOSE) -> sun:67 */
  [Q_KEY_CODE_COPY] = 0x33, /* qcode:Q_KEY_CODE_COPY (copy) -> linux:133 (KEY_COPY) -> sun:51 */
  [Q_KEY_CODE_CTRL] = 0x4c, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 (KEY_LEFTCTRL) -> sun:76 */
  [Q_KEY_CODE_CTRL_R] = 0x4c, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> linux:97 (KEY_RIGHTCTRL) -> sun:76 */
  [Q_KEY_CODE_CUT] = 0x61, /* qcode:Q_KEY_CODE_CUT (cut) -> linux:137 (KEY_CUT) -> sun:97 */
  [Q_KEY_CODE_D] = 0x4f, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -> sun:79 */
  [Q_KEY_CODE_DELETE] = 0x42, /* qcode:Q_KEY_CODE_DELETE (delete) -> linux:111 (KEY_DELETE) -> sun:66 */
  [Q_KEY_CODE_DOT] = 0x6c, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KEY_DOT) -> sun:108 */
  [Q_KEY_CODE_DOWN] = 0x1b, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:108 (KEY_DOWN) -> sun:27 */
  [Q_KEY_CODE_E] = 0x38, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -> sun:56 */
  [Q_KEY_CODE_END] = 0x4a, /* qcode:Q_KEY_CODE_END (end) -> linux:107 (KEY_END) -> sun:74 */
  [Q_KEY_CODE_EQUAL] = 0x29, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:13 (KEY_EQUAL) -> sun:41 */
  [Q_KEY_CODE_ESC] = 0x1d, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY_ESC) -> sun:29 */
  [Q_KEY_CODE_F] = 0x50, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -> sun:80 */
  [Q_KEY_CODE_F1] = 0x5, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F1) -> sun:5 */
  [Q_KEY_CODE_F10] = 0x7, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KEY_F10) -> sun:7 */
  [Q_KEY_CODE_F11] = 0x9, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KEY_F11) -> sun:9 */
  [Q_KEY_CODE_F12] = 0xb, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KEY_F12) -> sun:11 */
  [Q_KEY_CODE_F2] = 0x6, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F2) -> sun:6 */
  [Q_KEY_CODE_F3] = 0x8, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F3) -> sun:8 */
  [Q_KEY_CODE_F4] = 0xa, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F4) -> sun:10 */
  [Q_KEY_CODE_F5] = 0xc, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F5) -> sun:12 */
  [Q_KEY_CODE_F6] = 0xe, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F6) -> sun:14 */
  [Q_KEY_CODE_F7] = 0x10, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F7) -> sun:16 */
  [Q_KEY_CODE_F8] = 0x11, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F8) -> sun:17 */
  [Q_KEY_CODE_F9] = 0x12, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F9) -> sun:18 */
  [Q_KEY_CODE_FIND] = 0x5f, /* qcode:Q_KEY_CODE_FIND (find) -> linux:136 (KEY_FIND) -> sun:95 */
  [Q_KEY_CODE_FRONT] = 0x31, /* qcode:Q_KEY_CODE_FRONT (front) -> linux:132 (KEY_FRONT) -> sun:49 */
  [Q_KEY_CODE_G] = 0x51, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -> sun:81 */
  [Q_KEY_CODE_GRAVE_ACCENT] = 0x2a, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) -> linux:41 (KEY_GRAVE) -> sun:42 */
  [Q_KEY_CODE_H] = 0x52, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -> sun:82 */
  [Q_KEY_CODE_HELP] = 0x76, /* qcode:Q_KEY_CODE_HELP (help) -> linux:138 (KEY_HELP) -> sun:118 */
  [Q_KEY_CODE_HOME] = 0x34, /* qcode:Q_KEY_CODE_HOME (home) -> linux:102 (KEY_HOME) -> sun:52 */
  [Q_KEY_CODE_I] = 0x3d, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -> sun:61 */
  [Q_KEY_CODE_INSERT] = 0x2c, /* qcode:Q_KEY_CODE_INSERT (insert) -> linux:110 (KEY_INSERT) -> sun:44 */
  [Q_KEY_CODE_J] = 0x53, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -> sun:83 */
  [Q_KEY_CODE_K] = 0x54, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -> sun:84 */
  [Q_KEY_CODE_KP_0] = 0x5e, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 (KEY_KP0) -> sun:94 */
  [Q_KEY_CODE_KP_1] = 0x70, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 (KEY_KP1) -> sun:112 */
  [Q_KEY_CODE_KP_2] = 0x71, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 (KEY_KP2) -> sun:113 */
  [Q_KEY_CODE_KP_3] = 0x72, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 (KEY_KP3) -> sun:114 */
  [Q_KEY_CODE_KP_4] = 0x5b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 (KEY_KP4) -> sun:91 */
  [Q_KEY_CODE_KP_5] = 0x5c, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 (KEY_KP5) -> sun:92 */
  [Q_KEY_CODE_KP_6] = 0x5d, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 (KEY_KP6) -> sun:93 */
  [Q_KEY_CODE_KP_7] = 0x44, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 (KEY_KP7) -> sun:68 */
  [Q_KEY_CODE_KP_8] = 0x45, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 (KEY_KP8) -> sun:69 */
  [Q_KEY_CODE_KP_9] = 0x46, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 (KEY_KP9) -> sun:70 */
  [Q_KEY_CODE_KP_ADD] = 0x7d, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> linux:78 (KEY_KPPLUS) -> sun:125 */
  [Q_KEY_CODE_KP_DECIMAL] = 0x32, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) -> linux:83 (KEY_KPDOT) -> sun:50 */
  [Q_KEY_CODE_KP_DIVIDE] = 0x2e, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) -> linux:98 (KEY_KPSLASH) -> sun:46 */
  [Q_KEY_CODE_KP_ENTER] = 0x5a, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter) -> linux:96 (KEY_KPENTER) -> sun:90 */
  [Q_KEY_CODE_KP_EQUALS] = 0x2d, /* qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) -> linux:117 (KEY_KPEQUAL) -> sun:45 */
  [Q_KEY_CODE_KP_MULTIPLY] = 0x2f, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> sun:47 */
  [Q_KEY_CODE_KP_SUBTRACT] = 0x47, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) -> linux:74 (KEY_KPMINUS) -> sun:71 */
  [Q_KEY_CODE_L] = 0x55, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -> sun:85 */
  [Q_KEY_CODE_LEFT] = 0x18, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:105 (KEY_LEFT) -> sun:24 */
  [Q_KEY_CODE_LESS] = 0x7c, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 (KEY_102ND) -> sun:124 */
  [Q_KEY_CODE_LF] = 0x6f, /* qcode:Q_KEY_CODE_LF (lf) -> linux:101 (KEY_LINEFEED) -> sun:111 */
  [Q_KEY_CODE_M] = 0x6a, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -> sun:106 */
  [Q_KEY_CODE_META_L] = 0x78, /* qcode:Q_KEY_CODE_META_L (meta_l) -> linux:125 (KEY_LEFTMETA) -> sun:120 */
  [Q_KEY_CODE_META_R] = 0x7a, /* qcode:Q_KEY_CODE_META_R (meta_r) -> linux:126 (KEY_RIGHTMETA) -> sun:122 */
  [Q_KEY_CODE_MINUS] = 0x28, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:12 (KEY_MINUS) -> sun:40 */
  [Q_KEY_CODE_N] = 0x69, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -> sun:105 */
  [Q_KEY_CODE_NUM_LOCK] = 0x62, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) -> linux:69 (KEY_NUMLOCK) -> sun:98 */
  [Q_KEY_CODE_O] = 0x3e, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -> sun:62 */
  [Q_KEY_CODE_OPEN] = 0x48, /* qcode:Q_KEY_CODE_OPEN (open) -> linux:134 (KEY_OPEN) -> sun:72 */
  [Q_KEY_CODE_P] = 0x3f, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -> sun:63 */
  [Q_KEY_CODE_PASTE] = 0x49, /* qcode:Q_KEY_CODE_PASTE (paste) -> linux:135 (KEY_PASTE) -> sun:73 */
  [Q_KEY_CODE_PAUSE] = 0x15, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linux:119 (KEY_PAUSE) -> sun:21 */
  [Q_KEY_CODE_PGDN] = 0x7b, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:109 (KEY_PAGEDOWN) -> sun:123 */
  [Q_KEY_CODE_PGUP] = 0x60, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:104 (KEY_PAGEUP) -> sun:96 */
  [Q_KEY_CODE_PRINT] = 0x16, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:99 (KEY_SYSRQ) -> sun:22 */
  [Q_KEY_CODE_PROPS] = 0x19, /* qcode:Q_KEY_CODE_PROPS (props) -> linux:130 (KEY_PROPS) -> sun:25 */
  [Q_KEY_CODE_Q] = 0x36, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -> sun:54 */
  [Q_KEY_CODE_R] = 0x39, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -> sun:57 */
  [Q_KEY_CODE_RET] = 0x59, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KEY_ENTER) -> sun:89 */
  [Q_KEY_CODE_RIGHT] = 0x1c, /* qcode:Q_KEY_CODE_RIGHT (right) -> linux:106 (KEY_RIGHT) -> sun:28 */
  [Q_KEY_CODE_S] = 0x4e, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -> sun:78 */
  [Q_KEY_CODE_SCROLL_LOCK] = 0x17, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) -> linux:70 (KEY_SCROLLLOCK) -> sun:23 */
  [Q_KEY_CODE_SEMICOLON] = 0x56, /* qcode:Q_KEY_CODE_SEMICOLON (semicolon) -> linux:39 (KEY_SEMICOLON) -> sun:86 */
  [Q_KEY_CODE_SHIFT] = 0x63, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:42 (KEY_LEFTSHIFT) -> sun:99 */
  [Q_KEY_CODE_SHIFT_R] = 0x6e, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> linux:54 (KEY_RIGHTSHIFT) -> sun:110 */
  [Q_KEY_CODE_SLASH] = 0x6d, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:53 (KEY_SLASH) -> sun:109 */
  [Q_KEY_CODE_SPC] = 0x79, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KEY_SPACE) -> sun:121 */
  [Q_KEY_CODE_STOP] = 0x1, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:128 (KEY_STOP) -> sun:1 */
  [Q_KEY_CODE_SYSRQ] = 0x16, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:99 (KEY_SYSRQ) -> sun:22 */
  [Q_KEY_CODE_T] = 0x3a, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -> sun:58 */
  [Q_KEY_CODE_TAB] = 0x35, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY_TAB) -> sun:53 */
  [Q_KEY_CODE_U] = 0x3c, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -> sun:60 */
  [Q_KEY_CODE_UNDO] = 0x1a, /* qcode:Q_KEY_CODE_UNDO (undo) -> linux:131 (KEY_UNDO) -> sun:26 */
  [Q_KEY_CODE_UP] = 0x14, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KEY_UP) -> sun:20 */
  [Q_KEY_CODE_V] = 0x67, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -> sun:103 */
  [Q_KEY_CODE_W] = 0x37, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -> sun:55 */
  [Q_KEY_CODE_X] = 0x65, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -> sun:101 */
  [Q_KEY_CODE_Y] = 0x3b, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -> sun:59 */
  [Q_KEY_CODE_Z] = 0x64, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -> sun:100 */
};
const guint qemu_input_map_qcode_to_sun_len = sizeof(qemu_input_map_qcode_to_sun)/sizeof(qemu_input_map_qcode_to_sun[0]);
