Skip to content

Commit 58afb0d

Browse files
committed
wayland: Update xkbcommon names and types
Use the proper types for xkb mod masks and layout indices, rename the mod masks to reflect that they are bitmasks and not indices, and use the 'layout' nomenclature instead of the deprecated 'group' nomenclature.
1 parent c764e88 commit 58afb0d

File tree

2 files changed

+75
-78
lines changed

2 files changed

+75
-78
lines changed

src/video/wayland/SDL_waylandevents.c

Lines changed: 63 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1393,21 +1393,21 @@ static void Wayland_UpdateKeymap(SDL_WaylandSeat *seat)
13931393
xkb_mod_mask_t xkb_mask;
13941394
} const keymod_masks[] = {
13951395
{ SDL_KMOD_NONE, 0 },
1396-
{ SDL_KMOD_SHIFT, seat->keyboard.xkb.idx_shift },
1397-
{ SDL_KMOD_CAPS, seat->keyboard.xkb.idx_caps },
1398-
{ SDL_KMOD_SHIFT | SDL_KMOD_CAPS, seat->keyboard.xkb.idx_shift | seat->keyboard.xkb.idx_caps },
1399-
{ SDL_KMOD_MODE, seat->keyboard.xkb.idx_mod5 },
1400-
{ SDL_KMOD_MODE | SDL_KMOD_SHIFT, seat->keyboard.xkb.idx_mod5 | seat->keyboard.xkb.idx_shift },
1401-
{ SDL_KMOD_MODE | SDL_KMOD_CAPS, seat->keyboard.xkb.idx_mod5 | seat->keyboard.xkb.idx_caps },
1402-
{ SDL_KMOD_MODE | SDL_KMOD_SHIFT | SDL_KMOD_CAPS, seat->keyboard.xkb.idx_mod5 | seat->keyboard.xkb.idx_shift | seat->keyboard.xkb.idx_caps },
1403-
{ SDL_KMOD_LEVEL5, seat->keyboard.xkb.idx_mod3 },
1404-
{ SDL_KMOD_LEVEL5 | SDL_KMOD_SHIFT, seat->keyboard.xkb.idx_mod3 | seat->keyboard.xkb.idx_shift },
1405-
{ SDL_KMOD_LEVEL5 | SDL_KMOD_CAPS, seat->keyboard.xkb.idx_mod3 | seat->keyboard.xkb.idx_caps },
1406-
{ SDL_KMOD_LEVEL5 | SDL_KMOD_SHIFT | SDL_KMOD_CAPS, seat->keyboard.xkb.idx_mod3 | seat->keyboard.xkb.idx_shift | seat->keyboard.xkb.idx_caps },
1407-
{ SDL_KMOD_LEVEL5 | SDL_KMOD_MODE, seat->keyboard.xkb.idx_mod3 | seat->keyboard.xkb.idx_mod5 },
1408-
{ SDL_KMOD_LEVEL5 | SDL_KMOD_MODE | SDL_KMOD_SHIFT, seat->keyboard.xkb.idx_mod3 | seat->keyboard.xkb.idx_mod5 | seat->keyboard.xkb.idx_shift },
1409-
{ SDL_KMOD_LEVEL5 | SDL_KMOD_MODE | SDL_KMOD_CAPS, seat->keyboard.xkb.idx_mod3 | seat->keyboard.xkb.idx_mod5 | seat->keyboard.xkb.idx_caps },
1410-
{ SDL_KMOD_LEVEL5 | SDL_KMOD_MODE | SDL_KMOD_SHIFT | SDL_KMOD_CAPS, seat->keyboard.xkb.idx_mod3 | seat->keyboard.xkb.idx_mod5 | seat->keyboard.xkb.idx_shift | seat->keyboard.xkb.idx_caps },
1396+
{ SDL_KMOD_SHIFT, seat->keyboard.xkb.shift_mask },
1397+
{ SDL_KMOD_CAPS, seat->keyboard.xkb.caps_mask },
1398+
{ SDL_KMOD_SHIFT | SDL_KMOD_CAPS, seat->keyboard.xkb.shift_mask | seat->keyboard.xkb.caps_mask },
1399+
{ SDL_KMOD_MODE, seat->keyboard.xkb.level3_mask },
1400+
{ SDL_KMOD_MODE | SDL_KMOD_SHIFT, seat->keyboard.xkb.level3_mask | seat->keyboard.xkb.shift_mask },
1401+
{ SDL_KMOD_MODE | SDL_KMOD_CAPS, seat->keyboard.xkb.level3_mask | seat->keyboard.xkb.caps_mask },
1402+
{ SDL_KMOD_MODE | SDL_KMOD_SHIFT | SDL_KMOD_CAPS, seat->keyboard.xkb.level3_mask | seat->keyboard.xkb.shift_mask | seat->keyboard.xkb.caps_mask },
1403+
{ SDL_KMOD_LEVEL5, seat->keyboard.xkb.level5_mask },
1404+
{ SDL_KMOD_LEVEL5 | SDL_KMOD_SHIFT, seat->keyboard.xkb.level5_mask | seat->keyboard.xkb.shift_mask },
1405+
{ SDL_KMOD_LEVEL5 | SDL_KMOD_CAPS, seat->keyboard.xkb.level5_mask | seat->keyboard.xkb.caps_mask },
1406+
{ SDL_KMOD_LEVEL5 | SDL_KMOD_SHIFT | SDL_KMOD_CAPS, seat->keyboard.xkb.level5_mask | seat->keyboard.xkb.shift_mask | seat->keyboard.xkb.caps_mask },
1407+
{ SDL_KMOD_LEVEL5 | SDL_KMOD_MODE, seat->keyboard.xkb.level5_mask | seat->keyboard.xkb.level3_mask },
1408+
{ SDL_KMOD_LEVEL5 | SDL_KMOD_MODE | SDL_KMOD_SHIFT, seat->keyboard.xkb.level5_mask | seat->keyboard.xkb.level3_mask | seat->keyboard.xkb.shift_mask },
1409+
{ SDL_KMOD_LEVEL5 | SDL_KMOD_MODE | SDL_KMOD_CAPS, seat->keyboard.xkb.level5_mask | seat->keyboard.xkb.level3_mask | seat->keyboard.xkb.caps_mask },
1410+
{ SDL_KMOD_LEVEL5 | SDL_KMOD_MODE | SDL_KMOD_SHIFT | SDL_KMOD_CAPS, seat->keyboard.xkb.level5_mask | seat->keyboard.xkb.level3_mask | seat->keyboard.xkb.shift_mask | seat->keyboard.xkb.caps_mask },
14111411
};
14121412

14131413
if (!seat->keyboard.is_virtual) {
@@ -1428,8 +1428,8 @@ static void Wayland_UpdateKeymap(SDL_WaylandSeat *seat)
14281428
for (int i = 0; i < SDL_arraysize(keymod_masks); ++i) {
14291429
keymap.modstate = keymod_masks[i].sdl_mask;
14301430
WAYLAND_xkb_state_update_mask(keymap.state,
1431-
keymod_masks[i].xkb_mask & (seat->keyboard.xkb.idx_shift | seat->keyboard.xkb.idx_mod5 | seat->keyboard.xkb.idx_mod3), 0, keymod_masks[i].xkb_mask & seat->keyboard.xkb.idx_caps,
1432-
0, 0, seat->keyboard.xkb.current_group);
1431+
keymod_masks[i].xkb_mask & (seat->keyboard.xkb.shift_mask | seat->keyboard.xkb.level3_mask | seat->keyboard.xkb.level5_mask), 0, keymod_masks[i].xkb_mask & seat->keyboard.xkb.caps_mask,
1432+
0, 0, seat->keyboard.xkb.current_layout);
14331433
WAYLAND_xkb_keymap_key_for_each(seat->keyboard.xkb.keymap,
14341434
Wayland_keymap_iter,
14351435
&keymap);
@@ -1490,25 +1490,26 @@ static void keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,
14901490
}
14911491

