Warum generiert XGrabKey zusätzliche Focus-Out- und Focus-In-Ereignisse?

Kennt jemand eine xlib-Funktion, um ein Tastendruckereignis abzufangen, ohne den ursprünglichen Fokus zu verlieren? Wie kann man es loswerden?

(oder "um XGrabKey () zu verwenden, ohne ein Grab-Style-Focusout zu generieren"?)

(oder "Wie entferne ich NotifyGrab- und NotifyUngrab-Fokusereignisse auf Systemebene?)

Der XGrabKey verliert den Fokus bei gedrückter Taste und stellt den Fokus bei losgelassener Taste wieder her.

Und ich möchte den Tastendruck abfangen, ohne ihn in das ursprüngliche Fenster zu lecken (so wie es XGrabKey kann).

Verweise:

... XGrabKey wird Fokus stehlen ...https://bugs.launchpad.net/gtkhotkey/+bug/390552/comments/8

... Das Programm erhält die Kontrolle, als Reaktion auf die Tastenkombination etwas zu tun. Inzwischen wurde das Programm vorübergehend fokussiert ...Ermitteln Sie während XGrabKey (board), welches Fenster fokussiert wurde

... Die XGrabKeyboard-Funktion übernimmt aktiv die Steuerung der Tastatur und generiert FocusIn- und FocusOut-Ereignisse ...http://www.x.org/archive/X11R6.8.0/doc/XGrabKeyboard.3.html#toc3

... Ich kann keine Möglichkeit finden, das aktuelle Desktop-Änderungsverhalten von Metacity (gleichzeitiges Ändern und Anzeigen des Popup-Dialogfelds) bereitzustellen, ohne einen Grab-Typ-Fokus im Fenster zu verursachen ...https://mail.gnome.org/archives/wm-spec-list/2007-May/msg00000.html

... Der Vollbildmodus sollte bei FocusOut-Ereignissen mit NotifyGrab nicht beendet werden ...https://bugzilla.mozilla.org/show_bug.cgi?id=578265

Das Greifen der Tastatur erlaubt es nicht, den Fokus zu ändern ...Wenn Sie die Tastatur greifen, kann der Fokus nicht geändert werden

Von Grabs generierte Fokusereignisse (sowohl das aktive Greifen von XGrabKeyboard als auch das passive Greifen von XGrabKey)http://www.x.org/releases/X11R7.6/doc/libX11/specs/libX11/libX11.html#Focus_Events_Generated_by_Grabs

Der XGrabKey-Quellcode:http://cgit.freedesktop.org/xorg/lib/libX11/tree/src/GrKey.c Vielleicht könnten wir dies ändern, um Fokus-Out-Ereignisse loszuwerden?

es gibt "DoFocusEvents (keybd, oldWin, grab-> window, NotifyGrab)"; in ActivateKeyboardGrab ():http://cgit.freedesktop.org/xorg/xserver/tree/dix/events.c

Ich schreibe einen Tastendruck für die Mapping-Software für Tastenkombinationen (und Mausbewegungen):https://code.google.com/p/diyism-myboard/

Ich habe es in Windows mit RegisterHotKey () und UnRegisterHotKey () realisiert:https://code.google.com/p/diyism-myboard/downloads/detail?name=MyBoard.pas

Und ich möchte es mit XGrabKey () und XUngrabKey () nach Linux migrieren:https://code.google.com/p/diyism-myboard/downloads/detail?name=myboard.py

Ich habe ein Kopfgeld in Höhe von 10 US-Dollar geschaffen, um dieses Problem zu lösen. Wir brauchen mehr Unterstützer, um Kopfgelder zu platzieren.https://www.bountysource.com/issues/1072081-right-button-menu-flashes-while-jkli-keys-move-the-mouse-pointer

Antworten auf die Frage(7)

Ihre Antwort auf die Frage