Subversion Repositories Games.Carmageddon

Rev

Rev 18 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 pmbaty 1
/*
2
 * Maps SDL2 scancodes to directinput keynums/scancodes.
3
 * Useful if you're porting a game that uses dinput scancodes internally
4
 * (for key bindings etc) or any other lib (like CEGUI) that uses them.
5
 *
6
 * (C) 2015 Daniel Gibson
7
 *
8
 * Homepage: https://github.com/DanielGibson/Snippets/
9
 *
10
 * License:
11
 *   This software is dual-licensed to the public domain and under the following
12
 *   license: you are granted a perpetual, irrevocable license to copy, modify,
13
 *   publish, and distribute this file as you see fit.
14
 *   No warranty implied; use at your own risk.
15
 *
16
 * So you can do whatever you want with this code, including copying it
17
 * (or parts of it) into your own source.
18
 * No need to mention me or this "license" in your code or docs, even though
19
 * it would be appreciated, of course.
20
 *
21
 */
22
 
20 pmbaty 23
#include <glad/glad.h>
24
 
1 pmbaty 25
#include <SDL.h>
26
 
27
#if 0 // Usage Example:
28
#include "sdl2_scancode_to_dinput.h"
29
 static int SDLScanCodeToKeyNum(SDL_Scancode sc)
30
 {
31
   int idx = (int)sc;
32
   assert(idx >= 0 && idx < SDL_NUM_SCANCODES);
33
   return scanCodeToKeyNum[idx];
34
 }
35
 
36
 static SDL_Scancode KeyNumToSDLScanCode( int keyNum )
37
 {
38
   if( keyNum >= 0 && keyNum < 0xEF )
39
   {
40
     for(int i = 0; i < SDL_NUM_SCANCODES; ++i)
41
     {
42
       if(scanCodeToKeyNum[i] == keyNum) return (SDL_Scancode)i;
43
     }
44
   }
45
   return SDL_SCANCODE_UNKNOWN;
46
 }
47
#endif // 0
48
 
49
#ifndef _SDL2_SCANCODE_TO_DINPUT_H_
50
#define _SDL2_SCANCODE_TO_DINPUT_H_
51
 
52
// TODO: map the following keys, if possible:
53
// #define DIK_UNDERLINE       0x93    /*                     (NEC PC98) */
54
// #define DIK_KANJI           0x94    /* (Japanese keyboard)            */
55
// #define DIK_AX              0x96    /*                     (Japan AX) */
56
// #define DIK_UNLABELED       0x97    /*                        (J3100) */
57
//
58
// #define DIK_WAKE            0xE3    /* System Wake */
59
//
60
// (#define DIK_ABNT_C2         0x7E    /* Numpad . on Brazilian keyboard */ - system should map this to KP_COMMA or something,
61
//                                         according to USB doc, so probably it doesn't need mapping here)
62
 
