43 lines
1.6 KiB
Diff
43 lines
1.6 KiB
Diff
From 0ad717edcf372425ddf2ba9926857419ab62f4f5 Mon Sep 17 00:00:00 2001
|
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Date: Wed, 29 May 2019 16:19:55 +1000
|
|
Subject: [PATCH xserver] Xi: return AlreadyGrabbed for key grabs > 255
|
|
|
|
We can't have high keycodes because everything in XKB relies on 8 bits. XI2's
|
|
API allows for 32-bit keycodes so we have to take those but nothing in the
|
|
server is really ready for this. The effect of this right now is that any high
|
|
keycode grab is clipped to 255 and thus ends up grabbing a different key
|
|
instead.
|
|
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=1697804
|
|
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
---
|
|
Xi/xipassivegrab.c | 10 ++++++++--
|
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/Xi/xipassivegrab.c b/Xi/xipassivegrab.c
|
|
index 65d5870f6..d30f51f3c 100644
|
|
--- a/Xi/xipassivegrab.c
|
|
+++ b/Xi/xipassivegrab.c
|
|
@@ -203,8 +203,14 @@ ProcXIPassiveGrabDevice(ClientPtr client)
|
|
¶m, XI2, &mask);
|
|
break;
|
|
case XIGrabtypeKeycode:
|
|
- status = GrabKey(client, dev, mod_dev, stuff->detail,
|
|
- ¶m, XI2, &mask);
|
|
+ /* XI2 allows 32-bit keycodes but thanks to XKB we can never
|
|
+ * implement this. Just return an error for all keycodes that
|
|
+ * cannot work anyway */
|
|
+ if (stuff->detail > 255)
|
|
+ status = XIAlreadyGrabbed;
|
|
+ else
|
|
+ status = GrabKey(client, dev, mod_dev, stuff->detail,
|
|
+ ¶m, XI2, &mask);
|
|
break;
|
|
case XIGrabtypeEnter:
|
|
case XIGrabtypeFocusIn:
|
|
--
|
|
2.21.0
|
|
|