【发布时间】:2010-09-26 12:47:21
【问题描述】:
考虑一个应用程序,它希望在获得焦点时抓住键盘,以便捕获所有窗口管理器命令(Alt+F4 等)进行处理。现在,这有一个缺点,即用户在抓住键盘时无法通过键盘切换到另一个应用程序或虚拟桌面。我想要一个用户定义的组合键白名单(例如,用于切换虚拟桌面的组合键),这些组合键被排除在抓取之外。
我可以想到两种可能的方法。当一个列入白名单的关键事件到达时,要么
- 不知何故告诉 X 像往常一样继续处理它。这听起来像是一种更自然的方法,但我找不到这样做的方法,或者
- 松开键盘并手动将事件重新发送到窗口管理器进行处理,但是我不知道将它发送到哪里(根窗口?)或者这是否可行。
任何人都可以填写这些空白吗?还有其他建议吗?
如果没有办法从抓取中排除按键,我想我将不得不接受一个“退出键”,它在按下时会松开键盘。不过,用户必须同时按下这两个按钮,然后按下窗口管理器命令,这不是很好。
【问题讨论】: