mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-01-04 19:10:14 +01:00
Revert "xwayland: Don't run key behaviors and actions"
Due to a bug in gamescope who does not send the Wayland modifiers
events, this is causing a regression in X11 clients running on Xwayland
in gamescope, where the modifiers are not applied anymore.
This reverts commit cea92a3e09.
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1790
See-also: https://github.com/ValveSoftware/gamescope/issues/1740
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1781>
This commit is contained in:
parent
ffc3aa63d3
commit
f04096af3c
4 changed files with 6 additions and 14 deletions
|
|
@ -1284,12 +1284,11 @@ keyboard_handle_modifiers(void *data, struct wl_keyboard *keyboard,
|
|||
old_state = dev->key->xkbInfo->state;
|
||||
new_state = &dev->key->xkbInfo->state;
|
||||
|
||||
new_state->base_group = 0;
|
||||
new_state->latched_group = 0;
|
||||
new_state->locked_group = group & XkbAllGroupsMask;
|
||||
new_state->base_mods = mods_depressed & XkbAllModifiersMask;
|
||||
new_state->latched_mods = mods_latched & XkbAllModifiersMask;
|
||||
new_state->locked_mods = mods_locked & XkbAllModifiersMask;
|
||||
XkbLatchModifiers(dev, XkbAllModifiersMask,
|
||||
mods_latched & XkbAllModifiersMask);
|
||||
|
||||
XkbComputeDerivedState(dev->key->xkbInfo);
|
||||
|
||||
|
|
@ -1677,7 +1676,6 @@ add_device(struct xwl_seat *xwl_seat,
|
|||
dev->public.devicePrivate = xwl_seat;
|
||||
dev->type = SLAVE;
|
||||
dev->spriteInfo->spriteOwner = FALSE;
|
||||
dev->ignoreXkbActionsBehaviors = TRUE;
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
|
@ -3599,7 +3597,6 @@ InitInput(int argc, char *argv[])
|
|||
|
||||
mieqInit();
|
||||
|
||||
inputInfo.keyboard->ignoreXkbActionsBehaviors = TRUE;
|
||||
xwl_screen->input_registry = wl_display_get_registry(xwl_screen->display);
|
||||
wl_registry_add_listener(xwl_screen->input_registry, &input_listener,
|
||||
xwl_screen);
|
||||
|
|
|
|||
|
|
@ -631,8 +631,6 @@ typedef struct _DeviceIntRec {
|
|||
DeviceSendEventsProc sendEventsProc;
|
||||
|
||||
struct _SyncCounter *idle_counter;
|
||||
|
||||
Bool ignoreXkbActionsBehaviors; /* TRUE if keys don't trigger behaviors and actions */
|
||||
} DeviceIntRec;
|
||||
|
||||
typedef struct {
|
||||
|
|
|
|||
|
|
@ -1368,12 +1368,9 @@ XkbHandleActions(DeviceIntPtr dev, DeviceIntPtr kbd, DeviceEvent *event)
|
|||
(event->type == ET_ButtonPress));
|
||||
|
||||
if (pressEvent) {
|
||||
if (keyEvent) {
|
||||
if (kbd->ignoreXkbActionsBehaviors)
|
||||
act.type = XkbSA_NoAction;
|
||||
else
|
||||
act = XkbGetKeyAction(xkbi, &xkbi->state, key);
|
||||
} else {
|
||||
if (keyEvent)
|
||||
act = XkbGetKeyAction(xkbi, &xkbi->state, key);
|
||||
else {
|
||||
act = XkbGetButtonAction(kbd, dev, key);
|
||||
key |= BTN_ACT_FLAG;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ XkbProcessKeyboardEvent(DeviceEvent *event, DeviceIntPtr keybd)
|
|||
/* do anything to implement the behavior, but it *does* report that */
|
||||
/* key is hardwired */
|
||||
|
||||
if (!keybd->ignoreXkbActionsBehaviors && !(behavior.type & XkbKB_Permanent)) {
|
||||
if (!(behavior.type & XkbKB_Permanent)) {
|
||||
switch (behavior.type) {
|
||||
case XkbKB_Default:
|
||||
/* Neither of these should happen in practice, but ignore them
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue