1 //
2 // Copyright(C) 1993-1996 Id Software, Inc.
3 // Copyright(C) 2005-2014 Simon Howard
4 //
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // DESCRIPTION:
16 //       Key definitions
17 //
18 
19 #ifndef __DOOMKEYS__
20 #define __DOOMKEYS__
21 
22 //
23 // DOOM keyboard definition.
24 // This is the stuff configured by Setup.Exe.
25 // Most key data are simple ascii (uppercased).
26 //
27 #define KEY_RIGHTARROW	0xae
28 #define KEY_LEFTARROW	0xac
29 #define KEY_UPARROW	0xad
30 #define KEY_DOWNARROW	0xaf
31 #define KEY_ESCAPE	27
32 #define KEY_ENTER	13
33 #define KEY_TAB		9
34 #define KEY_F1		(0x80+0x3b)
35 #define KEY_F2		(0x80+0x3c)
36 #define KEY_F3		(0x80+0x3d)
37 #define KEY_F4		(0x80+0x3e)
38 #define KEY_F5		(0x80+0x3f)
39 #define KEY_F6		(0x80+0x40)
40 #define KEY_F7		(0x80+0x41)
41 #define KEY_F8		(0x80+0x42)
42 #define KEY_F9		(0x80+0x43)
43 #define KEY_F10		(0x80+0x44)
44 #define KEY_F11		(0x80+0x57)
45 #define KEY_F12		(0x80+0x58)
46 
47 #define KEY_BACKSPACE	0x7f
48 #define KEY_PAUSE	0xff
49 
50 #define KEY_EQUALS	0x3d
51 #define KEY_MINUS	0x2d
52 
53 #define KEY_RSHIFT	(0x80+0x36)
54 #define KEY_RCTRL	(0x80+0x1d)
55 #define KEY_RALT	(0x80+0x38)
56 
57 #define KEY_LALT	KEY_RALT
58 
59 // new keys:
60 
61 #define KEY_CAPSLOCK    (0x80+0x3a)
62 #define KEY_NUMLOCK     (0x80+0x45)
63 #define KEY_SCRLCK      (0x80+0x46)
64 #define KEY_PRTSCR      (0x80+0x59)
65 
66 #define KEY_HOME        (0x80+0x47)
67 #define KEY_END         (0x80+0x4f)
68 #define KEY_PGUP        (0x80+0x49)
69 #define KEY_PGDN        (0x80+0x51)
70 #define KEY_INS         (0x80+0x52)
71 #define KEY_DEL         (0x80+0x53)
72 
73 #define KEYP_0          0
74 #define KEYP_1          KEY_END
75 #define KEYP_2          KEY_DOWNARROW
76 #define KEYP_3          KEY_PGDN
77 #define KEYP_4          KEY_LEFTARROW
78 #define KEYP_5          '5'
79 #define KEYP_6          KEY_RIGHTARROW
80 #define KEYP_7          KEY_HOME
81 #define KEYP_8          KEY_UPARROW
82 #define KEYP_9          KEY_PGUP
83 
84 #define KEYP_DIVIDE     '/'
85 #define KEYP_PLUS       '+'
86 #define KEYP_MINUS      '-'
87 #define KEYP_MULTIPLY   '*'
88 #define KEYP_PERIOD     0
89 #define KEYP_EQUALS     KEY_EQUALS
90 #define KEYP_ENTER      KEY_ENTER
91 
92 #define SCANCODE_TO_KEYS_ARRAY {                                            \
93     0,   0,   0,   0,   'a',                                  /* 0-9 */     \
94     'b', 'c', 'd', 'e', 'f',                                                \
95     'g', 'h', 'i', 'j', 'k',                                  /* 10-19 */   \
96     'l', 'm', 'n', 'o', 'p',                                                \
97     'q', 'r', 's', 't', 'u',                                  /* 20-29 */   \
98     'v', 'w', 'x', 'y', 'z',                                                \
99     '1', '2', '3', '4', '5',                                  /* 30-39 */   \
100     '6', '7', '8', '9', '0',                                                \
101     KEY_ENTER, KEY_ESCAPE, KEY_BACKSPACE, KEY_TAB, ' ',       /* 40-49 */   \
102     KEY_MINUS, KEY_EQUALS, '[', ']', '\\',                                  \
103     0,   ';', '\'', '`', ',',                                 /* 50-59 */   \
104     '.', '/', KEY_CAPSLOCK, KEY_F1, KEY_F2,                                 \
105     KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7,                   /* 60-69 */   \
106     KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12,                              \
107     KEY_PRTSCR, KEY_SCRLCK, KEY_PAUSE, KEY_INS, KEY_HOME,     /* 70-79 */   \
108     KEY_PGUP, KEY_DEL, KEY_END, KEY_PGDN, KEY_RIGHTARROW,                   \
109     KEY_LEFTARROW, KEY_DOWNARROW, KEY_UPARROW,                /* 80-89 */   \
110     KEY_NUMLOCK, KEYP_DIVIDE,                                               \
111     KEYP_MULTIPLY, KEYP_MINUS, KEYP_PLUS, KEYP_ENTER, KEYP_1,               \
112     KEYP_2, KEYP_3, KEYP_4, KEYP_5, KEYP_6,                   /* 90-99 */   \
113     KEYP_7, KEYP_8, KEYP_9, KEYP_0, KEYP_PERIOD,                            \
114     0, 0, 0, KEYP_EQUALS,                                     /* 100-103 */ \
115 }
116 
117 // Default names for keys, to use in English or as fallback.
118 #define KEY_NAMES_ARRAY {                                            \
119     { KEY_BACKSPACE,  "BACKSP" },   { KEY_TAB,        "TAB" },       \
120     { KEY_INS,        "INS" },      { KEY_DEL,        "DEL" },       \
121     { KEY_PGUP,       "PGUP" },     { KEY_PGDN,       "PGDN" },      \
122     { KEY_ENTER,      "ENTER" },    { KEY_ESCAPE,     "ESC" },       \
123     { KEY_F1,         "F1" },       { KEY_F2,         "F2" },        \
124     { KEY_F3,         "F3" },       { KEY_F4,         "F4" },        \
125     { KEY_F5,         "F5" },       { KEY_F6,         "F6" },        \
126     { KEY_F7,         "F7" },       { KEY_F8,         "F8" },        \
127     { KEY_F9,         "F9" },       { KEY_F10,        "F10" },       \
128     { KEY_F11,        "F11" },      { KEY_F12,        "F12" },       \
129     { KEY_HOME,       "HOME" },     { KEY_END,        "END" },       \
130     { KEY_MINUS,      "-" },        { KEY_EQUALS,     "=" },         \
131     { KEY_NUMLOCK,    "NUMLCK" },   { KEY_SCRLCK,     "SCRLCK" },    \
132     { KEY_PAUSE,      "PAUSE" },    { KEY_PRTSCR,     "PRTSC" },     \
133     { KEY_UPARROW,    "UP" },       { KEY_DOWNARROW,  "DOWN" },      \
134     { KEY_LEFTARROW,  "LEFT" },     { KEY_RIGHTARROW, "RIGHT" },     \
135     { KEY_RALT,       "ALT" },      { KEY_LALT,       "ALT" },       \
136     { KEY_RSHIFT,     "SHIFT" },    { KEY_CAPSLOCK,   "CAPS" },      \
137     { KEY_RCTRL,      "CTRL" },     { ' ',            "SPACE" },     \
138     { 'a', "A" },   { 'b', "B" },   { 'c', "C" },   { 'd', "D" },    \
139     { 'e', "E" },   { 'f', "F" },   { 'g', "G" },   { 'h', "H" },    \
140     { 'i', "I" },   { 'j', "J" },   { 'k', "K" },   { 'l', "L" },    \
141     { 'm', "M" },   { 'n', "N" },   { 'o', "O" },   { 'p', "P" },    \
142     { 'q', "Q" },   { 'r', "R" },   { 's', "S" },   { 't', "T" },    \
143     { 'u', "U" },   { 'v', "V" },   { 'w', "W" },   { 'x', "X" },    \
144     { 'y', "Y" },   { 'z', "Z" },   { '0', "0" },   { '1', "1" },    \
145     { '2', "2" },   { '3', "3" },   { '4', "4" },   { '5', "5" },    \
146     { '6', "6" },   { '7', "7" },   { '8', "8" },   { '9', "9" },    \
147     { '[', "[" },   { ']', "]" },   { ';', ";" },   { '`', "`" },    \
148     { ',', "," },   { '.', "." },   { '/', "/" },   { '\\', "\\" },  \
149     { '\'', "\'" },                                                  \
150 }
151 
152 #endif          // __DOOMKEYS__
153 
154