Numpad scancodes have non-numpad keycodes

This allows the numpad to work as the user expects based on the numlock state. If the application needs to distinguish the keys, it can check to see whether the scancode is a numpad key or not.
This commit is contained in:
Sam Lantinga
2024-06-30 23:35:23 -07:00
parent 78dbf9be50
commit d4497ecdbd
8 changed files with 316 additions and 352 deletions

View File

@@ -288,7 +288,7 @@ static void UpdateKeymap(SDL_CocoaVideoData *data, SDL_bool send_event)
/* Make sure this scancode is a valid character scancode */
SDL_Scancode scancode = darwin_scancode_table[i];
if (scancode == SDL_SCANCODE_UNKNOWN ||
(SDL_GetDefaultKeyFromScancode(scancode, SDL_KMOD_NONE) & SDLK_SCANCODE_MASK)) {
scancode >= SDL_SCANCODE_CAPSLOCK) {
continue;
}

View File

@@ -39,229 +39,229 @@ https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
*/
static const SDL_Keycode emscripten_keycode_table[] = {
/* 0 */ SDLK_UNKNOWN,
/* 1 */ SDLK_UNKNOWN,
/* 2 */ SDLK_UNKNOWN,
/* 3 */ SDLK_CANCEL,
/* 4 */ SDLK_UNKNOWN,
/* 5 */ SDLK_UNKNOWN,
/* 6 */ SDLK_HELP,
/* 7 */ SDLK_UNKNOWN,
/* 8 */ SDLK_BACKSPACE,
/* 9 */ SDLK_TAB,
/* 10 */ SDLK_UNKNOWN,
/* 11 */ SDLK_UNKNOWN,
/* 12 */ SDLK_KP_5,
/* 13 */ SDLK_RETURN,
/* 14 */ SDLK_UNKNOWN,
/* 15 */ SDLK_UNKNOWN,
/* 16 */ SDLK_LSHIFT,
/* 17 */ SDLK_LCTRL,
/* 18 */ SDLK_LALT,
/* 19 */ SDLK_PAUSE,
/* 20 */ SDLK_CAPSLOCK,
/* 21 */ SDLK_UNKNOWN,
/* 22 */ SDLK_UNKNOWN,
/* 23 */ SDLK_UNKNOWN,
/* 24 */ SDLK_UNKNOWN,
/* 25 */ SDLK_UNKNOWN,
/* 26 */ SDLK_UNKNOWN,
/* 27 */ SDLK_ESCAPE,
/* 28 */ SDLK_UNKNOWN,
/* 29 */ SDLK_UNKNOWN,
/* 30 */ SDLK_UNKNOWN,
/* 31 */ SDLK_UNKNOWN,
/* 32 */ SDLK_SPACE,
/* 33 */ SDLK_PAGEUP,
/* 34 */ SDLK_PAGEDOWN,
/* 35 */ SDLK_END,
/* 36 */ SDLK_HOME,
/* 37 */ SDLK_LEFT,
/* 38 */ SDLK_UP,
/* 39 */ SDLK_RIGHT,
/* 40 */ SDLK_DOWN,
/* 41 */ SDLK_UNKNOWN,
/* 42 */ SDLK_UNKNOWN,
/* 43 */ SDLK_UNKNOWN,
/* 44 */ SDLK_UNKNOWN,
/* 45 */ SDLK_INSERT,
/* 46 */ SDLK_DELETE,
/* 47 */ SDLK_UNKNOWN,
/* 48 */ SDLK_0,
/* 49 */ SDLK_1,
/* 50 */ SDLK_2,
/* 51 */ SDLK_3,
/* 52 */ SDLK_4,
/* 53 */ SDLK_5,
/* 54 */ SDLK_6,
/* 55 */ SDLK_7,
/* 56 */ SDLK_8,
/* 57 */ SDLK_9,
/* 58 */ SDLK_UNKNOWN,
/* 59 */ SDLK_SEMICOLON,
/* 60 */ SDLK_BACKSLASH /*SDL_SCANCODE_NONUSBACKSLASH*/,
/* 61 */ SDLK_EQUALS,
/* 62 */ SDLK_UNKNOWN,
/* 63 */ SDLK_MINUS,
/* 64 */ SDLK_UNKNOWN,
/* 65 */ SDLK_A,
/* 66 */ SDLK_B,
/* 67 */ SDLK_C,
/* 68 */ SDLK_D,
/* 69 */ SDLK_E,
/* 70 */ SDLK_F,
/* 71 */ SDLK_G,
/* 72 */ SDLK_H,
/* 73 */ SDLK_I,
/* 74 */ SDLK_J,
/* 75 */ SDLK_K,
/* 76 */ SDLK_L,
/* 77 */ SDLK_M,
/* 78 */ SDLK_N,
/* 79 */ SDLK_O,
/* 80 */ SDLK_P,
/* 81 */ SDLK_Q,
/* 82 */ SDLK_R,
/* 83 */ SDLK_S,
/* 84 */ SDLK_T,
/* 85 */ SDLK_U,
/* 86 */ SDLK_V,
/* 87 */ SDLK_W,
/* 88 */ SDLK_X,
/* 89 */ SDLK_Y,
/* 90 */ SDLK_Z,
/* 91 */ SDLK_LGUI,
/* 92 */ SDLK_UNKNOWN,
/* 93 */ SDLK_APPLICATION,
/* 94 */ SDLK_UNKNOWN,
/* 95 */ SDLK_UNKNOWN,
/* 96 */ SDLK_KP_0,
/* 97 */ SDLK_KP_1,
/* 98 */ SDLK_KP_2,
/* 99 */ SDLK_KP_3,
/* 100 */ SDLK_KP_4,
/* 101 */ SDLK_KP_5,
/* 102 */ SDLK_KP_6,
/* 103 */ SDLK_KP_7,
/* 104 */ SDLK_KP_8,
/* 105 */ SDLK_KP_9,
/* 106 */ SDLK_KP_MULTIPLY,
/* 107 */ SDLK_KP_PLUS,
/* 108 */ SDLK_UNKNOWN,
/* 109 */ SDLK_KP_MINUS,
/* 110 */ SDLK_KP_PERIOD,
/* 111 */ SDLK_KP_DIVIDE,
/* 112 */ SDLK_F1,
/* 113 */ SDLK_F2,
/* 114 */ SDLK_F3,
/* 115 */ SDLK_F4,
/* 116 */ SDLK_F5,
/* 117 */ SDLK_F6,
/* 118 */ SDLK_F7,
/* 119 */ SDLK_F8,
/* 120 */ SDLK_F9,
/* 121 */ SDLK_F10,
/* 122 */ SDLK_F11,
/* 123 */ SDLK_F12,
/* 124 */ SDLK_F13,
/* 125 */ SDLK_F14,
/* 126 */ SDLK_F15,
/* 127 */ SDLK_F16,
/* 128 */ SDLK_F17,
/* 129 */ SDLK_F18,
/* 130 */ SDLK_F19,
/* 131 */ SDLK_F20,
/* 132 */ SDLK_F21,
/* 133 */ SDLK_F22,
/* 134 */ SDLK_F23,
/* 135 */ SDLK_F24,
/* 136 */ SDLK_UNKNOWN,
/* 137 */ SDLK_UNKNOWN,
/* 138 */ SDLK_UNKNOWN,
/* 139 */ SDLK_UNKNOWN,
/* 140 */ SDLK_UNKNOWN,
/* 141 */ SDLK_UNKNOWN,
/* 142 */ SDLK_UNKNOWN,
/* 143 */ SDLK_UNKNOWN,
/* 144 */ SDLK_NUMLOCKCLEAR,
/* 145 */ SDLK_SCROLLLOCK,
/* 146 */ SDLK_UNKNOWN,
/* 147 */ SDLK_UNKNOWN,
/* 148 */ SDLK_UNKNOWN,
/* 149 */ SDLK_UNKNOWN,
/* 150 */ SDLK_UNKNOWN,
/* 151 */ SDLK_UNKNOWN,
/* 152 */ SDLK_UNKNOWN,
/* 153 */ SDLK_UNKNOWN,
/* 154 */ SDLK_UNKNOWN,
/* 155 */ SDLK_UNKNOWN,
/* 156 */ SDLK_UNKNOWN,
/* 157 */ SDLK_UNKNOWN,
/* 158 */ SDLK_UNKNOWN,
/* 159 */ SDLK_UNKNOWN,
/* 160 */ SDLK_GRAVE,
/* 161 */ SDLK_UNKNOWN,
/* 162 */ SDLK_UNKNOWN,
/* 163 */ SDLK_KP_HASH, /*KaiOS phone keypad*/
/* 164 */ SDLK_UNKNOWN,
/* 165 */ SDLK_UNKNOWN,
/* 166 */ SDLK_UNKNOWN,
/* 167 */ SDLK_UNKNOWN,
/* 168 */ SDLK_UNKNOWN,
/* 169 */ SDLK_UNKNOWN,
/* 170 */ SDLK_KP_MULTIPLY, /*KaiOS phone keypad*/
/* 171 */ SDLK_RIGHTBRACKET,
/* 172 */ SDLK_UNKNOWN,
/* 173 */ SDLK_MINUS, /*FX*/
/* 174 */ SDLK_VOLUMEDOWN, /*IE, Chrome*/
/* 175 */ SDLK_VOLUMEUP, /*IE, Chrome*/
/* 176 */ SDLK_MEDIA_NEXT_TRACK, /*IE, Chrome*/
/* 177 */ SDLK_MEDIA_PREVIOUS_TRACK, /*IE, Chrome*/
/* 178 */ SDLK_UNKNOWN,
/* 179 */ SDLK_MEDIA_PLAY, /*IE, Chrome*/
/* 180 */ SDLK_UNKNOWN,
/* 181 */ SDLK_UNKNOWN,
/* 182 */ SDLK_VOLUMEDOWN, /*FX*/
/* 183 */ SDLK_VOLUMEUP, /*FX*/
/* 184 */ SDLK_UNKNOWN,
/* 185 */ SDLK_UNKNOWN,
/* 186 */ SDLK_SEMICOLON, /*IE, Chrome, D3E legacy*/
/* 187 */ SDLK_EQUALS, /*IE, Chrome, D3E legacy*/
/* 188 */ SDLK_COMMA,
/* 189 */ SDLK_MINUS, /*IE, Chrome, D3E legacy*/
/* 190 */ SDLK_PERIOD,
/* 191 */ SDLK_SLASH,
/* 192 */ SDLK_GRAVE, /*FX, D3E legacy (SDLK_APOSTROPHE in IE/Chrome)*/
/* 193 */ SDLK_UNKNOWN,
/* 194 */ SDLK_UNKNOWN,
/* 195 */ SDLK_UNKNOWN,
/* 196 */ SDLK_UNKNOWN,
/* 197 */ SDLK_UNKNOWN,
/* 198 */ SDLK_UNKNOWN,
/* 199 */ SDLK_UNKNOWN,
/* 200 */ SDLK_UNKNOWN,
/* 201 */ SDLK_UNKNOWN,
/* 202 */ SDLK_UNKNOWN,
/* 203 */ SDLK_UNKNOWN,
/* 204 */ SDLK_UNKNOWN,
/* 205 */ SDLK_UNKNOWN,
/* 206 */ SDLK_UNKNOWN,
/* 207 */ SDLK_UNKNOWN,
/* 208 */ SDLK_UNKNOWN,
/* 209 */ SDLK_UNKNOWN,
/* 210 */ SDLK_UNKNOWN,
/* 211 */ SDLK_UNKNOWN,
/* 212 */ SDLK_UNKNOWN,
/* 213 */ SDLK_UNKNOWN,
/* 214 */ SDLK_UNKNOWN,
/* 215 */ SDLK_UNKNOWN,
/* 216 */ SDLK_UNKNOWN,
/* 217 */ SDLK_UNKNOWN,
/* 218 */ SDLK_UNKNOWN,
/* 219 */ SDLK_LEFTBRACKET,
/* 220 */ SDLK_BACKSLASH,
/* 221 */ SDLK_RIGHTBRACKET,
/* 222 */ SDLK_APOSTROPHE, /*FX, D3E legacy*/
/* 0, 0x00 */ SDLK_UNKNOWN,
/* 1, 0x01 */ SDLK_UNKNOWN,
/* 2, 0x02 */ SDLK_UNKNOWN,
/* 3, 0x03 */ SDLK_CANCEL,
/* 4, 0x04 */ SDLK_UNKNOWN,
/* 5, 0x05 */ SDLK_UNKNOWN,
/* 6, 0x06 */ SDLK_HELP,
/* 7, 0x07 */ SDLK_UNKNOWN,
/* 8, 0x08 */ SDLK_BACKSPACE,
/* 9, 0x09 */ SDLK_TAB,
/* 10, 0x0a */ SDLK_UNKNOWN,
/* 11, 0x0b */ SDLK_UNKNOWN,
/* 12, 0x0c */ SDLK_KP_EQUALS,
/* 13, 0x0d */ SDLK_RETURN,
/* 14, 0x0e */ SDLK_UNKNOWN,
/* 15, 0x0f */ SDLK_UNKNOWN,
/* 16, 0x10 */ SDLK_LSHIFT,
/* 17, 0x11 */ SDLK_LCTRL,
/* 18, 0x12 */ SDLK_LALT,
/* 19, 0x13 */ SDLK_PAUSE,
/* 20, 0x14 */ SDLK_CAPSLOCK,
/* 21, 0x15 */ SDLK_UNKNOWN,
/* 22, 0x16 */ SDLK_UNKNOWN,
/* 23, 0x17 */ SDLK_UNKNOWN,
/* 24, 0x18 */ SDLK_UNKNOWN,
/* 25, 0x19 */ SDLK_UNKNOWN,
/* 26, 0x1a */ SDLK_UNKNOWN,
/* 27, 0x1b */ SDLK_ESCAPE,
/* 28, 0x1c */ SDLK_UNKNOWN,
/* 29, 0x1d */ SDLK_UNKNOWN,
/* 30, 0x1e */ SDLK_UNKNOWN,
/* 31, 0x1f */ SDLK_UNKNOWN,
/* 32, 0x20 */ SDLK_SPACE,
/* 33, 0x21 */ SDLK_PAGEUP,
/* 34, 0x22 */ SDLK_PAGEDOWN,
/* 35, 0x23 */ SDLK_END,
/* 36, 0x24 */ SDLK_HOME,
/* 37, 0x25 */ SDLK_LEFT,
/* 38, 0x26 */ SDLK_UP,
/* 39, 0x27 */ SDLK_RIGHT,
/* 40, 0x28 */ SDLK_DOWN,
/* 41, 0x29 */ SDLK_UNKNOWN,
/* 42, 0x2a */ SDLK_UNKNOWN,
/* 43, 0x2b */ SDLK_UNKNOWN,
/* 44, 0x2c */ SDLK_UNKNOWN,
/* 45, 0x2d */ SDLK_INSERT,
/* 46, 0x2e */ SDLK_DELETE,
/* 47, 0x2f */ SDLK_UNKNOWN,
/* 48, 0x30 */ SDLK_0,
/* 49, 0x31 */ SDLK_1,
/* 50, 0x32 */ SDLK_2,
/* 51, 0x33 */ SDLK_3,
/* 52, 0x34 */ SDLK_4,
/* 53, 0x35 */ SDLK_5,
/* 54, 0x36 */ SDLK_6,
/* 55, 0x37 */ SDLK_7,
/* 56, 0x38 */ SDLK_8,
/* 57, 0x39 */ SDLK_9,
/* 58, 0x3a */ SDLK_UNKNOWN,
/* 59, 0x3b */ SDLK_SEMICOLON,
/* 60, 0x3c */ SDLK_BACKSLASH /*SDL_SCANCODE_NONUSBACKSLASH*/,
/* 61, 0x3d */ SDLK_EQUALS,
/* 62, 0x3e */ SDLK_UNKNOWN,
/* 63, 0x3f */ SDLK_MINUS,
/* 64, 0x40 */ SDLK_UNKNOWN,
/* 65, 0x41 */ SDLK_A,
/* 66, 0x42 */ SDLK_B,
/* 67, 0x43 */ SDLK_C,
/* 68, 0x44 */ SDLK_D,
/* 69, 0x45 */ SDLK_E,
/* 70, 0x46 */ SDLK_F,
/* 71, 0x47 */ SDLK_G,
/* 72, 0x48 */ SDLK_H,
/* 73, 0x49 */ SDLK_I,
/* 74, 0x4a */ SDLK_J,
/* 75, 0x4b */ SDLK_K,
/* 76, 0x4c */ SDLK_L,
/* 77, 0x4d */ SDLK_M,
/* 78, 0x4e */ SDLK_N,
/* 79, 0x4f */ SDLK_O,
/* 80, 0x50 */ SDLK_P,
/* 81, 0x51 */ SDLK_Q,
/* 82, 0x52 */ SDLK_R,
/* 83, 0x53 */ SDLK_S,
/* 84, 0x54 */ SDLK_T,
/* 85, 0x55 */ SDLK_U,
/* 86, 0x56 */ SDLK_V,
/* 87, 0x57 */ SDLK_W,
/* 88, 0x58 */ SDLK_X,
/* 89, 0x59 */ SDLK_Y,
/* 90, 0x5a */ SDLK_Z,
/* 91, 0x5b */ SDLK_LGUI,
/* 92, 0x5c */ SDLK_UNKNOWN,
/* 93, 0x5d */ SDLK_APPLICATION,
/* 94, 0x5e */ SDLK_UNKNOWN,
/* 95, 0x5f */ SDLK_UNKNOWN,
/* 96, 0x60 */ SDLK_0, /* SDLK_KP_0 */
/* 97, 0x61 */ SDLK_1, /* SDLK_KP_1 */
/* 98, 0x62 */ SDLK_2, /* SDLK_KP_2 */
/* 99, 0x63 */ SDLK_3, /* SDLK_KP_3 */
/* 100, 0x64 */ SDLK_4, /* SDLK_KP_4 */
/* 101, 0x65 */ SDLK_5, /* SDLK_KP_5 */
/* 102, 0x66 */ SDLK_6, /* SDLK_KP_6 */
/* 103, 0x67 */ SDLK_7, /* SDLK_KP_7 */
/* 104, 0x68 */ SDLK_8, /* SDLK_KP_8 */
/* 105, 0x69 */ SDLK_9, /* SDLK_KP_9 */
/* 106, 0x6a */ SDLK_KP_MULTIPLY,
/* 107, 0x6b */ SDLK_KP_PLUS,
/* 108, 0x6c */ SDLK_UNKNOWN,
/* 109, 0x6d */ SDLK_KP_MINUS,
/* 110, 0x6e */ SDLK_PERIOD, /* SDLK_KP_PERIOD */
/* 111, 0x6f */ SDLK_KP_DIVIDE,
/* 112, 0x70 */ SDLK_F1,
/* 113, 0x71 */ SDLK_F2,
/* 114, 0x72 */ SDLK_F3,
/* 115, 0x73 */ SDLK_F4,
/* 116, 0x74 */ SDLK_F5,
/* 117, 0x75 */ SDLK_F6,
/* 118, 0x76 */ SDLK_F7,
/* 119, 0x77 */ SDLK_F8,
/* 120, 0x78 */ SDLK_F9,
/* 121, 0x79 */ SDLK_F10,
/* 122, 0x7a */ SDLK_F11,
/* 123, 0x7b */ SDLK_F12,
/* 124, 0x7c */ SDLK_F13,
/* 125, 0x7d */ SDLK_F14,
/* 126, 0x7e */ SDLK_F15,
/* 127, 0x7f */ SDLK_F16,
/* 128, 0x80 */ SDLK_F17,
/* 129, 0x81 */ SDLK_F18,
/* 130, 0x82 */ SDLK_F19,
/* 131, 0x83 */ SDLK_F20,
/* 132, 0x84 */ SDLK_F21,
/* 133, 0x85 */ SDLK_F22,
/* 134, 0x86 */ SDLK_F23,
/* 135, 0x87 */ SDLK_F24,
/* 136, 0x88 */ SDLK_UNKNOWN,
/* 137, 0x89 */ SDLK_UNKNOWN,
/* 138, 0x8a */ SDLK_UNKNOWN,
/* 139, 0x8b */ SDLK_UNKNOWN,
/* 140, 0x8c */ SDLK_UNKNOWN,
/* 141, 0x8d */ SDLK_UNKNOWN,
/* 142, 0x8e */ SDLK_UNKNOWN,
/* 143, 0x8f */ SDLK_UNKNOWN,
/* 144, 0x90 */ SDLK_NUMLOCKCLEAR,
/* 145, 0x91 */ SDLK_SCROLLLOCK,
/* 146, 0x92 */ SDLK_UNKNOWN,
/* 147, 0x93 */ SDLK_UNKNOWN,
/* 148, 0x94 */ SDLK_UNKNOWN,
/* 149, 0x95 */ SDLK_UNKNOWN,
/* 150, 0x96 */ SDLK_UNKNOWN,
/* 151, 0x97 */ SDLK_UNKNOWN,
/* 152, 0x98 */ SDLK_UNKNOWN,
/* 153, 0x99 */ SDLK_UNKNOWN,
/* 154, 0x9a */ SDLK_UNKNOWN,
/* 155, 0x9b */ SDLK_UNKNOWN,
/* 156, 0x9c */ SDLK_UNKNOWN,
/* 157, 0x9d */ SDLK_UNKNOWN,
/* 158, 0x9e */ SDLK_UNKNOWN,
/* 159, 0x9f */ SDLK_UNKNOWN,
/* 160, 0xa0 */ SDLK_GRAVE,
/* 161, 0xa1 */ SDLK_UNKNOWN,
/* 162, 0xa2 */ SDLK_UNKNOWN,
/* 163, 0xa3 */ SDLK_KP_HASH, /*KaiOS phone keypad*/
/* 164, 0xa4 */ SDLK_UNKNOWN,
/* 165, 0xa5 */ SDLK_UNKNOWN,
/* 166, 0xa6 */ SDLK_UNKNOWN,
/* 167, 0xa7 */ SDLK_UNKNOWN,
/* 168, 0xa8 */ SDLK_UNKNOWN,
/* 169, 0xa9 */ SDLK_UNKNOWN,
/* 170, 0xaa */ SDLK_KP_MULTIPLY, /*KaiOS phone keypad*/
/* 171, 0xab */ SDLK_RIGHTBRACKET,
/* 172, 0xac */ SDLK_UNKNOWN,
/* 173, 0xad */ SDLK_MINUS, /*FX*/
/* 174, 0xae */ SDLK_VOLUMEDOWN, /*IE, Chrome*/
/* 175, 0xaf */ SDLK_VOLUMEUP, /*IE, Chrome*/
/* 176, 0xb0 */ SDLK_MEDIA_NEXT_TRACK, /*IE, Chrome*/
/* 177, 0xb1 */ SDLK_MEDIA_PREVIOUS_TRACK, /*IE, Chrome*/
/* 178, 0xb2 */ SDLK_UNKNOWN,
/* 179, 0xb3 */ SDLK_MEDIA_PLAY, /*IE, Chrome*/
/* 180, 0xb4 */ SDLK_UNKNOWN,
/* 181, 0xb5 */ SDLK_UNKNOWN,
/* 182, 0xb6 */ SDLK_VOLUMEDOWN, /*FX*/
/* 183, 0xb7 */ SDLK_VOLUMEUP, /*FX*/
/* 184, 0xb8 */ SDLK_UNKNOWN,
/* 185, 0xb9 */ SDLK_UNKNOWN,
/* 186, 0xba */ SDLK_SEMICOLON, /*IE, Chrome, D3E legacy*/
/* 187, 0xbb */ SDLK_EQUALS, /*IE, Chrome, D3E legacy*/
/* 188, 0xbc */ SDLK_COMMA,
/* 189, 0xbd */ SDLK_MINUS, /*IE, Chrome, D3E legacy*/
/* 190, 0xbe */ SDLK_PERIOD,
/* 191, 0xbf */ SDLK_SLASH,
/* 192, 0xc0 */ SDLK_GRAVE, /*FX, D3E legacy (SDLK_APOSTROPHE in IE/Chrome)*/
/* 193, 0xc1 */ SDLK_UNKNOWN,
/* 194, 0xc2 */ SDLK_UNKNOWN,
/* 195, 0xc3 */ SDLK_UNKNOWN,
/* 196, 0xc4 */ SDLK_UNKNOWN,
/* 197, 0xc5 */ SDLK_UNKNOWN,
/* 198, 0xc6 */ SDLK_UNKNOWN,
/* 199, 0xc7 */ SDLK_UNKNOWN,
/* 200, 0xc8 */ SDLK_UNKNOWN,
/* 201, 0xc9 */ SDLK_UNKNOWN,
/* 202, 0xca */ SDLK_UNKNOWN,
/* 203, 0xcb */ SDLK_UNKNOWN,
/* 204, 0xcc */ SDLK_UNKNOWN,
/* 205, 0xcd */ SDLK_UNKNOWN,
/* 206, 0xce */ SDLK_UNKNOWN,
/* 207, 0xcf */ SDLK_UNKNOWN,
/* 208, 0xd0 */ SDLK_UNKNOWN,
/* 209, 0xd1 */ SDLK_UNKNOWN,
/* 210, 0xd2 */ SDLK_UNKNOWN,
/* 211, 0xd3 */ SDLK_UNKNOWN,
/* 212, 0xd4 */ SDLK_UNKNOWN,
/* 213, 0xd5 */ SDLK_UNKNOWN,
/* 214, 0xd6 */ SDLK_UNKNOWN,
/* 215, 0xd7 */ SDLK_UNKNOWN,
/* 216, 0xd8 */ SDLK_UNKNOWN,
/* 217, 0xd9 */ SDLK_UNKNOWN,
/* 218, 0xda */ SDLK_UNKNOWN,
/* 219, 0xdb */ SDLK_LEFTBRACKET,
/* 220, 0xdc */ SDLK_BACKSLASH,
/* 221, 0xdd */ SDLK_RIGHTBRACKET,
/* 222, 0xde */ SDLK_APOSTROPHE, /*FX, D3E legacy*/
};
/*
@@ -513,56 +513,6 @@ static SDL_Keycode Emscripten_MapKeyCode(const EmscriptenKeyboardEvent *keyEvent
default:
break;
}
} else if (keyEvent->location == DOM_KEY_LOCATION_NUMPAD) {
switch (keycode) {
case SDLK_0:
case SDLK_INSERT:
keycode = SDLK_KP_0;
break;
case SDLK_1:
case SDLK_END:
keycode = SDLK_KP_1;
break;
case SDLK_2:
case SDLK_DOWN:
keycode = SDLK_KP_2;
break;
case SDLK_3:
case SDLK_PAGEDOWN:
keycode = SDLK_KP_3;
break;
case SDLK_4:
case SDLK_LEFT:
keycode = SDLK_KP_4;
break;
case SDLK_5:
keycode = SDLK_KP_5;
break;
case SDLK_6:
case SDLK_RIGHT:
keycode = SDLK_KP_6;
break;
case SDLK_7:
case SDLK_HOME:
keycode = SDLK_KP_7;
break;
case SDLK_8:
case SDLK_UP:
keycode = SDLK_KP_8;
break;
case SDLK_9:
case SDLK_PAGEUP:
keycode = SDLK_KP_9;
break;
case SDLK_RETURN:
keycode = SDLK_KP_ENTER;
break;
case SDLK_DELETE:
keycode = SDLK_KP_PERIOD;
break;
default:
break;
}
}
}
}

View File

@@ -1109,7 +1109,7 @@ static void Wayland_keymap_iter(struct xkb_keymap *keymap, xkb_keycode_t key, vo
/* Note: The default SDL scancode table sets this to right alt instead of AltGr/Mode, so handle it separately. */
if (syms[0] != XKB_KEY_ISO_Level3_Shift) {
keycode = SDL_GetDefaultKeyFromScancode(sc, SDL_KMOD_NONE);
keycode = SDL_GetDefaultKeyFromScancode(sc, sdlKeymap->modstate);
} else {
keycode = SDLK_MODE;
}