14921492
#if SDL_XKBCOMMON_CHECK_VERSION(1, 10, 0)
1493-
seat->keyboard.xkb.idx_shift = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_MOD_NAME_SHIFT);
1494-
seat->keyboard.xkb.idx_ctrl = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_MOD_NAME_CTRL);
1495-
seat->keyboard.xkb.idx_alt = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_VMOD_NAME_ALT);
1496-
seat->keyboard.xkb.idx_gui = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_VMOD_NAME_SUPER);
1497-
seat->keyboard.xkb.idx_mod5 = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_VMOD_NAME_LEVEL3);
1498-
seat->keyboard.xkb.idx_mod3 = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_VMOD_NAME_LEVEL5);
1499-
seat->keyboard.xkb.idx_num = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_VMOD_NAME_NUM);
1500-
seat->keyboard.xkb.idx_caps = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_MOD_NAME_CAPS);
1493+
seat->keyboard.xkb.shift_mask = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_MOD_NAME_SHIFT);
1494+
seat->keyboard.xkb.ctrl_mask = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_MOD_NAME_CTRL);
1495+
seat->keyboard.xkb.alt_mask = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_VMOD_NAME_ALT);
1496+
seat->keyboard.xkb.gui_mask = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_VMOD_NAME_SUPER);
1497+
seat->keyboard.xkb.level3_mask = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_VMOD_NAME_LEVEL3);
1498+
seat->keyboard.xkb.level5_mask = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_VMOD_NAME_LEVEL5);
1499+
seat->keyboard.xkb.num_mask = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_VMOD_NAME_NUM);
1500+
seat->keyboard.xkb.caps_mask = WAYLAND_xkb_keymap_mod_get_mask(seat->keyboard.xkb.keymap, XKB_MOD_NAME_CAPS);
15011501
#else
15021502
#define GET_MOD_INDEX(mod) \
15031503
WAYLAND_xkb_keymap_mod_get_index(seat->keyboard.xkb.keymap, XKB_MOD_NAME_##mod)
1504-
seat->keyboard.xkb.idx_shift = 1 << GET_MOD_INDEX(SHIFT);
1505-
seat->keyboard.xkb.idx_ctrl = 1 << GET_MOD_INDEX(CTRL);
1506-
seat->keyboard.xkb.idx_alt = 1 << GET_MOD_INDEX(ALT);
1507-
seat->keyboard.xkb.idx_gui = 1 << GET_MOD_INDEX(LOGO);
1508-
seat->keyboard.xkb.idx_mod3 = 1 << GET_MOD_INDEX(MOD3);
1509-
seat->keyboard.xkb.idx_mod5 = 1 << GET_MOD_INDEX(MOD5);
1510-
seat->keyboard.xkb.idx_num = 1 << GET_MOD_INDEX(NUM);
1511-
seat->keyboard.xkb.idx_caps = 1 << GET_MOD_INDEX(CAPS);
1504+
seat->keyboard.xkb.shift_mask = 1 << GET_MOD_INDEX(SHIFT);
1505+
seat->keyboard.xkb.ctrl_mask = 1 << GET_MOD_INDEX(CTRL);
1506+
seat->keyboard.xkb.alt_mask = 1 << GET_MOD_INDEX(ALT);
1507+
seat->keyboard.xkb.gui_mask = 1 << GET_MOD_INDEX(LOGO);
1508+
// Note: This is correct: Mod3 is typically level 5 shift, and Mod5 is typically level 3 shift.
1509+
seat->keyboard.xkb.level3_mask = 1 << GET_MOD_INDEX(MOD5);
1510+
seat->keyboard.xkb.level5_mask = 1 << GET_MOD_INDEX(MOD3);
1511+
seat->keyboard.xkb.num_mask = 1 << GET_MOD_INDEX(NUM);
1512+
seat->keyboard.xkb.caps_mask = 1 << GET_MOD_INDEX(CAPS);
15121513
#undef GET_MOD_INDEX
15131514
#endif
15141515

@@ -1534,7 +1535,7 @@ static void keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,
15341535
seat->keyboard.is_virtual = WAYLAND_xkb_keymap_layout_get_name(seat->keyboard.xkb.keymap, 0) == NULL;
15351536

15361537
// Update the keymap if changed.
1537-
if (seat->keyboard.xkb.current_group != XKB_GROUP_INVALID) {
1538+
if (seat->keyboard.xkb.current_layout != XKB_LAYOUT_INVALID) {
15381539
Wayland_UpdateKeymap(seat);
15391540
}
15401541

@@ -1590,7 +1591,7 @@ static SDL_Scancode Wayland_GetScancodeForKey(SDL_WaylandSeat *seat, uint32_t ke
15901591
scancode = SDL_GetScancodeFromTable(SDL_SCANCODE_TABLE_XFREE86_2, key);
15911592
} else {
15921593
const xkb_keysym_t *syms;
1593-
if (WAYLAND_xkb_keymap_key_get_syms_by_level(seat->keyboard.xkb.keymap, key + 8, seat->keyboard.xkb.current_group, 0, &syms) > 0) {
1594+
if (WAYLAND_xkb_keymap_key_get_syms_by_level(seat->keyboard.xkb.keymap, key + 8, seat->keyboard.xkb.current_layout, 0, &syms) > 0) {
15941595
scancode = SDL_GetScancodeFromKeySym(syms[0], key);
15951596
}
15961597
}
@@ -1606,55 +1607,52 @@ static void Wayland_ReconcileModifiers(SDL_WaylandSeat *seat, bool key_pressed)
16061607
* pressed state via means other than pressing the physical key.
16071608
*/
16081609
if (!key_pressed) {
1609-
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.idx_shift) {
1610+
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.shift_mask) {
16101611
if (!(seat->keyboard.pressed_modifiers & SDL_KMOD_SHIFT)) {
16111612
seat->keyboard.pressed_modifiers |= SDL_KMOD_SHIFT;
16121613
}
16131614
} else {
16141615
seat->keyboard.pressed_modifiers &= ~SDL_KMOD_SHIFT;
16151616
}
16161617

1617-
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.idx_ctrl) {
1618+
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.ctrl_mask) {
16181619
if (!(seat->keyboard.pressed_modifiers & SDL_KMOD_CTRL)) {
16191620
seat->keyboard.pressed_modifiers |= SDL_KMOD_CTRL;
16201621
}
16211622
} else {
16221623
seat->keyboard.pressed_modifiers &= ~SDL_KMOD_CTRL;
16231624
}
16241625

1625-
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.idx_alt) {
1626+
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.alt_mask) {
16261627
if (!(seat->keyboard.pressed_modifiers & SDL_KMOD_ALT)) {
16271628
seat->keyboard.pressed_modifiers |= SDL_KMOD_ALT;
16281629
}
16291630
} else {
16301631
seat->keyboard.pressed_modifiers &= ~SDL_KMOD_ALT;
16311632
}
16321633

1633-
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.idx_gui) {
1634+
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.gui_mask) {
16341635
if (!(seat->keyboard.pressed_modifiers & SDL_KMOD_GUI)) {
16351636
seat->keyboard.pressed_modifiers |= SDL_KMOD_GUI;
16361637
}
16371638
} else {
16381639
seat->keyboard.pressed_modifiers &= ~SDL_KMOD_GUI;
16391640
}
16401641

