Azerty keyboard support

As I understand it, the SDL_Keycodes are supposed to be Unicode values and should be the same on all operating systems (when using the same keyboard layout).
Because many (esp. older) games use Keycodes instead of Scancodes (and map SDL_Keycode to their own keycodes), this isn’t very helpful for all games. To make sure that at least the 123…90 keys can be used in a way that accommodates such old games, this hack was added that the number keys with the scancodes SDL_SCANCODE_1, SDL_SCANCODE_2, …, SDL_SCANCODE_9, SDL_SCANCODE_0 are always mapped to SDLK_1, SDLK_2, …, SDLK_9, SDLK_0.
See also https://bugzilla.libsdl.org/show_bug.cgi?id=3188 for discussion about it.

So if you want to use keys on the AZERTY-Keyboard that are not number-keys or other keys that already have a SDLK_* constant, you should be able to use the integer Unicode-value, see https://en.wikipedia.org/wiki/List_of_Unicode_characters (I guess that ù should be 249 then).
See also https://wiki.libsdl.org/SDLKeycodeLookup for a list of defined SDL_Keycodes, at least ?./% should be defined there.

However, I would suggest to use Scancodes internally (for your keybindings in the code and config), and translate them to Keycodes (and keycode names) only for display purposes (keybindings menu, “press key $name” hints, …), like:

SDL_Scancode sc = ...; // from event or config file or whatever
SDL_Keycode key = SDL_GetKeyFromScancode(sc);
const char* keyname = SDL_GetKeyName(key); // use this to display the name to the user

Furthermore, for text input, please use https://wiki.libsdl.org/SDL_TextInputEvent