diff -r 183936dd34d5 src/events/SDL_keyboard.c --- a/src/events/SDL_keyboard.c Tue Nov 17 12:15:35 2015 -0500 +++ b/src/events/SDL_keyboard.c Mon Nov 23 02:01:51 2015 +0100 @@ -586,12 +586,21 @@ SDL_SetKeymap(int start, SDL_Keycode * keys, int length) { SDL_Keyboard *keyboard = &SDL_keyboard; + SDL_Scancode sc; if (start < 0 || start + length > SDL_NUM_SCANCODES) { return; } SDL_memcpy(&keyboard->keymap[start], keys, sizeof(*keys) * length); + + /* always map the QWERTY number keys to the numbers to work around problems + * with AZERTY layouts that otherwise map those to invalid keycodes, see + * https://bugzilla.libsdl.org/show_bug.cgi?id=3188 */ + keyboard->keymap[SDL_SCANCODE_0] = SDLK_0; + for(sc = SDL_SCANCODE_1; sc <= SDL_SCANCODE_9; ++sc) { + keyboard->keymap[sc] = SDLK_1 + (sc - SDL_SCANCODE_1); + } } void