1641-
/* Note: This is not backwards: in the default keymap, Mod5 is typically
1642-
* level 3 shift, and Mod3 is typically level 5 shift.
1643-
*/
1644-
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.idx_mod3) {
1645-
if (!(seat->keyboard.pressed_modifiers & SDL_KMOD_LEVEL5)) {
1646-
seat->keyboard.pressed_modifiers |= SDL_KMOD_LEVEL5;
1642+
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.level3_mask) {
1643+
if (!(seat->keyboard.pressed_modifiers & SDL_KMOD_MODE)) {
1644+
seat->keyboard.pressed_modifiers |= SDL_KMOD_MODE;
16471645
}
16481646
} else {
1649-
seat->keyboard.pressed_modifiers &= ~SDL_KMOD_LEVEL5;
1647+
seat->keyboard.pressed_modifiers &= ~SDL_KMOD_MODE;
16501648
}
16511649

1652-
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.idx_mod5) {
1653-
if (!(seat->keyboard.pressed_modifiers & SDL_KMOD_MODE)) {
1654-
seat->keyboard.pressed_modifiers |= SDL_KMOD_MODE;
1650+
if (seat->keyboard.xkb.wl_pressed_modifiers & seat->keyboard.xkb.level5_mask) {
1651+
if (!(seat->keyboard.pressed_modifiers & SDL_KMOD_LEVEL5)) {
1652+
seat->keyboard.pressed_modifiers |= SDL_KMOD_LEVEL5;
16551653
}
16561654
} else {
1657-
seat->keyboard.pressed_modifiers &= ~SDL_KMOD_MODE;
1655+
seat->keyboard.pressed_modifiers &= ~SDL_KMOD_LEVEL5;
16581656
}
16591657
}
16601658

@@ -1665,7 +1663,7 @@ static void Wayland_ReconcileModifiers(SDL_WaylandSeat *seat, bool key_pressed)
16651663
* The modifier will remain active until the latch/lock is released by
16661664
* the system.
16671665
*/
1668-
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.idx_shift) {
1666+
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.shift_mask) {
16691667
if (seat->keyboard.pressed_modifiers & SDL_KMOD_SHIFT) {
16701668
seat->keyboard.locked_modifiers &= ~SDL_KMOD_SHIFT;
16711669
seat->keyboard.locked_modifiers |= (seat->keyboard.pressed_modifiers & SDL_KMOD_SHIFT);
@@ -1676,7 +1674,7 @@ static void Wayland_ReconcileModifiers(SDL_WaylandSeat *seat, bool key_pressed)
16761674
seat->keyboard.locked_modifiers &= ~SDL_KMOD_SHIFT;
16771675
}
16781676

1679-
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.idx_ctrl) {
1677+
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.ctrl_mask) {
16801678
if (seat->keyboard.pressed_modifiers & SDL_KMOD_CTRL) {
16811679
seat->keyboard.locked_modifiers &= ~SDL_KMOD_CTRL;
16821680
seat->keyboard.locked_modifiers |= (seat->keyboard.pressed_modifiers & SDL_KMOD_CTRL);
@@ -1687,7 +1685,7 @@ static void Wayland_ReconcileModifiers(SDL_WaylandSeat *seat, bool key_pressed)
16871685
seat->keyboard.locked_modifiers &= ~SDL_KMOD_CTRL;
16881686
}
16891687

1690-
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.idx_alt) {
1688+
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.alt_mask) {
16911689
if (seat->keyboard.pressed_modifiers & SDL_KMOD_ALT) {
16921690
seat->keyboard.locked_modifiers &= ~SDL_KMOD_ALT;
16931691
seat->keyboard.locked_modifiers |= (seat->keyboard.pressed_modifiers & SDL_KMOD_ALT);
@@ -1698,7 +1696,7 @@ static void Wayland_ReconcileModifiers(SDL_WaylandSeat *seat, bool key_pressed)
16981696
seat->keyboard.locked_modifiers &= ~SDL_KMOD_ALT;
16991697
}
17001698

1701-
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.idx_gui) {
1699+
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.gui_mask) {
17021700
if (seat->keyboard.pressed_modifiers & SDL_KMOD_GUI) {
17031701
seat->keyboard.locked_modifiers &= ~SDL_KMOD_GUI;
17041702
seat->keyboard.locked_modifiers |= (seat->keyboard.pressed_modifiers & SDL_KMOD_GUI);
@@ -1709,27 +1707,26 @@ static void Wayland_ReconcileModifiers(SDL_WaylandSeat *seat, bool key_pressed)
17091707
seat->keyboard.locked_modifiers &= ~SDL_KMOD_GUI;
17101708
}
17111709

1712-
// As above, this is correct: Mod3 is typically level 5 shift, and Mod5 is typically level 3 shift.
1713-
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.idx_mod3) {
1714-
seat->keyboard.locked_modifiers |= SDL_KMOD_LEVEL5;
1710+
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.level3_mask) {
1711+
seat->keyboard.locked_modifiers |= SDL_KMOD_MODE;
17151712
} else {
1716-
seat->keyboard.locked_modifiers &= ~SDL_KMOD_LEVEL5;
1713+
seat->keyboard.locked_modifiers &= ~SDL_KMOD_MODE;
17171714
}
17181715

