diff --git a/src/api/system.c b/src/api/system.c index 7c98f45c..2c1ca63c 100644 --- a/src/api/system.c +++ b/src/api/system.c @@ -104,6 +104,11 @@ static const char *get_key_name(const SDL_Event *e, char *buf) { !(e->key.keysym.mod & KMOD_NUM)) { return numpad[scancode - SDL_SCANCODE_KP_1]; } else { + /* We need to correctly handle non-standard layouts such as dvorak. + Therefore, if a Latin letter(code<128) is pressed in the current layout, + then we transmit it as it is. But we also need to support shortcuts in + other languages, so for non-Latin characters we pass the scancode that + matches the letter in the QWERTY layout. */ if (e->key.keysym.sym <= 128) strcpy(buf, SDL_GetKeyName(e->key.keysym.sym)); else