@@ -1602,13 +1602,14 @@ static void Wayland_KeymapIterator(struct xkb_keymap *keymap, xkb_keycode_t key,
16021602{
16031603 SDL_WaylandSeat * seat = (SDL_WaylandSeat * )data ;
16041604 const xkb_keysym_t * syms ;
1605+ SDL_Scancode scancode = SDL_SCANCODE_UNKNOWN ;
1606+
1607+ // Only the shift, alt, level 3, level 5 and caps lock modifiers affect SDL keymaps.
16051608 const xkb_mod_mask_t xkb_valid_mod_mask = seat -> keyboard .xkb .shift_mask |
16061609 seat -> keyboard .xkb .alt_mask |
1607- seat -> keyboard .xkb .gui_mask |
16081610 seat -> keyboard .xkb .level3_mask |
16091611 seat -> keyboard .xkb .level5_mask |
16101612 seat -> keyboard .xkb .caps_mask ;
1611- SDL_Scancode scancode = SDL_SCANCODE_UNKNOWN ;
16121613
16131614 // Look up the scancode for hardware keyboards. Virtual keyboards get the scancode from the keysym.
16141615 if (!seat -> keyboard .is_virtual ) {
@@ -1647,7 +1648,6 @@ static void Wayland_KeymapIterator(struct xkb_keymap *keymap, xkb_keycode_t key,
16471648
16481649 const SDL_Keymod sdl_mod = (xkb_mod_masks [mask ] & seat -> keyboard .xkb .shift_mask ? SDL_KMOD_SHIFT : 0 ) |
16491650 (xkb_mod_masks [mask ] & seat -> keyboard .xkb .alt_mask ? SDL_KMOD_ALT : 0 ) |
1650- (xkb_mod_masks [mask ] & seat -> keyboard .xkb .gui_mask ? SDL_KMOD_GUI : 0 ) |
16511651 (xkb_mod_masks [mask ] & seat -> keyboard .xkb .level3_mask ? SDL_KMOD_MODE : 0 ) |
16521652 (xkb_mod_masks [mask ] & seat -> keyboard .xkb .level5_mask ? SDL_KMOD_LEVEL5 : 0 ) |
16531653 (xkb_mod_masks [mask ] & seat -> keyboard .xkb .caps_mask ? SDL_KMOD_CAPS : 0 );
0 commit comments