1 /* Copyright (C) 2011 by Jacob Alexander
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 // ----- Defines -----
29 #define KEY_SHIFT 0x02
32 #define KEY_LEFT_CTRL 0x01
33 #define KEY_LEFT_SHIFT 0x02
34 #define KEY_LEFT_ALT 0x04
35 #define KEY_LEFT_GUI 0x08
36 #define KEY_RIGHT_CTRL 0x10
37 #define KEY_RIGHT_SHIFT 0x20
38 #define KEY_RIGHT_ALT 0x40
39 #define KEY_RIGHT_GUI 0x80
80 #define KEY_BACKSPACE 42
85 #define KEY_LEFT_BRACE 47
86 #define KEY_RIGHT_BRACE 48
87 #define KEY_BACKSLASH 49
89 #define KEY_SEMICOLON 51
95 #define KEY_CAPS_LOCK 57
108 #define KEY_PRINTSCREEN 70
109 #define KEY_SCROLL_LOCK 71
111 #define KEY_INSERT 73
113 #define KEY_PAGE_UP 75
114 #define KEY_DELETE 76
116 #define KEY_PAGE_DOWN 78
121 #define KEY_NUM_LOCK 83
122 #define KEYPAD_SLASH 84
123 #define KEYPAD_ASTERIX 85
124 #define KEYPAD_MINUS 86
125 #define KEYPAD_PLUS 87
126 #define KEYPAD_ENTER 88
137 #define KEYPAD_PERIOD 99
138 #define KEY_ISO_BACKSLASH 100
140 #define KEYBOARD_ERROR 102 // See spec
141 #define KEYPAD_EQUAL 103
157 #define KEY_SELECT 119
159 #define KEY_AGAIN 121
163 #define KEY_PASTE 125
166 #define KEY_VOL_UP 128
167 #define KEY_VOL_DOWN 129
168 #define KEY_CAPS_LLOCK 130 // "Locking" Scroll Lock (Old keyboards with Locking Caps Lock)
169 #define KEY_NUM_LLOCK 131
170 #define KEY_SCROLL_LLOCK 132
171 #define KEYPAD_COMMA 133 // Brazillian (See spec)
172 #define KEYPAD_EQUAL_AS 134 // AS/400 Keyboard (See spec)
173 #define KEY_INTER1 135 // Brazillian and Japanese "Ru"
174 #define KEY_INTER2 136 // Japanese Katakana/Hiragana
175 #define KEY_INTER3 137 // Japanese Yen
176 #define KEY_INTER4 138 // Japanese Henkan
177 #define KEY_INTER5 139 // Japanese Muhenkan
178 #define KEY_INTER6 140 // PC98 Comma (Ka-m-ma)
179 #define KEY_INTER7 141 // Double-Byte/Single-Byte Toggle
180 #define KEY_INTER8 142 // Undefined
181 #define KEY_INTER9 143 // Undefined
182 #define KEY_LANG1 144 // Korean Hangul/English Toggle
183 #define KEY_LANG2 145 // Korean Hanja Conversion
184 #define KEY_LANG3 146 // Japanese Katakana Key (USB)
185 #define KEY_LANG4 147 // Japanese Hiragana Key (USB)
186 #define KEY_LANG5 148 // Japanese Zenkaku/Hankaku Key (USB)
187 #define KEY_LANG6 149 // Reserved (Application Specific)
188 #define KEY_LANG7 150 // Reserved (Application Specific)
189 #define KEY_LANG8 151 // Reserved (Application Specific)
190 #define KEY_LANG9 152 // Reserved (Application Specific)
191 #define KEY_ALT_ERASE 153 // Special Erase (See Spec)
192 #define KEY_SYSREQ_ATT 154 // Modifier Type
193 #define KEY_CANCEL 155
194 #define KEY_CLEAR 156
195 #define KEY_PRIOR 157
196 #define KEY_RETURN 158
197 #define KEY_SEPARATOR 159
200 #define KEY_CLEAR_AGAIN 162
201 #define KEY_CRSEL_PROPS 163
202 #define KEY_EXSEL 164
203 // 165 - 175 Reserved
204 #define KEYPAD_00 176
205 #define KEYPAD_000 177
206 #define KEY_1000_SEP 178
207 #define KEY_DECIMAL_SEP 179
208 #define KEY_CURRENCY_MAIN 180
209 #define KEY_CURRENCY_SUB 181
210 #define KEYPAD_LPAREN 182
211 #define KEYPAD_RPAREN 183
212 #define KEYPAD_LBRACE 184
213 #define KEYPAD_RBRACE 185
214 #define KEYPAD_TAB 186
215 #define KEYPAD_BACKSPACE 187
222 #define KEYPAD_XOR 194
223 #define KEYPAD_CHEVRON 195
224 #define KEYPAD_PERCENT 196
225 #define KEYPAD_LTHAN 197
226 #define KEYPAD_GTHAN 198
227 #define KEYPAD_AND 199
228 #define KEYPAD_AND_AND 200
229 #define KEYPAD_OR 201
230 #define KEYPAD_OR_OR 202
231 #define KEYPAD_COLON 203
232 #define KEYPAD_POUND 204
233 #define KEYPAD_SPACE 205
234 #define KEYPAD_AT 206
235 #define KEYPAD_EXCLAIM 207
236 #define KEYPAD_MEM_STORE 208
237 #define KEYPAD_MEM_RECALL 209
238 #define KEYPAD_MEM_CLEAR 210
239 #define KEYPAD_MEM_ADD 211
240 #define KEYPAD_MEM_SUB 212
241 #define KEYPAD_MEM_MULT 213
242 #define KEYPAD_MEM_DIV 214
243 #define KEYPAD_PLUS_MINUS 215
244 #define KEYPAD_CLEAR 216
245 #define KEYPAD_CLEAR_ENTRY 217
246 #define KEYPAD_BINARY 218
247 #define KEYPAD_OCTAL 219
248 #define KEYPAD_DECIMAL 220
249 #define KEYPAD_HEX 221
250 // 222 - 223 Reserved
251 #define KEYS_LCTRL 224
252 #define KEYS_LSHIFT 225
253 #define KEYS_LALT 226
254 #define KEYS_LGUI 227
255 #define KEYS_RCTRL 228
256 #define KEYS_RSHIFT 229
257 #define KEYS_RALT 230
258 #define KEYS_RGUI 231
259 // 232 - 65535 Reserved