View File

@@ -106,13 +106,7 @@ void WIN_UpdateKeymap(SDL_bool send_event)
/* Make sure this scancode is a valid character scancode */
scancode = windows_scancode_table[i];
if (scancode == SDL_SCANCODE_UNKNOWN ||
(SDL_GetDefaultKeyFromScancode(scancode, SDL_KMOD_NONE) & SDLK_SCANCODE_MASK)) {
continue;
}
/* If this key is one of the non-mappable keys, ignore it */
/* Uncomment the second part to re-enable the behavior of not mapping the "`"(grave) key to the users actual keyboard layout */
if (scancode == SDL_SCANCODE_DELETE /*|| scancode == SDL_SCANCODE_GRAVE*/) {
scancode >= SDL_SCANCODE_CAPSLOCK) {
continue;
}

View File

@@ -382,30 +382,7 @@ void X11_UpdateKeymap(SDL_VideoDevice *_this, SDL_bool send_event)
if (!keycode) {
SDL_Scancode keyScancode = SDL_GetScancodeFromKeySym(keysym, (KeyCode)i);
switch (keyScancode) {
case SDL_SCANCODE_UNKNOWN:
keycode = SDLK_UNKNOWN;
break;
case SDL_SCANCODE_RETURN:
keycode = SDLK_RETURN;
break;
case SDL_SCANCODE_ESCAPE:
keycode = SDLK_ESCAPE;
break;
case SDL_SCANCODE_BACKSPACE:
keycode = SDLK_BACKSPACE;
break;
case SDL_SCANCODE_TAB:
keycode = SDLK_TAB;
break;
case SDL_SCANCODE_DELETE:
keycode = SDLK_DELETE;
break;
default:
keycode = SDL_SCANCODE_TO_KEYCODE(keyScancode);
break;
}
keycode = SDL_GetDefaultKeyFromScancode(keyScancode, keymod_masks[m].sdl_mask);
}
SDL_SetKeymapEntry(keymap, scancode, keymod_masks[m].sdl_mask, keycode);
}