63
// maps SDL2 scancodes to directinput keynums/scancodes - dinput_key = sdlScanCodeToDirectInputKeyNum[(int)your_sdl2_scancode];
64
static int sdlScanCodeToDirectInputKeyNum[SDL_NUM_SCANCODES] = {
65
    0x0,  //    SDL_SCANCODE_UNKNOWN = 0, => 0 should also work for dinput codes as "not assigned/unknown"
66
    0x0,  //    // 1 (unused)
67
    0x0,  //    // 2 (unused)
68
    0x0,  //    // 3 (unused)
69
    0x1E, //    SDL_SCANCODE_A = 4, - DIK_A
70
    0x30, //    SDL_SCANCODE_B = 5, - DIK_B
71
    0x2E, //    SDL_SCANCODE_C = 6, - DIK_C
72
    0x20, //    SDL_SCANCODE_D = 7, - DIK_D
73
    0x12, //    SDL_SCANCODE_E = 8, - DIK_E
74
    0x21, //    SDL_SCANCODE_F = 9, - DIK_F
75
    0x22, //    SDL_SCANCODE_G = 10, - DIK_G
76
    0x23, //    SDL_SCANCODE_H = 11, - DIK_H
77
    0x17, //    SDL_SCANCODE_I = 12, - DIK_I
78
    0x24, //    SDL_SCANCODE_J = 13, - DIK_J
79
    0x25, //    SDL_SCANCODE_K = 14, - DIK_K
80
    0x26, //    SDL_SCANCODE_L = 15, - DIK_L
81
    0x32, //    SDL_SCANCODE_M = 16, - DIK_M
82
    0x31, //    SDL_SCANCODE_N = 17, - DIK_N
83
    0x18, //    SDL_SCANCODE_O = 18, - DIK_O
84
    0x19, //    SDL_SCANCODE_P = 19, - DIK_P
85
    0x10, //    SDL_SCANCODE_Q = 20, - DIK_Q
86
    0x13, //    SDL_SCANCODE_R = 21, - DIK_R
87
    0x1F, //    SDL_SCANCODE_S = 22, - DIK_S
88
    0x14, //    SDL_SCANCODE_T = 23, - DIK_T
89
    0x16, //    SDL_SCANCODE_U = 24, - DIK_U
90
    0x2F, //    SDL_SCANCODE_V = 25, - DIK_V
91
    0x11, //    SDL_SCANCODE_W = 26, - DIK_W
92
    0x2D, //    SDL_SCANCODE_X = 27, - DIK_X
93
    0x15, //    SDL_SCANCODE_Y = 28, - DIK_Y
94
    0x2C, //    SDL_SCANCODE_Z = 29, - DIK_Z
95
 
96
    0x02, //    SDL_SCANCODE_1 = 30, - DIK_1
97
    0x03, //    SDL_SCANCODE_2 = 31, - DIK_2
98
    0x04, //    SDL_SCANCODE_3 = 32, - DIK_3
99
    0x05, //    SDL_SCANCODE_4 = 33, - DIK_4
100
    0x06, //    SDL_SCANCODE_5 = 34, - DIK_5
101
    0x07, //    SDL_SCANCODE_6 = 35, - DIK_6
102
    0x08, //    SDL_SCANCODE_7 = 36, - DIK_7
103
    0x09, //    SDL_SCANCODE_8 = 37, - DIK_8
104
    0x0A, //    SDL_SCANCODE_9 = 38, - DIK_9
105
    0x0B, //    SDL_SCANCODE_0 = 39, - DIK_0
106
 
107
    0x1C, //    SDL_SCANCODE_RETURN = 40, - DIK_RETURN
108
    0x01, //    SDL_SCANCODE_ESCAPE = 41, - DIK_ESCAPE
109
    0x0E, //    SDL_SCANCODE_BACKSPACE = 42, - DIK_BACK
110
    0x0F, //    SDL_SCANCODE_TAB = 43, - DIK_TAB
111
    0x39, //    SDL_SCANCODE_SPACE = 44, - DIK_SPACE
112
 
113
    0x0C, //    SDL_SCANCODE_MINUS = 45, - DIK_MINUS
114
    0x0D, //    SDL_SCANCODE_EQUALS = 46, - DIK_EQUALS
115
    0x1A, //    SDL_SCANCODE_LEFTBRACKET = 47, - DIK_LBRACKET
116
    0x1B, //    SDL_SCANCODE_RIGHTBRACKET = 48, - DIK_RBRACKET
117
    0x2B, //    SDL_SCANCODE_BACKSLASH = 49, // next to enter, US: [\|] DE: [#'] UK: [#~] - DIK_BACKSLASH
118
    0x2B, //    SDL_SCANCODE_NONUSHASH = 50, // same key as before actually on some layouts, systems should map this to SDL_SCANCODE_BACKSLASH - DIK_BACKSLASH
119
    0x27, //    SDL_SCANCODE_SEMICOLON = 51, - DIK_SEMICOLON
120
    0x28, //    SDL_SCANCODE_APOSTROPHE = 52, - DIK_APOSTROPHE
121
    0x29, //    SDL_SCANCODE_GRAVE = 53, // "quake/doom3 console key" - DIK_GRAVE
122
    0x33, //    SDL_SCANCODE_COMMA = 54, - DIK_COMMA
123
    0x34, //    SDL_SCANCODE_PERIOD = 55, - DIK_PERIOD
124
    0x35, //    SDL_SCANCODE_SLASH = 56, - DIK_SLASH
125
 
126
    0x3A, //    SDL_SCANCODE_CAPSLOCK = 57, - DIK_CAPITAL
127
 
128
    0x3B, //    SDL_SCANCODE_F1 = 58,  - DIK_F1
129
    0x3C, //    SDL_SCANCODE_F2 = 59,  - DIK_F2
130
    0x3D, //    SDL_SCANCODE_F3 = 60,  - DIK_F3
131
    0x3E, //    SDL_SCANCODE_F4 = 61,  - DIK_F4
132
    0x3F, //    SDL_SCANCODE_F5 = 62,  - DIK_F5
133
    0x40, //    SDL_SCANCODE_F6 = 63,  - DIK_F6
134
    0x41, //    SDL_SCANCODE_F7 = 64,  - DIK_F7
135
    0x42, //    SDL_SCANCODE_F8 = 65,  - DIK_F8
136
    0x43, //    SDL_SCANCODE_F9 = 66,  - DIK_F9
137
    0x44, //    SDL_SCANCODE_F10 = 67, - DIK_F10
138
    0x57, //    SDL_SCANCODE_F11 = 68, - DIK_F11
139
    0x58, //    SDL_SCANCODE_F12 = 69, - DIK_F12
140
 
141
    0xB7, //    SDL_SCANCODE_PRINTSCREEN = 70, // - DIK_SYSRQ; SDL_SCANCODE_SYSREQ also maps to this!
142
 
143
    0x46, //    SDL_SCANCODE_SCROLLLOCK = 71, - DIK_SCROLL
144
    0xC5, //    SDL_SCANCODE_PAUSE = 72, - DIK_PAUSE
145
    0xD2, //    SDL_SCANCODE_INSERT = 73, // insert on PC, help on some Mac keyboards (but does send code 73, not 117) - DIK_INSERT
146
    0xC7, //    SDL_SCANCODE_HOME = 74, - DIK_HOME
147
    0xC9, //    SDL_SCANCODE_PAGEUP = 75, - DIK_PRIOR
148
    0xD3, //    SDL_SCANCODE_DELETE = 76, - DIK_DELETE
149
    0xCF, //    SDL_SCANCODE_END = 77, - DIK_END
150
    0xD1, //    SDL_SCANCODE_PAGEDOWN = 78, - DIK_NEXT
151
    0xCD, //    SDL_SCANCODE_RIGHT = 79, - DIK_RIGHT
152
    0xCB, //    SDL_SCANCODE_LEFT = 80, - DIK_LEFT
153
    0xD0, //    SDL_SCANCODE_DOWN = 81, - DIK_DOWN
154
    0xC8, //    SDL_SCANCODE_UP = 82, - DIK_UP
155
 
156
    0x45, //    SDL_SCANCODE_NUMLOCKCLEAR = 83, // num lock on PC, clear on Mac keyboards - DIK_NUMLOCK
157
 
158
    0xB5, //    SDL_SCANCODE_KP_DIVIDE = 84, - DIK_DIVIDE
159
    0x37, //    SDL_SCANCODE_KP_MULTIPLY = 85, - DIK_MULTIPLY
160
    0x4A, //    SDL_SCANCODE_KP_MINUS = 86, - DIK_SUBTRACT
161
    0x4E, //    SDL_SCANCODE_KP_PLUS = 87, - DIK_ADD
162
    0x9C, //    SDL_SCANCODE_KP_ENTER = 88, - DIK_NUMPADENTER
163
    0x4F, //    SDL_SCANCODE_KP_1 = 89, - DIK_NUMPAD1
164
    0x50, //    SDL_SCANCODE_KP_2 = 90, - DIK_NUMPAD2
165
    0x51, //    SDL_SCANCODE_KP_3 = 91, - DIK_NUMPAD3
166
    0x4B, //    SDL_SCANCODE_KP_4 = 92, - DIK_NUMPAD4
167
    0x4C, //    SDL_SCANCODE_KP_5 = 93, - DIK_NUMPAD5
168
    0x4D, //    SDL_SCANCODE_KP_6 = 94, - DIK_NUMPAD6
169
    0x47, //    SDL_SCANCODE_KP_7 = 95, - DIK_NUMPAD7
170
    0x48, //    SDL_SCANCODE_KP_8 = 96, - DIK_NUMPAD8
171
    0x49, //    SDL_SCANCODE_KP_9 = 97, - DIK_NUMPAD9
172
    0x52, //    SDL_SCANCODE_KP_0 = 98, - DIK_NUMPAD0
173
    0x53, //    SDL_SCANCODE_KP_PERIOD = 99, - DIK_DECIMAL
174
 
175
    0x56, //    SDL_SCANCODE_NONUSBACKSLASH = 100, // [<>|] on german keyboard, next to left shift - DIK_OEM_102
176
    0xDD, //    SDL_SCANCODE_APPLICATION = 101, // windows contextual menu, compose - DIK_APPS
177
    0xDE, //    SDL_SCANCODE_POWER = 102, // should be a status flag, but some mac keyboards have a power key - DIK_POWER
178
 
179
    0x8D, //    SDL_SCANCODE_KP_EQUALS = 103, - DIK_NUMPADEQUALS
180
    0x64, //    SDL_SCANCODE_F13 = 104, - DIK_F13
181
    0x65, //    SDL_SCANCODE_F14 = 105, - DIK_F14
182
    0x66, //    SDL_SCANCODE_F15 = 106, - DIK_F15
183
    0x67, //    SDL_SCANCODE_F16 = 107, // TODO: F16 and up don't have DIK_ constants! is this right?
184
    0x68, //    SDL_SCANCODE_F17 = 108, //        (at least 0x67-0x6F have no DIK_constants at all)
185
    0x69, //    SDL_SCANCODE_F18 = 109,
186
    0x6A, //    SDL_SCANCODE_F19 = 110,
187
    0x6B, //    SDL_SCANCODE_F20 = 111,
188
    0x6C, //    SDL_SCANCODE_F21 = 112,
189
    0x6D, //    SDL_SCANCODE_F22 = 113,
190
    0x6E, //    SDL_SCANCODE_F23 = 114,
191
    0x6F, //    SDL_SCANCODE_F24 = 115,
192
 
193
    0x0, //     SDL_SCANCODE_EXECUTE = 116,
194
    0x0, //     SDL_SCANCODE_HELP = 117,
195
    0x0, //     SDL_SCANCODE_MENU = 118,
196
    0x0, //     SDL_SCANCODE_SELECT = 119,
197
 
198
    0x95, //    SDL_SCANCODE_STOP = 120, - DIK_STOP
199
 
200
    0x0, //     SDL_SCANCODE_AGAIN = 121,  // redo
201
    0x0, //     SDL_SCANCODE_UNDO = 122,
202
    0x0, //     SDL_SCANCODE_CUT = 123,
203
    0x0, //     SDL_SCANCODE_COPY = 124,
204
    0x0, //     SDL_SCANCODE_PASTE = 125,
205
    0x0, //     SDL_SCANCODE_FIND = 126,
206
    0x0, //     SDL_SCANCODE_MUTE = 127,
207
 
208
    0xB0, //    SDL_SCANCODE_VOLUMEUP = 128, - DIK_VOLUMEUP
209
    0xAE, //    SDL_SCANCODE_VOLUMEDOWN = 129, - DIK_VOLUMEDOWN
210
 
211
    //  /* not sure whether there's a reason to enable these */
212
    0x0, //     /*     SDL_SCANCODE_LOCKINGCAPSLOCK = 130,  */
213
    0x0, //     /*     SDL_SCANCODE_LOCKINGNUMLOCK = 131, */
214
    0x0, //     /*     SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */
215
 
216
    0xB3, //    SDL_SCANCODE_KP_COMMA = 133, - DIK_NUMPADCOMMA
217
 
218
    0x0, //     SDL_SCANCODE_KP_EQUALSAS400 = 134,
219
 
220
    0x73, //    SDL_SCANCODE_INTERNATIONAL1 = 135, // this is really brazilian / and ? - DIK_ABNT_C1
221
    0x0,  //    SDL_SCANCODE_INTERNATIONAL2 = 136, // TODO: Hut1_12v2.pdf page 60, footnote 16
222
    0x7D, //    SDL_SCANCODE_INTERNATIONAL3 = 137, - DIK_YEN
223
    0x79, //    SDL_SCANCODE_INTERNATIONAL4 = 138, // Japan: XFER/"convert kana -> kanji", right of space - DIK_CONVERT
224
    0x7B, //    SDL_SCANCODE_INTERNATIONAL5 = 139, // Japan: NFER/"don't convert kana -> kanji", left of space - DIK_NOCONVERT
225
    0x0,  //    SDL_SCANCODE_INTERNATIONAL6 = 140, // TODO: Hut1_12v2.pdf page 60, footnote 20
226
    0x0,  //    SDL_SCANCODE_INTERNATIONAL7 = 141, // Toggle Double-Byte/Single-Byte mode.
227
    0x0,  //    SDL_SCANCODE_INTERNATIONAL8 = 142, // Undefined, available for other Front End Language Processors
228
    0x0,  //    SDL_SCANCODE_INTERNATIONAL9 = 143, // Undefined, available for other Front End Language Processors
229
    0x0,  //    SDL_SCANCODE_LANG1 = 144, // Hangul/English toggle (Korea)
230
    0x0,  //    SDL_SCANCODE_LANG2 = 145, // Hanja conversion (Korea)
231
    0x70, //    SDL_SCANCODE_LANG3 = 146, // Katakana (Japan) - DIK_KANA
232
    0x0,  //    SDL_SCANCODE_LANG4 = 147, // Hiragana (Japan)
233
    0x0,  //    SDL_SCANCODE_LANG5 = 148, // Zenkaku/Hankaku (Japan)
234
    0x0,  //    SDL_SCANCODE_LANG6 = 149, // reserved
235
    0x0,  //    SDL_SCANCODE_LANG7 = 150, // reserved
236
    0x0,  //    SDL_SCANCODE_LANG8 = 151, // reserved
237
    0x0,  //    SDL_SCANCODE_LANG9 = 152, // reserved
238
 
239
    0x0, //     SDL_SCANCODE_ALTERASE = 153, // Erase-Eaze
240
 
241
    0xB7, //    SDL_SCANCODE_SYSREQ = 154, - DIK_SYSRQ; SDL_SCANCODE_PRINTSCREEN also maps to this!
242
 
243
    0x0, //     SDL_SCANCODE_CANCEL = 155,
244
    0x0, //     SDL_SCANCODE_CLEAR = 156,
245
    0x0, //     SDL_SCANCODE_PRIOR = 157,
246
    0x0, //     SDL_SCANCODE_RETURN2 = 158,
247
    0x0, //     SDL_SCANCODE_SEPARATOR = 159,
248
    0x0, //     SDL_SCANCODE_OUT = 160,
249
    0x0, //     SDL_SCANCODE_OPER = 161,
250
    0x0, //     SDL_SCANCODE_CLEARAGAIN = 162,
251
    0x0, //     SDL_SCANCODE_CRSEL = 163,
252
    0x0, //     SDL_SCANCODE_EXSEL = 164,
253
 
254
    0x0, // 165 (unused)
255
    0x0, // 166 (unused)
256
    0x0, // 167 (unused)
257
    0x0, // 168 (unused)
258
    0x0, // 169 (unused)
259
    0x0, // 170 (unused)
260
    0x0, // 171 (unused)
261
    0x0, // 172 (unused)
262
    0x0, // 173 (unused)
263
    0x0, // 174 (unused)
264
    0x0, // 175 (unused)
265
 
266
    0x0, //     SDL_SCANCODE_KP_00 = 176,
267
    0x0, //     SDL_SCANCODE_KP_000 = 177,
268
    0x0, //     SDL_SCANCODE_THOUSANDSSEPARATOR = 178,
269
    0x0, //     SDL_SCANCODE_DECIMALSEPARATOR = 179,
270
    0x0, //     SDL_SCANCODE_CURRENCYUNIT = 180,
271
    0x0, //     SDL_SCANCODE_CURRENCYSUBUNIT = 181,
272
    0x0, //     SDL_SCANCODE_KP_LEFTPAREN = 182,
273
    0x0, //     SDL_SCANCODE_KP_RIGHTPAREN = 183,
274
    0x0, //     SDL_SCANCODE_KP_LEFTBRACE = 184,
275
    0x0, //     SDL_SCANCODE_KP_RIGHTBRACE = 185,
276
    0x0, //     SDL_SCANCODE_KP_TAB = 186,
277
    0x0, //     SDL_SCANCODE_KP_BACKSPACE = 187,
278
    0x0, //     SDL_SCANCODE_KP_A = 188,
279
    0x0, //     SDL_SCANCODE_KP_B = 189,
280
    0x0, //     SDL_SCANCODE_KP_C = 190,
281
    0x0, //     SDL_SCANCODE_KP_D = 191,
282
    0x0, //     SDL_SCANCODE_KP_E = 192,
283
    0x0, //     SDL_SCANCODE_KP_F = 193,
284
    0x0, //     SDL_SCANCODE_KP_XOR = 194,
285
    0x0, //     SDL_SCANCODE_KP_POWER = 195,
286
    0x0, //     SDL_SCANCODE_KP_PERCENT = 196,
287
    0x0, //     SDL_SCANCODE_KP_LESS = 197,
288
    0x0, //     SDL_SCANCODE_KP_GREATER = 198,
289
    0x0, //     SDL_SCANCODE_KP_AMPERSAND = 199,
290
    0x0, //     SDL_SCANCODE_KP_DBLAMPERSAND = 200,
291
    0x0, //     SDL_SCANCODE_KP_VERTICALBAR = 201,
292
    0x0, //     SDL_SCANCODE_KP_DBLVERTICALBAR = 202,
293
 
294
    0x92, //    SDL_SCANCODE_KP_COLON = 203, - DIK_COLON
295
 
296
    0x0, //     SDL_SCANCODE_KP_HASH = 204,
297
    0x0, //     SDL_SCANCODE_KP_SPACE = 205,
298
 
299
    0x91, //    SDL_SCANCODE_KP_AT = 206, - DIK_AT
300
 
301
    0x0, //     SDL_SCANCODE_KP_EXCLAM = 207,
302
    0x0, //     SDL_SCANCODE_KP_MEMSTORE = 208,
303
    0x0, //     SDL_SCANCODE_KP_MEMRECALL = 209,
304
    0x0, //     SDL_SCANCODE_KP_MEMCLEAR = 210,
305
    0x0, //     SDL_SCANCODE_KP_MEMADD = 211,
306
    0x0, //     SDL_SCANCODE_KP_MEMSUBTRACT = 212,
307
    0x0, //     SDL_SCANCODE_KP_MEMMULTIPLY = 213,
308
    0x0, //     SDL_SCANCODE_KP_MEMDIVIDE = 214,
309
    0x0, //     SDL_SCANCODE_KP_PLUSMINUS = 215,
310
    0x0, //     SDL_SCANCODE_KP_CLEAR = 216,
311
    0x0, //     SDL_SCANCODE_KP_CLEARENTRY = 217,
312
    0x0, //     SDL_SCANCODE_KP_BINARY = 218,
313
    0x0, //     SDL_SCANCODE_KP_OCTAL = 219,
314
    0x0, //     SDL_SCANCODE_KP_DECIMAL = 220,
315
    0x0, //     SDL_SCANCODE_KP_HEXADECIMAL = 221,
316
 
317
    0x0, // 222 (unused)
318
    0x0, // 223 (unused)
319
 
320
    0x1D, //    SDL_SCANCODE_LCTRL = 224, - DIK_LCONTROL
321
    0x2A, //    SDL_SCANCODE_LSHIFT = 225, - DIK_LSHIFT
322
    0x38, //    SDL_SCANCODE_LALT = 226, // left Alt, option - DIK_LMENU
323
    0xDB, //    SDL_SCANCODE_LGUI = 227, // left windows, command (apple), meta - DIK_LWIN
324
    0x9D, //    SDL_SCANCODE_RCTRL = 228, - DIK_RCONTROL
325
    0x36, //    SDL_SCANCODE_RSHIFT = 229, - DIK_RSHIFT
326
    0xB8, //    SDL_SCANCODE_RALT = 230, // right Alt/AltGr, option - DIK_RMENU, also used for SDL_SCANCODE_MODE!
327
    0xDC, //    SDL_SCANCODE_RGUI = 231, // left windows, command (apple), meta - DIK_RWIN
328
 
329
    // 232 - 256 unused
330
    0, 0, 0, 0, 0, 0, 0, 0, 0,    // 232 - 240 unused
331
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 241-250 unused
332
    0, 0, 0, 0, 0, 0,             // 251-256 unused
333
 
334
    0xB8, //    SDL_SCANCODE_MODE = 257,  // this seems to be the AltGr Key? - DIK_RMENU (right alt)
335
 
336
    // These values are mapped from usage page 0x0C (USB consumer page).
337
    0x99, //    SDL_SCANCODE_AUDIONEXT = 258, - DIK_NEXTTRACK
338
    0x90, //    SDL_SCANCODE_AUDIOPREV = 259, - DIK_PREVTRACK, which is DIK_CIRCUMFLEX on japanese keyboards
339
    0xA4, //    SDL_SCANCODE_AUDIOSTOP = 260, - DIK_MEDIASTOP
340
    0xA2, //    SDL_SCANCODE_AUDIOPLAY = 261, - DIK_PLAYPAUSE
341
    0xA0, //    SDL_SCANCODE_AUDIOMUTE = 262, - DIK_MUTE
342
    0xED, //    SDL_SCANCODE_MEDIASELECT = 263, - DIK_MEDIASELECT
343
 
344
    0x0, //     SDL_SCANCODE_WWW = 264,
345
 
346
    0xEC, //    SDL_SCANCODE_MAIL = 265, - DIK_MAIL
347
    0xA1, //    SDL_SCANCODE_CALCULATOR = 266, - DIK_CALCULATOR
348
    0xEB, //    SDL_SCANCODE_COMPUTER = 267, - DIK_MYCOMPUTER
349
    0xE5, //    SDL_SCANCODE_AC_SEARCH = 268, - DIK_WEBSEARCH
350
    0xB2, //    SDL_SCANCODE_AC_HOME = 269, - DIK_WEBHOME
351
    0xEA, //    SDL_SCANCODE_AC_BACK = 270, - DIK_WEBBACK
352
    0xE9, //    SDL_SCANCODE_AC_FORWARD = 271, - DIK_WEBFORWARD
353
    0xE8, //    SDL_SCANCODE_AC_STOP = 272, - DIK_WEBSTOP
354
    0xE7, //    SDL_SCANCODE_AC_REFRESH = 273, - DIK_WEBREFRESH
355
    0xE6, //    SDL_SCANCODE_AC_BOOKMARKS = 274, - DIK_WEBFAVORITES
356
 
357
    // These are values that Christian Walther added (for mac keyboard?).
358
    0x0, //     SDL_SCANCODE_BRIGHTNESSDOWN = 275,
359
    0x0, //     SDL_SCANCODE_BRIGHTNESSUP = 276,
360
    0x0, //     SDL_SCANCODE_DISPLAYSWITCH = 277, // display mirroring/dual display switch, video mode switch
361
    0x0, //     SDL_SCANCODE_KBDILLUMTOGGLE = 278,
362
    0x0, //     SDL_SCANCODE_KBDILLUMDOWN = 279,
363
    0x0, //     SDL_SCANCODE_KBDILLUMUP = 280,
364
    0x0, //     SDL_SCANCODE_EJECT = 281,
365
 
366
    0xDF, //    SDL_SCANCODE_SLEEP = 282, - DIK_SLEEP
367
 
368
    0x0, //     SDL_SCANCODE_APP1 = 283,
369
    0x0, //     SDL_SCANCODE_APP2 = 284,
370
         // end of Walther-keys
371
 
372
    // the rest up to 511 are currently not named in SDL
373
 
374
    0, 0, 0, 0, 0, 0,             // 285-290 unused
375
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 291-300 unused
376
 
377
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 301-320 unused
378
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 321-340 unused
379
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 341-360 unused
380
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 361-380 unused
381
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 381-400 unused
382
 
383
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 401-420 unused
384
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 421-440 unused
385
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 441-460 unused
386
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 461-480 unused
387
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 481-500 unused
388
 
389
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // 501-511 unused
390
};
391
 
392
#endif /* _SDL2_SCANCODE_TO_DINPUT_H_ */