+/* Internal keyboard codes from http://www.atariarchives.org/c3ba/page004.php */
+/* (Defined below in the order the keys appear on a 1200XL keyboard, from top left to bottom right) */
+/* (Note: Numerous Shift+Ctrl+key combos are unavailable) */
+
+#define KEYCODE_NONE 255 /* 255 = no key pressed (but is also same as Ctrl+Shift+A) */
+
+/* Fn (function) keys only available on 1200XL */
+#define KEYCODE_F1 3
+#define KEYCODE_F2 4
+#define KEYCODE_F3 19
+#define KEYCODE_F4 20
+
+/* HELP key only available on XL/XE series */
+#define KEYCODE_HELP 17
+
+#define KEYCODE_ESC 28
+#define KEYCODE_1 31
+#define KEYCODE_2 30
+#define KEYCODE_3 26
+#define KEYCODE_4 24
+#define KEYCODE_5 29
+#define KEYCODE_6 27
+#define KEYCODE_7 51
+#define KEYCODE_8 53
+#define KEYCODE_9 48
+#define KEYCODE_0 50
+#define KEYCODE_LT 54
+#define KEYCODE_GT 55
+#define KEYCODE_BKSPC 52
+
+#define KEYCODE_TAB 44
+#define KEYCODE_Q 47
+#define KEYCODE_W 46
+#define KEYCODE_E 42
+#define KEYCODE_R 40
+#define KEYCODE_T 45
+#define KEYCODE_Y 43
+#define KEYCODE_U 11
+#define KEYCODE_I 13
+#define KEYCODE_O 8
+#define KEYCODE_P 10
+#define KEYCODE_MINUS 14
+#define KEYCODE_EQUALS 15
+#define KEYCODE_RETURN 12
+
+#define KEYCODE_CTRL 128 /* binary OR'd */
+
+#define KEYCODE_A 63
+#define KEYCODE_S 62
+#define KEYCODE_D 58
+#define KEYCODE_F 56
+#define KEYCODE_G 61
+#define KEYCODE_H 57
+#define KEYCODE_J 1
+#define KEYCODE_K 5
+#define KEYCODE_L 0
+#define KEYCODE_; 2
+#define KEYCODE_PLUS 6
+#define KEYCODE_ASTERISK 7
+#define KEYCODE_CAPS 60
+
+#define KEYCODE_SHIFT 64 /* binary OR'd */
+
+#define KEYCODE_Z 23
+#define KEYCODE_X 22
+#define KEYCODE_C 18
+#define KEYCODE_V 16
+#define KEYCODE_B 21
+#define KEYCODE_N 35
+#define KEYCODE_M 37
+#define KEYCODE_COMMA 32
+#define KEYCODE_PERIOD 34
+#define KEYCODE_SLASH 38
+#define KEYCODE_FUJI 39 /* (as seen on 400/800) */
+#define KEYCODE_INVERSE 39 /* (alternative name; as seen on XL/XE) */
+
+#define KEYCODE_SPACE 33
+
+