From 85b6d6ea9d6669d0eac240db50a2b45df37450f9 Mon Sep 17 00:00:00 2001 From: Unrud Date: Sun, 2 Aug 2026 12:40:05 +0200 Subject: [PATCH] X11: Use XSync to improve reliability --- inputcontrol/controller_x11.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/inputcontrol/controller_x11.go b/inputcontrol/controller_x11.go index 093ea2b..5ba9179 100644 --- a/inputcontrol/controller_x11.go +++ b/inputcontrol/controller_x11.go @@ -147,7 +147,7 @@ func (p *x11Controller) changeKeyMappingLocked(keysymsPerKeycode C.int, } C.XChangeKeyboardMapping(p.display, C.int(keycode), keysymsPerKeycode, (*C.KeySym)(unsafe.Pointer(&keycodeMapping[0])), 1) - C.XFlush(p.display) + C.XSync(p.display, C.False) } func (p *x11Controller) getModKeycodesLocked() map[uint]C.KeyCode { @@ -236,7 +236,6 @@ func (p *x11Controller) keyboardKeys(keys []Keysym) error { var root, child C.Window var rootX, rootY, x, y C.int var activeMods C.uint - C.XSync(p.display, C.False) C.XQueryPointer(p.display, rootWindow, &root, &child, &rootX, &rootY, &x, &y, &activeMods) keycode, mods := p.findKeycodeLocked(keyboard, modKeycodes, activeMods, @@ -265,7 +264,7 @@ func (p *x11Controller) keyboardKeys(keys []Keysym) error { C.XTestFakeKeyEvent(p.display, C.uint(keycode), C.False, 0) p.sendModsLocked(modKeycodes, pressMods, false) p.sendModsLocked(modKeycodes, releaseMods, true) - C.XFlush(p.display) + C.XSync(p.display, C.False) if keycode == emptyKeycode { // race condition! time.Sleep(keyboardMappingDelay) @@ -309,7 +308,7 @@ func (p *x11Controller) sendButton(button uint, press bool) error { pressC = C.True } C.XTestFakeButtonEvent(p.display, C.uint(button), pressC, 0) - C.XFlush(p.display) + C.XSync(p.display, C.False) return nil } @@ -333,7 +332,7 @@ func (p *x11Controller) PointerMove(deltaX, deltaY int) error { return errors.New("X server connection closed") } C.XTestFakeRelativeMotionEvent(p.display, C.int(deltaX), C.int(deltaY), 0) - C.XFlush(p.display) + C.XSync(p.display, C.False) return nil }