有谁知道 xlib 函数可以在不丢失原始焦点的情况下捕获按键事件?如何摆脱它?
(或“使用 XGrabKey() 而不生成 Grab 式焦点”?)
(或“如何在系统级别摆脱 NotifyGrab 和 NotifyUngrab 焦点事件?)
XGrabKey 将失去对按下键的关注并恢复对释放键的关注。
而且我想捕获按键而不会将其泄漏到原始窗口(就像 XGrabKey 可以做到的那样)。
参考:
...XGrabKey 将窃取焦点... https://bugs.launchpad.net/gtkhotkey/+bug/390552/comments/8
...程序接收控制以响应组合键执行某些操作。同时,程序暂时被聚焦... 在XGrabKey(board)期间,发现哪个窗口被聚焦
...XGrabKeyboard 功能主动控制键盘并生成 FocusIn 和 FocusOut 事件... http://www.x.org/archive/X11R6.8.0/doc/XGrabKeyboard.3.html#toc3
...我看不到一种方法来提供 metacity 当前的桌面更改行为(同时更改和显示弹出对话框)而不导致窗口上出现 Grab 类型的焦点... https://mail.gnome .org/archives/wm-spec-list/2007-May/msg00000.html
...全屏模式不应在使用 NotifyGrab 的 FocusOut 事件上退出... https://bugzilla.mozilla.org/show_bug.cgi?id=578265
抓取键盘不允许改变焦点... 抓取键盘不允许改变焦点
Grabs 生成的焦点事件(XGrabKeyboard 的主动抓取和 XGrabKey 的被动抓取) http://www.x.org/releases/X11R7.6/doc/libX11/specs/libX11/libX11.html#Focus_Events_Generated_by_Grabs
XGrabKey 源代码:http ://cgit.freedesktop.org/xorg/lib/libX11/tree/src/GrKey.c也许我们可以修改它以摆脱聚焦事件?
有“DoFocusEvents(keybd,oldWin,grab->window,NotifyGrab);” 在 ActivateKeyboardGrab() 中: http ://cgit.freedesktop.org/xorg/xserver/tree/dix/events.c
我正在写一个按键组合(和鼠标移动)映射软件:https ://code.google.com/p/diyism-myboard/
我已经在 Windows 中使用 RegisterHotKey() 和 UnRegisterHotKey() 实现了这一点:https ://code.google.com/p/diyism-myboard/downloads/detail?name=MyBoard.pas
我想用 XGrabKey() 和 XUngrabKey() 将它迁移到 Linux:https ://code.google.com/p/diyism-myboard/downloads/detail?name=myboard.py
我已经创建了 10 美元的赏金来解决这个问题。我们需要更多的支持者来发放赏金。 https://www.bountysource.com/issues/1072081-right-button-menu-flashes-while-jkli-keys-move-the-mouse-pointer