Заменить глобальную горячую клавишу Alt-F2 в gnome, когда моя программа находится на переднем плане

Моя проблема аналогична этому: http://forum.winehq.org/viewtopic.php?t=14451

Gnome, похоже, вызывает XGrabKey() для Alt-F2, но это также горячая клавиша в моей программе. Как заставить мою программу получать это событие вместо оболочки Gnome, когда оно находится на переднем плане?

Если я вызову XGrabKey(), он вернет BadAccess. Если я вызову XGrabKeyboard(), то моя программа будет подавлять все другие глобальные горячие клавиши.

1 ответ

Это невозможно. Вы не получаете это событие. Корневое окно получает нажатие клавиши и принадлежит диспетчеру окон. Затем оконный менеджер делегирует нажатие клавиши. Глобальные ярлыки имеют приоритет.

Злобой может быть изменение глобальных ярлыков Gnome во время работы программы. Для этого пользователи будут сжигать ваш дом.

Другой альтернативой является, как вы упомянули, захватить клавиатуру. Затем вы получаете события вместо корневого окна. Вы можете потянуть злобный взломанный прохождение клавиш, которые вам не интересны (другие глобальные ярлыки) к корневому окну через расширение XTest. Для этого пользователи будут сжигать ваш дом.

Вероятно, пользователи будут довольны, если вы измените свой ярлык.

licensed under cc by-sa 3.0 with attribution.