Fix X11 key injection modifier release handling
This commit is contained in:
parent
993f51712b
commit
98b13d1069
2 changed files with 54 additions and 5 deletions
|
|
@ -437,11 +437,17 @@ class X11Adapter:
|
|||
if keycode == 0:
|
||||
continue
|
||||
keycodes.append(keycode)
|
||||
for code in keycodes:
|
||||
xtest.fake_input(dpy, X.KeyPress, code)
|
||||
for code in reversed(keycodes):
|
||||
xtest.fake_input(dpy, X.KeyRelease, code)
|
||||
dpy.flush()
|
||||
pressed: list[int] = []
|
||||
try:
|
||||
for code in keycodes:
|
||||
xtest.fake_input(dpy, X.KeyPress, code)
|
||||
pressed.append(code)
|
||||
finally:
|
||||
for code in reversed(pressed):
|
||||
xtest.fake_input(dpy, X.KeyRelease, code)
|
||||
# Ensure all synthetic key events are processed before the display
|
||||
# may be closed by callers.
|
||||
dpy.sync()
|
||||
|
||||
def _keysym_for_char(self, ch: str) -> tuple[int | None, bool]:
|
||||
if ch.isupper():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue