Add preliminary PS/2 keyboard support
diff --git a/src/scan_codes.c b/src/scan_codes.c
new file mode 100644
index 0000000..530fd91
--- /dev/null
+++ b/src/scan_codes.c
@@ -0,0 +1,553 @@
+#include "kbd.h"
+
+
+const struct kbd_scan_codes scan_code_set_1[0xff] =
+{
+	[41] = { .ascii = true, .symbol = '`',
+		.up_symbol = '~', .prefix = 169 },
+	[169] = { .ascii = true, .symbol = '`',
+		.up_symbol = '~', .prefix = 169, .brk = true },
+	[2] = { .ascii = true, .symbol = '1',
+		.up_symbol = '!', .prefix = 130 },
+	[130] = { .ascii = true, .symbol = '1',
+		.up_symbol = '!', .prefix = 130, .brk = true },
+	[3] = { .ascii = true, .symbol = '2',
+		.up_symbol = '@', .prefix = 131 },
+	[131] = { .ascii = true, .symbol = '2',
+		.up_symbol = '@', .prefix = 131, .brk = true },
+	[4] = { .ascii = true, .symbol = '3',
+		.up_symbol = '#', .prefix = 132 },
+	[132] = { .ascii = true, .symbol = '3',
+		.up_symbol = '#', .prefix = 132, .brk = true },
+	[5] = { .ascii = true, .symbol = '4',
+		.up_symbol = '$', .prefix = 133 },
+	[133] = { .ascii = true, .symbol = '4',
+		.up_symbol = '$', .prefix = 133, .brk = true },
+	[6] = { .ascii = true, .symbol = '5',
+		.up_symbol = '%', .prefix = 134 },
+	[134] = { .ascii = true, .symbol = '5',
+		.up_symbol = '%', .prefix = 134, .brk = true },
+	[7] = { .ascii = true, .symbol = '6',
+		.up_symbol = '^', .prefix = 135 },
+	[135] = { .ascii = true, .symbol = '6',
+		.up_symbol = '^', .prefix = 135, .brk = true },
+	[8] = { .ascii = true, .symbol = '7',
+		.up_symbol = '&', .prefix = 136 },
+	[136] = { .ascii = true, .symbol = '7',
+		.up_symbol = '&', .prefix = 136, .brk = true },
+	[9] = { .ascii = true, .symbol = '8',
+		.up_symbol = '*', .prefix = 137 },
+	[137] = { .ascii = true, .symbol = '8',
+		.up_symbol = '*', .prefix = 137, .brk = true },
+	[10] = { .ascii = true, .symbol = '9',
+		.up_symbol = '(', .prefix = 138 },
+	[138] = { .ascii = true, .symbol = '9',
+		.up_symbol = '(', .prefix = 138, .brk = true },
+	[11] = { .ascii = true, .symbol = '0',
+		.up_symbol = ')', .prefix = 139 },
+	[139] = { .ascii = true, .symbol = '0',
+		.up_symbol = ')', .prefix = 139, .brk = true },
+	[12] = { .ascii = true, .symbol = '-',
+		.up_symbol = '_', .prefix = 140 },
+	[140] = { .ascii = true, .symbol = '-',
+		.up_symbol = '_', .prefix = 140, .brk = true },
+	[13] = { .ascii = true, .symbol = '=',
+		.up_symbol = '+', .prefix = 141 },
+	[141] = { .ascii = true, .symbol = '=',
+		.up_symbol = '+', .prefix = 141, .brk = true },
+	[14] = { .ascii = false, .symbol = KBD_BACKSPACE,
+		.up_symbol = NULL, .prefix = 142 },
+	[142] = { .ascii = false, .symbol = KBD_BACKSPACE,
+		.up_symbol = NULL, .prefix = 142, .brk = true },
+	[15] = { .ascii = false, .symbol = KBD_TAB,
+		.up_symbol = NULL, .prefix = 143 },
+	[143] = { .ascii = false, .symbol = KBD_TAB,
+		.up_symbol = NULL, .prefix = 143, .brk = true },
+	[16] = { .ascii = true, .symbol = 'q',
+		.up_symbol = 'Q', .prefix = 144 },
+	[144] = { .ascii = true, .symbol = 'q',
+		.up_symbol = 'Q', .prefix = 144, .brk = true },
+	[17] = { .ascii = true, .symbol = 'w',
+		.up_symbol = 'W', .prefix = 145 },
+	[145] = { .ascii = true, .symbol = 'w',
+		.up_symbol = 'W', .prefix = 145, .brk = true },
+	[18] = { .ascii = true, .symbol = 'e',
+		.up_symbol = 'E', .prefix = 146 },
+	[146] = { .ascii = true, .symbol = 'e',
+		.up_symbol = 'E', .prefix = 146, .brk = true },
+	[19] = { .ascii = true, .symbol = 'r',
+		.up_symbol = 'R', .prefix = 147 },
+	[147] = { .ascii = true, .symbol = 'r',
+		.up_symbol = 'R', .prefix = 147, .brk = true },
+	[20] = { .ascii = true, .symbol = 't',
+		.up_symbol = 'T', .prefix = 148 },
+	[148] = { .ascii = true, .symbol = 't',
+		.up_symbol = 'T', .prefix = 148, .brk = true },
+	[21] = { .ascii = true, .symbol = 'y',
+		.up_symbol = 'Y', .prefix = 149 },
+	[149] = { .ascii = true, .symbol = 'y',
+		.up_symbol = 'Y', .prefix = 149, .brk = true },
+	[22] = { .ascii = true, .symbol = 'u',
+		.up_symbol = 'U', .prefix = 150 },
+	[150] = { .ascii = true, .symbol = 'u',
+		.up_symbol = 'U', .prefix = 150, .brk = true },
+	[23] = { .ascii = true, .symbol = 'i',
+		.up_symbol = 'I', .prefix = 151 },
+	[151] = { .ascii = true, .symbol = 'i',
+		.up_symbol = 'I', .prefix = 151, .brk = true },
+	[24] = { .ascii = true, .symbol = 'o',
+		.up_symbol = 'O', .prefix = 152 },
+	[152] = { .ascii = true, .symbol = 'o',
+		.up_symbol = 'O', .prefix = 152, .brk = true },
+	[25] = { .ascii = true, .symbol = 'p',
+		.up_symbol = 'P', .prefix = 153 },
+	[153] = { .ascii = true, .symbol = 'p',
+		.up_symbol = 'P', .prefix = 153, .brk = true },
+	[26] = { .ascii = true, .symbol = '[',
+		.up_symbol = '{', .prefix = 154 },
+	[154] = { .ascii = true, .symbol = '[',
+		.up_symbol = '{', .prefix = 154, .brk = true },
+	[27] = { .ascii = true, .symbol = ']',
+		.up_symbol = '}', .prefix = 155 },
+	[155] = { .ascii = true, .symbol = ']',
+		.up_symbol = '}', .prefix = 155, .brk = true },
+	[58] = { .ascii = false, .symbol = KBD_CAPS_LOCK,
+		.up_symbol = NULL, .prefix = 186 },
+	[186] = { .ascii = false, .symbol = KBD_CAPS_LOCK,
+		.up_symbol = NULL, .prefix = 186, .brk = true },
+	[30] = { .ascii = true, .symbol = 'a',
+		.up_symbol = 'A', .prefix = 158 },
+	[158] = { .ascii = true, .symbol = 'a',
+		.up_symbol = 'A', .prefix = 158, .brk = true },
+	[31] = { .ascii = true, .symbol = 's',
+		.up_symbol = 'S', .prefix = 159 },
+	[159] = { .ascii = true, .symbol = 's',
+		.up_symbol = 'S', .prefix = 159, .brk = true },
+	[32] = { .ascii = true, .symbol = 'd',
+		.up_symbol = 'D', .prefix = 160 },
+	[160] = { .ascii = true, .symbol = 'd',
+		.up_symbol = 'D', .prefix = 160, .brk = true },
+	[33] = { .ascii = true, .symbol = 'f',
+		.up_symbol = 'F', .prefix = 161 },
+	[161] = { .ascii = true, .symbol = 'f',
+		.up_symbol = 'F', .prefix = 161, .brk = true },
+	[34] = { .ascii = true, .symbol = 'g',
+		.up_symbol = 'G', .prefix = 162 },
+	[162] = { .ascii = true, .symbol = 'g',
+		.up_symbol = 'G', .prefix = 162, .brk = true },
+	[35] = { .ascii = true, .symbol = 'h',
+		.up_symbol = 'H', .prefix = 163 },
+	[163] = { .ascii = true, .symbol = 'h',
+		.up_symbol = 'H', .prefix = 163, .brk = true },
+	[36] = { .ascii = true, .symbol = 'j',
+		.up_symbol = 'J', .prefix = 164 },
+	[164] = { .ascii = true, .symbol = 'j',
+		.up_symbol = 'J', .prefix = 164, .brk = true },
+	[37] = { .ascii = true, .symbol = 'k',
+		.up_symbol = 'K', .prefix = 165 },
+	[165] = { .ascii = true, .symbol = 'k',
+		.up_symbol = 'K', .prefix = 165, .brk = true },
+	[38] = { .ascii = true, .symbol = 'l',
+		.up_symbol = 'L', .prefix = 166 },
+	[166] = { .ascii = true, .symbol = 'l',
+		.up_symbol = 'L', .prefix = 166, .brk = true },
+	[39] = { .ascii = true, .symbol = ';',
+		.up_symbol = ':', .prefix = 167 },
+	[167] = { .ascii = true, .symbol = ';',
+		.up_symbol = ':', .prefix = 167, .brk = true },
+	[40] = { .ascii = true, .symbol = '\'',
+		.up_symbol = '"', .prefix = 168 },
+	[168] = { .ascii = true, .symbol = '\'',
+		.up_symbol = '"', .prefix = 168, .brk = true },
+	[28] = { .ascii = false, .symbol = KBD_ENTER,
+		.up_symbol = NULL, .prefix = 156 },
+	[156] = { .ascii = false, .symbol = KBD_ENTER,
+		.up_symbol = NULL, .prefix = 156, .brk = true },
+	[42] = { .ascii = false, .symbol = KBD_LEFT_SHIFT,
+		.up_symbol = NULL, .prefix = 170 },
+	[170] = { .ascii = false, .symbol = KBD_LEFT_SHIFT,
+		.up_symbol = NULL, .prefix = 170, .brk = true },
+	[44] = { .ascii = true, .symbol = 'z',
+		.up_symbol = 'Z', .prefix = 172 },
+	[172] = { .ascii = true, .symbol = 'z',
+		.up_symbol = 'Z', .prefix = 172, .brk = true },
+	[45] = { .ascii = true, .symbol = 'x',
+		.up_symbol = 'X', .prefix = 173 },
+	[173] = { .ascii = true, .symbol = 'x',
+		.up_symbol = 'X', .prefix = 173, .brk = true },
+	[46] = { .ascii = true, .symbol = 'c',
+		.up_symbol = 'C', .prefix = 174 },
+	[174] = { .ascii = true, .symbol = 'c',
+		.up_symbol = 'C', .prefix = 174, .brk = true },
+	[47] = { .ascii = true, .symbol = 'v',
+		.up_symbol = 'V', .prefix = 175 },
+	[175] = { .ascii = true, .symbol = 'v',
+		.up_symbol = 'V', .prefix = 175, .brk = true },
+	[48] = { .ascii = true, .symbol = 'b',
+		.up_symbol = 'B', .prefix = 176 },
+	[176] = { .ascii = true, .symbol = 'b',
+		.up_symbol = 'B', .prefix = 176, .brk = true },
+	[49] = { .ascii = true, .symbol = 'n',
+		.up_symbol = 'N', .prefix = 177 },
+	[177] = { .ascii = true, .symbol = 'n',
+		.up_symbol = 'N', .prefix = 177, .brk = true },
+	[50] = { .ascii = true, .symbol = 'm',
+		.up_symbol = 'M', .prefix = 178 },
+	[178] = { .ascii = true, .symbol = 'm',
+		.up_symbol = 'M', .prefix = 178, .brk = true },
+	[51] = { .ascii = true, .symbol = ',',
+		.up_symbol = '<', .prefix = 179 },
+	[179] = { .ascii = true, .symbol = ',',
+		.up_symbol = '<', .prefix = 179, .brk = true },
+	[52] = { .ascii = true, .symbol = '.',
+		.up_symbol = '>', .prefix = 180 },
+	[180] = { .ascii = true, .symbol = '.',
+		.up_symbol = '>', .prefix = 180, .brk = true },
+	[53] = { .ascii = true, .symbol = '/',
+		.up_symbol = '?', .prefix = 181 },
+	[181] = { .ascii = true, .symbol = '/',
+		.up_symbol = '?', .prefix = 181, .brk = true },
+	[54] = { .ascii = false, .symbol = KBD_RIGHT_SHIFT,
+		.up_symbol = NULL, .prefix = 182 },
+	[182] = { .ascii = false, .symbol = KBD_RIGHT_SHIFT,
+		.up_symbol = NULL, .prefix = 182, .brk = true },
+	[29] = { .ascii = false, .symbol = KBD_LEFT_CTRL,
+		.up_symbol = NULL, .prefix = 157 },
+	[157] = { .ascii = false, .symbol = KBD_LEFT_CTRL,
+		.up_symbol = NULL, .prefix = 157, .brk = true },
+	[56] = { .ascii = false, .symbol = KBD_LEFT_ALT,
+		.up_symbol = NULL, .prefix = 184 },
+	[184] = { .ascii = false, .symbol = KBD_LEFT_ALT,
+		.up_symbol = NULL, .prefix = 184, .brk = true },
+	[57] = { .ascii = false, .symbol = KBD_SPACEBAR,
+		.up_symbol = NULL, .prefix = 185 },
+	[185] = { .ascii = false, .symbol = KBD_SPACEBAR,
+		.up_symbol = NULL, .prefix = 185, .brk = true },
+	[69] = { .ascii = false, .symbol = KBD_NUM_LOCK,
+		.up_symbol = NULL, .prefix = 197 },
+	[197] = { .ascii = false, .symbol = KBD_NUM_LOCK,
+		.up_symbol = NULL, .prefix = 197, .brk = true },
+	[71] = { .ascii = false, .symbol = KBD_KEYPAD_7,
+		.up_symbol = NULL, .prefix = 199 },
+	[199] = { .ascii = false, .symbol = KBD_KEYPAD_7,
+		.up_symbol = NULL, .prefix = 199, .brk = true },
+	[75] = { .ascii = false, .symbol = KBD_KEYPAD_4,
+		.up_symbol = NULL, .prefix = 203 },
+	[203] = { .ascii = false, .symbol = KBD_KEYPAD_4,
+		.up_symbol = NULL, .prefix = 203, .brk = true },
+	[79] = { .ascii = false, .symbol = KBD_KEYPAD_1,
+		.up_symbol = NULL, .prefix = 207 },
+	[207] = { .ascii = false, .symbol = KBD_KEYPAD_1,
+		.up_symbol = NULL, .prefix = 207, .brk = true },
+	[72] = { .ascii = false, .symbol = KBD_KEYPAD_8,
+		.up_symbol = NULL, .prefix = 200 },
+	[200] = { .ascii = false, .symbol = KBD_KEYPAD_8,
+		.up_symbol = NULL, .prefix = 200, .brk = true },
+	[76] = { .ascii = false, .symbol = KBD_KEYPAD_5,
+		.up_symbol = NULL, .prefix = 204 },
+	[204] = { .ascii = false, .symbol = KBD_KEYPAD_5,
+		.up_symbol = NULL, .prefix = 204, .brk = true },
+	[80] = { .ascii = false, .symbol = KBD_KEYPAD_2,
+		.up_symbol = NULL, .prefix = 208 },
+	[208] = { .ascii = false, .symbol = KBD_KEYPAD_2,
+		.up_symbol = NULL, .prefix = 208, .brk = true },
+	[82] = { .ascii = false, .symbol = KBD_KEYPAD_0,
+		.up_symbol = NULL, .prefix = 210 },
+	[210] = { .ascii = false, .symbol = KBD_KEYPAD_0,
+		.up_symbol = NULL, .prefix = 210, .brk = true },
+	[55] = { .ascii = false, .symbol = KBD_KEYPAD_TIMES,
+		.up_symbol = NULL, .prefix = 183 },
+	[183] = { .ascii = false, .symbol = KBD_KEYPAD_TIMES,
+		.up_symbol = NULL, .prefix = 183, .brk = true },
+	[73] = { .ascii = false, .symbol = KBD_KEYPAD_9,
+		.up_symbol = NULL, .prefix = 201 },
+	[201] = { .ascii = false, .symbol = KBD_KEYPAD_9,
+		.up_symbol = NULL, .prefix = 201, .brk = true },
+	[77] = { .ascii = false, .symbol = KBD_KEYPAD_6,
+		.up_symbol = NULL, .prefix = 205 },
+	[205] = { .ascii = false, .symbol = KBD_KEYPAD_6,
+		.up_symbol = NULL, .prefix = 205, .brk = true },
+	[81] = { .ascii = false, .symbol = KBD_KEYPAD_3,
+		.up_symbol = NULL, .prefix = 209 },
+	[209] = { .ascii = false, .symbol = KBD_KEYPAD_3,
+		.up_symbol = NULL, .prefix = 209, .brk = true },
+	[83] = { .ascii = false, .symbol = KBD_KEYPAD_DOT,
+		.up_symbol = NULL, .prefix = 211 },
+	[211] = { .ascii = false, .symbol = KBD_KEYPAD_DOT,
+		.up_symbol = NULL, .prefix = 211, .brk = true },
+	[74] = { .ascii = false, .symbol = KBD_KEYPAD_MINUS,
+		.up_symbol = NULL, .prefix = 202 },
+	[202] = { .ascii = false, .symbol = KBD_KEYPAD_MINUS,
+		.up_symbol = NULL, .prefix = 202, .brk = true },
+	[78] = { .ascii = false, .symbol = KBD_KEYPAD_PLUS,
+		.up_symbol = NULL, .prefix = 206 },
+	[206] = { .ascii = false, .symbol = KBD_KEYPAD_PLUS,
+		.up_symbol = NULL, .prefix = 206, .brk = true },
+	[1] = { .ascii = false, .symbol = KBD_ESC,
+		.up_symbol = NULL, .prefix = 129 },
+	[129] = { .ascii = false, .symbol = KBD_ESC,
+		.up_symbol = NULL, .prefix = 129, .brk = true },
+	[59] = { .ascii = false, .symbol = KBD_F1,
+		.up_symbol = NULL, .prefix = 187 },
+	[187] = { .ascii = false, .symbol = KBD_F1,
+		.up_symbol = NULL, .prefix = 187, .brk = true },
+	[60] = { .ascii = false, .symbol = KBD_F2,
+		.up_symbol = NULL, .prefix = 188 },
+	[188] = { .ascii = false, .symbol = KBD_F2,
+		.up_symbol = NULL, .prefix = 188, .brk = true },
+	[61] = { .ascii = false, .symbol = KBD_F3,
+		.up_symbol = NULL, .prefix = 189 },
+	[189] = { .ascii = false, .symbol = KBD_F3,
+		.up_symbol = NULL, .prefix = 189, .brk = true },
+	[62] = { .ascii = false, .symbol = KBD_F4,
+		.up_symbol = NULL, .prefix = 190 },
+	[190] = { .ascii = false, .symbol = KBD_F4,
+		.up_symbol = NULL, .prefix = 190, .brk = true },
+	[63] = { .ascii = false, .symbol = KBD_F5,
+		.up_symbol = NULL, .prefix = 191 },
+	[191] = { .ascii = false, .symbol = KBD_F5,
+		.up_symbol = NULL, .prefix = 191, .brk = true },
+	[64] = { .ascii = false, .symbol = KBD_F6,
+		.up_symbol = NULL, .prefix = 192 },
+	[192] = { .ascii = false, .symbol = KBD_F6,
+		.up_symbol = NULL, .prefix = 192, .brk = true },
+	[65] = { .ascii = false, .symbol = KBD_F7,
+		.up_symbol = NULL, .prefix = 193 },
+	[193] = { .ascii = false, .symbol = KBD_F7,
+		.up_symbol = NULL, .prefix = 193, .brk = true },
+	[66] = { .ascii = false, .symbol = KBD_F8,
+		.up_symbol = NULL, .prefix = 194 },
+	[194] = { .ascii = false, .symbol = KBD_F8,
+		.up_symbol = NULL, .prefix = 194, .brk = true },
+	[67] = { .ascii = false, .symbol = KBD_F9,
+		.up_symbol = NULL, .prefix = 195 },
+	[195] = { .ascii = false, .symbol = KBD_F9,
+		.up_symbol = NULL, .prefix = 195, .brk = true },
+	[68] = { .ascii = false, .symbol = KBD_F10,
+		.up_symbol = NULL, .prefix = 196 },
+	[196] = { .ascii = false, .symbol = KBD_F10,
+		.up_symbol = NULL, .prefix = 196, .brk = true },
+	[87] = { .ascii = false, .symbol = KBD_F11,
+		.up_symbol = NULL, .prefix = 215 },
+	[215] = { .ascii = false, .symbol = KBD_F11,
+		.up_symbol = NULL, .prefix = 215, .brk = true },
+	[88] = { .ascii = false, .symbol = KBD_F12,
+		.up_symbol = NULL, .prefix = 216 },
+	[216] = { .ascii = false, .symbol = KBD_F12,
+		.up_symbol = NULL, .prefix = 216, .brk = true },
+	[70] = { .ascii = false, .symbol = KBD_SCROLL_LOCK,
+		.up_symbol = NULL, .prefix = 198 },
+	[198] = { .ascii = false, .symbol = KBD_SCROLL_LOCK,
+		.up_symbol = NULL, .prefix = 198, .brk = true },
+	[43] = { .ascii = true, .symbol = '\\',
+		.up_symbol = '|', .prefix = 171 },
+	[171] = { .ascii = true, .symbol = '\\',
+		.up_symbol = '|', .prefix = 171, .brk = true },
+};
+
+
+const struct kbd_scan_codes scan_code_set_3[0xff] =
+{
+	[14] = { .ascii = true, .symbol = '`',
+		.up_symbol = '~', .prefix = 240 },
+	[22] = { .ascii = true, .symbol = '1',
+		.up_symbol = '!', .prefix = 240 },
+	[30] = { .ascii = true, .symbol = '2',
+		.up_symbol = '@', .prefix = 240 },
+	[38] = { .ascii = true, .symbol = '3',
+		.up_symbol = '#', .prefix = 240 },
+	[37] = { .ascii = true, .symbol = '4',
+		.up_symbol = '$', .prefix = 240 },
+	[46] = { .ascii = true, .symbol = '5',
+		.up_symbol = '%', .prefix = 240 },
+	[54] = { .ascii = true, .symbol = '6',
+		.up_symbol = '^', .prefix = 240 },
+	[61] = { .ascii = true, .symbol = '7',
+		.up_symbol = '&', .prefix = 240 },
+	[62] = { .ascii = true, .symbol = '8',
+		.up_symbol = '*', .prefix = 240 },
+	[70] = { .ascii = true, .symbol = '9',
+		.up_symbol = '(', .prefix = 240 },
+	[69] = { .ascii = true, .symbol = '0',
+		.up_symbol = ')', .prefix = 240 },
+	[78] = { .ascii = true, .symbol = '-',
+		.up_symbol = '_', .prefix = 240 },
+	[85] = { .ascii = true, .symbol = '=',
+		.up_symbol = '+', .prefix = 240 },
+	[102] = { .ascii = false, .symbol = KBD_BACKSPACE,
+		.up_symbol = NULL, .prefix = 240 },
+	[13] = { .ascii = false, .symbol = KBD_TAB,
+		.up_symbol = NULL, .prefix = 240 },
+	[21] = { .ascii = true, .symbol = 'q',
+		.up_symbol = 'Q', .prefix = 240 },
+	[29] = { .ascii = true, .symbol = 'w',
+		.up_symbol = 'W', .prefix = 240 },
+	[36] = { .ascii = true, .symbol = 'e',
+		.up_symbol = 'E', .prefix = 240 },
+	[45] = { .ascii = true, .symbol = 'r',
+		.up_symbol = 'R', .prefix = 240 },
+	[44] = { .ascii = true, .symbol = 't',
+		.up_symbol = 'T', .prefix = 240 },
+	[53] = { .ascii = true, .symbol = 'y',
+		.up_symbol = 'Y', .prefix = 240 },
+	[60] = { .ascii = true, .symbol = 'u',
+		.up_symbol = 'U', .prefix = 240 },
+	[67] = { .ascii = true, .symbol = 'i',
+		.up_symbol = 'I', .prefix = 240 },
+	[68] = { .ascii = true, .symbol = 'o',
+		.up_symbol = 'O', .prefix = 240 },
+	[77] = { .ascii = true, .symbol = 'p',
+		.up_symbol = 'P', .prefix = 240 },
+	[84] = { .ascii = true, .symbol = '[',
+		.up_symbol = '{', .prefix = 240 },
+	[91] = { .ascii = true, .symbol = ']',
+		.up_symbol = '}', .prefix = 240 },
+	[88] = { .ascii = false, .symbol = KBD_CAPS_LOCK,
+		.up_symbol = NULL, .prefix = 240 },
+	[28] = { .ascii = true, .symbol = 'a',
+		.up_symbol = 'A', .prefix = 240 },
+	[27] = { .ascii = true, .symbol = 's',
+		.up_symbol = 'S', .prefix = 240 },
+	[35] = { .ascii = true, .symbol = 'd',
+		.up_symbol = 'D', .prefix = 240 },
+	[43] = { .ascii = true, .symbol = 'f',
+		.up_symbol = 'F', .prefix = 240 },
+	[52] = { .ascii = true, .symbol = 'g',
+		.up_symbol = 'G', .prefix = 240 },
+	[51] = { .ascii = true, .symbol = 'h',
+		.up_symbol = 'H', .prefix = 240 },
+	[59] = { .ascii = true, .symbol = 'j',
+		.up_symbol = 'J', .prefix = 240 },
+	[66] = { .ascii = true, .symbol = 'k',
+		.up_symbol = 'K', .prefix = 240 },
+	[75] = { .ascii = true, .symbol = 'l',
+		.up_symbol = 'L', .prefix = 240 },
+	[76] = { .ascii = true, .symbol = ';',
+		.up_symbol = ':', .prefix = 240 },
+	[82] = { .ascii = true, .symbol = '\'',
+		.up_symbol = '"', .prefix = 240 },
+	[90] = { .ascii = false, .symbol = KBD_ENTER,
+		.up_symbol = NULL, .prefix = 240 },
+	[18] = { .ascii = false, .symbol = KBD_LEFT_SHIFT,
+		.up_symbol = NULL, .prefix = 240 },
+	[26] = { .ascii = true, .symbol = 'z',
+		.up_symbol = 'Z', .prefix = 240 },
+	[34] = { .ascii = true, .symbol = 'x',
+		.up_symbol = 'X', .prefix = 240 },
+	[33] = { .ascii = true, .symbol = 'c',
+		.up_symbol = 'C', .prefix = 240 },
+	[42] = { .ascii = true, .symbol = 'v',
+		.up_symbol = 'V', .prefix = 240 },
+	[50] = { .ascii = true, .symbol = 'b',
+		.up_symbol = 'B', .prefix = 240 },
+	[49] = { .ascii = true, .symbol = 'n',
+		.up_symbol = 'N', .prefix = 240 },
+	[58] = { .ascii = true, .symbol = 'm',
+		.up_symbol = 'M', .prefix = 240 },
+	[65] = { .ascii = true, .symbol = ',',
+		.up_symbol = '<', .prefix = 240 },
+	[73] = { .ascii = true, .symbol = '.',
+		.up_symbol = '>', .prefix = 240 },
+	[74] = { .ascii = true, .symbol = '/',
+		.up_symbol = '?', .prefix = 240 },
+	[89] = { .ascii = false, .symbol = KBD_RIGHT_SHIFT,
+		.up_symbol = NULL, .prefix = 240 },
+	[17] = { .ascii = false, .symbol = KBD_LEFT_CTRL,
+		.up_symbol = NULL, .prefix = 240 },
+	[25] = { .ascii = false, .symbol = KBD_LEFT_ALT,
+		.up_symbol = NULL, .prefix = 240 },
+	[41] = { .ascii = false, .symbol = KBD_SPACEBAR,
+		.up_symbol = NULL, .prefix = 240 },
+	[57] = { .ascii = false, .symbol = KBD_RIGHT_ALT,
+		.up_symbol = NULL, .prefix = 240 },
+	[88] = { .ascii = false, .symbol = KBD_RIGHT_CTRL,
+		.up_symbol = NULL, .prefix = 240 },
+	[103] = { .ascii = false, .symbol = KBD_INSERT,
+		.up_symbol = NULL, .prefix = 240 },
+	[100] = { .ascii = false, .symbol = KBD_DELETE,
+		.up_symbol = NULL, .prefix = 240 },
+	[97] = { .ascii = false, .symbol = KBD_LEFT_ARROW,
+		.up_symbol = NULL, .prefix = 240 },
+	[110] = { .ascii = false, .symbol = KBD_HOME,
+		.up_symbol = NULL, .prefix = 240 },
+	[101] = { .ascii = false, .symbol = KBD_END,
+		.up_symbol = NULL, .prefix = 240 },
+	[99] = { .ascii = false, .symbol = KBD_UP_ARROW,
+		.up_symbol = NULL, .prefix = 240 },
+	[96] = { .ascii = false, .symbol = KBD_DOWN_ARROW,
+		.up_symbol = NULL, .prefix = 240 },
+	[111] = { .ascii = false, .symbol = KBD_PAGE_UP,
+		.up_symbol = NULL, .prefix = 240 },
+	[109] = { .ascii = false, .symbol = KBD_PAGE_DOWN,
+		.up_symbol = NULL, .prefix = 240 },
+	[106] = { .ascii = false, .symbol = KBD_RIGHT_ARROW,
+		.up_symbol = NULL, .prefix = 240 },
+	[118] = { .ascii = false, .symbol = KBD_NUM_LOCK,
+		.up_symbol = NULL, .prefix = 240 },
+	[108] = { .ascii = false, .symbol = KBD_KEYPAD_7,
+		.up_symbol = NULL, .prefix = 240 },
+	[107] = { .ascii = false, .symbol = KBD_KEYPAD_4,
+		.up_symbol = NULL, .prefix = 240 },
+	[105] = { .ascii = false, .symbol = KBD_KEYPAD_1,
+		.up_symbol = NULL, .prefix = 240 },
+	[119] = { .ascii = false, .symbol = KBD_KEYPAD_DIV,
+		.up_symbol = NULL, .prefix = 240 },
+	[117] = { .ascii = false, .symbol = KBD_KEYPAD_8,
+		.up_symbol = NULL, .prefix = 240 },
+	[115] = { .ascii = false, .symbol = KBD_KEYPAD_5,
+		.up_symbol = NULL, .prefix = 240 },
+	[114] = { .ascii = false, .symbol = KBD_KEYPAD_2,
+		.up_symbol = NULL, .prefix = 240 },
+	[112] = { .ascii = false, .symbol = KBD_KEYPAD_0,
+		.up_symbol = NULL, .prefix = 240 },
+	[126] = { .ascii = false, .symbol = KBD_KEYPAD_TIMES,
+		.up_symbol = NULL, .prefix = 240 },
+	[125] = { .ascii = false, .symbol = KBD_KEYPAD_9,
+		.up_symbol = NULL, .prefix = 240 },
+	[116] = { .ascii = false, .symbol = KBD_KEYPAD_6,
+		.up_symbol = NULL, .prefix = 240 },
+	[122] = { .ascii = false, .symbol = KBD_KEYPAD_3,
+		.up_symbol = NULL, .prefix = 240 },
+	[113] = { .ascii = false, .symbol = KBD_KEYPAD_DOT,
+		.up_symbol = NULL, .prefix = 240 },
+	[132] = { .ascii = false, .symbol = KBD_KEYPAD_MINUS,
+		.up_symbol = NULL, .prefix = 240 },
+	[124] = { .ascii = false, .symbol = KBD_KEYPAD_PLUS,
+		.up_symbol = NULL, .prefix = 240 },
+	[121] = { .ascii = false, .symbol = KBD_KEYPAD_ENTER,
+		.up_symbol = NULL, .prefix = 240 },
+	[8] = { .ascii = false, .symbol = KBD_ESC,
+		.up_symbol = NULL, .prefix = 240 },
+	[7] = { .ascii = false, .symbol = KBD_F1,
+		.up_symbol = NULL, .prefix = 240 },
+	[15] = { .ascii = false, .symbol = KBD_F2,
+		.up_symbol = NULL, .prefix = 240 },
+	[23] = { .ascii = false, .symbol = KBD_F3,
+		.up_symbol = NULL, .prefix = 240 },
+	[31] = { .ascii = false, .symbol = KBD_F4,
+		.up_symbol = NULL, .prefix = 240 },
+	[39] = { .ascii = false, .symbol = KBD_F5,
+		.up_symbol = NULL, .prefix = 240 },
+	[47] = { .ascii = false, .symbol = KBD_F6,
+		.up_symbol = NULL, .prefix = 240 },
+	[55] = { .ascii = false, .symbol = KBD_F7,
+		.up_symbol = NULL, .prefix = 240 },
+	[63] = { .ascii = false, .symbol = KBD_F8,
+		.up_symbol = NULL, .prefix = 240 },
+	[71] = { .ascii = false, .symbol = KBD_F9,
+		.up_symbol = NULL, .prefix = 240 },
+	[79] = { .ascii = false, .symbol = KBD_F10,
+		.up_symbol = NULL, .prefix = 240 },
+	[86] = { .ascii = false, .symbol = KBD_F11,
+		.up_symbol = NULL, .prefix = 240 },
+	[94] = { .ascii = false, .symbol = KBD_F12,
+		.up_symbol = NULL, .prefix = 240 },
+	[87] = { .ascii = false, .symbol = KBD_PRINT_SCREEN,
+		.up_symbol = NULL, .prefix = 240 },
+	[95] = { .ascii = false, .symbol = KBD_SCROLL_LOCK,
+		.up_symbol = NULL, .prefix = 240 },
+	[98] = { .ascii = false, .symbol = KBD_PAUSE_BREAK,
+		.up_symbol = NULL, .prefix = 240 },
+	[92] = { .ascii = true, .symbol = '\\',
+		.up_symbol = '|', .prefix = 240 },
+};