Кто-нибудь знает функцию xlib для захвата события нажатия клавиши без потери первоначального фокуса? Как избавиться от него?
(или "использовать XGrabKey() без генерации фокуса в стиле захвата"?)
(или "Как избавиться от событий NotifyGrab и NotifyUngrab для фокуса на уровне системы?)
XGrabKey потеряет фокус на нажатой клавише и восстановит фокус на нажатой клавише.
И я хочу уловить нажатие клавиши без ее утечки в исходное окно (так же, как XGrabKey может это сделать).
Литература:
-
... XGrabKey украдет фокус... https://bugs.launchpad.net/gtkhotkey/+bug/390552/comments/8
-
... Программа получает контроль, чтобы что-то сделать в ответ на комбинацию клавиш. Между тем, программа была временно сфокусирована... Во время XGrabKey (доска) откройте, какое окно было сфокусировано
-
... Функция XGrabKeyboard активно захватывает управление клавиатурой и генерирует события FocusIn и FocusOut... http://www.x.org/archive/X11R6.8.0/doc/XGrabKeyboard.3.html#toc3
-
... Я не вижу способ обеспечить текущее поведение на рабочем столе metacity (изменение и одновременное отображение всплывающего диалогового окна), не вызывая Захват типа сосредоточиться на окне... https://mail.gnome.org/archives/wm-spec-list/2007-May/msg00000.html
-
... Полноэкранный режим не должен выходить из событий FocusOut с NotifyGrab... 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
И я хочу перенести его в Linux с помощью XGrabKey() и XUngrabKey(): 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