Added support for multiple distinct keyboards
This commit is contained in:
@@ -335,8 +335,8 @@ static void SDL_LogEvent(const SDL_Event *event)
|
||||
#undef PRINT_KEYDEV_EVENT
|
||||
|
||||
#define PRINT_KEY_EVENT(event) \
|
||||
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u windowid=%u state=%s repeat=%s scancode=%u keycode=%u mod=%u)", \
|
||||
(uint)event->key.timestamp, (uint)event->key.windowID, \
|
||||
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u windowid=%u which=%u state=%s repeat=%s scancode=%u keycode=%u mod=%u)", \
|
||||
(uint)event->key.timestamp, (uint)event->key.windowID, (uint)event->key.which, \
|
||||
event->key.state == SDL_PRESSED ? "pressed" : "released", \
|
||||
event->key.repeat ? "true" : "false", \
|
||||
(uint)event->key.keysym.scancode, \
|
||||
|
||||
@@ -945,9 +945,6 @@ static int SDL_SendKeyboardKeyInternal(Uint64 timestamp, Uint32 flags, SDL_Keybo
|
||||
Uint8 repeat = SDL_FALSE;
|
||||
const Uint8 source = flags & KEYBOARD_SOURCE_MASK;
|
||||
|
||||
/* We currently don't have raw keyboard mode, so all key events are global */
|
||||
keyboardID = SDL_GLOBAL_KEYBOARD_ID;
|
||||
|
||||
if (scancode == SDL_SCANCODE_UNKNOWN || scancode >= SDL_NUM_SCANCODES) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -908,7 +908,7 @@ void X11_HandleKeyEvent(SDL_VideoDevice *_this, SDL_WindowData *windowdata, SDL_
|
||||
if (xevent->type == KeyPress) {
|
||||
/* Don't send the key if it looks like a duplicate of a filtered key sent by an IME */
|
||||
if (xevent->xkey.keycode != videodata->filter_code || xevent->xkey.time != videodata->filter_time) {
|
||||
SDL_SendKeyboardKey(0, SDL_GLOBAL_KEYBOARD_ID, SDL_PRESSED, videodata->key_layout[keycode]);
|
||||
SDL_SendKeyboardKey(0, keyboardID, SDL_PRESSED, videodata->key_layout[keycode]);
|
||||
}
|
||||
if (*text) {
|
||||
SDL_SendKeyboardText(text);
|
||||
@@ -918,7 +918,7 @@ void X11_HandleKeyEvent(SDL_VideoDevice *_this, SDL_WindowData *windowdata, SDL_
|
||||
/* We're about to get a repeated key down, ignore the key up */
|
||||
return;
|
||||
}
|
||||
SDL_SendKeyboardKey(0, SDL_GLOBAL_KEYBOARD_ID, SDL_RELEASED, videodata->key_layout[keycode]);
|
||||
SDL_SendKeyboardKey(0, keyboardID, SDL_RELEASED, videodata->key_layout[keycode]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user