1719-
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.idx_mod5) {
1720-
seat->keyboard.locked_modifiers |= SDL_KMOD_MODE;
1716+
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.level5_mask) {
1717+
seat->keyboard.locked_modifiers |= SDL_KMOD_LEVEL5;
17211718
} else {
1722-
seat->keyboard.locked_modifiers &= ~SDL_KMOD_MODE;
1719+
seat->keyboard.locked_modifiers &= ~SDL_KMOD_LEVEL5;
17231720
}
17241721

17251722
// Capslock and Numlock can only be locked, not pressed.
1726-
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.idx_caps) {
1723+
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.caps_mask) {
17271724
seat->keyboard.locked_modifiers |= SDL_KMOD_CAPS;
17281725
} else {
17291726
seat->keyboard.locked_modifiers &= ~SDL_KMOD_CAPS;
17301727
}
17311728

1732-
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.idx_num) {
1729+
if (seat->keyboard.xkb.wl_locked_modifiers & seat->keyboard.xkb.num_mask) {
17331730
seat->keyboard.locked_modifiers |= SDL_KMOD_NUM;
17341731
} else {
17351732
seat->keyboard.locked_modifiers &= ~SDL_KMOD_NUM;
@@ -2055,12 +2052,12 @@ static void keyboard_handle_modifiers(void *data, struct wl_keyboard *keyboard,
20552052
}
20562053
}
20572054

2058-
if (group == seat->keyboard.xkb.current_group) {
2055+
if (group == seat->keyboard.xkb.current_layout) {
20592056
return;
20602057
}
20612058

20622059
// The layout changed, remap and fire an event. Virtual keyboards use the default keymap.
2063-
seat->keyboard.xkb.current_group = group;
2060+
seat->keyboard.xkb.current_layout = group;
20642061
Wayland_UpdateKeymap(seat);
20652062
}
20662063

@@ -3368,7 +3365,7 @@ void Wayland_DisplayCreateSeat(SDL_VideoData *display, struct wl_seat *wl_seat,
33683365
seat->wl_seat = wl_seat;
33693366
seat->display = display;
33703367
seat->registry_id = id;
3371-
seat->keyboard.xkb.current_group = XKB_GROUP_INVALID;
3368+
seat->keyboard.xkb.current_layout = XKB_LAYOUT_INVALID;
33723369

33733370
Wayland_SeatCreateDataDevice(seat);
33743371
Wayland_SeatCreatePrimarySelectionDevice(seat);

src/video/wayland/SDL_waylandevents_c.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -94,22 +94,22 @@ typedef struct SDL_WaylandSeat
9494
struct xkb_compose_table *compose_table;
9595
struct xkb_compose_state *compose_state;
9696

97-
// Keyboard layout "group"
98-
Uint32 current_group;
97+
// Current keyboard layout (aka 'group')
98+
xkb_layout_index_t current_layout;
9999

100100
// Modifier bitshift values
101-
Uint32 idx_shift;
102-
Uint32 idx_ctrl;
103-
Uint32 idx_alt;
104-
Uint32 idx_gui;
105-
Uint32 idx_mod3;
106-
Uint32 idx_mod5;
107-
Uint32 idx_num;
108-
Uint32 idx_caps;
101+
xkb_mod_mask_t shift_mask;
102+
xkb_mod_mask_t ctrl_mask;
103+
xkb_mod_mask_t alt_mask;
104+
xkb_mod_mask_t gui_mask;
105+
xkb_mod_mask_t level3_mask;
106+
xkb_mod_mask_t level5_mask;
107+
xkb_mod_mask_t num_mask;
108+
xkb_mod_mask_t caps_mask;
109109

110110
// Current system modifier flags
111-
Uint32 wl_pressed_modifiers;
112-
Uint32 wl_locked_modifiers;
111+
xkb_mod_mask_t wl_pressed_modifiers;
112+
xkb_mod_mask_t wl_locked_modifiers;
113113
} xkb;
114114
} keyboard;
115115

0 commit comments

Comments
 (0)