Python 禁用/重定向键盘输入

5 投票
2 回答
5355 浏览
提问于 2025-04-15 12:04

我正在用Python为Xubuntu写一个宏生成器/键盘重映射工具。

我已经搞定了如何拦截和记录按键,也能发送我想记录的按键,但我还没找到怎么阻止按键输入。我需要禁用键盘输入来重新映射一个键。比如说,如果我想在按下‘s’键时发送‘a’,我现在可以记录‘a’这个按键,然后设置在按下‘s’键时播放它。不过,我无法阻止‘s’这个按键的输入和它一起发送。

我使用了pyxhook模块,这是一个开源键盘记录器里的钩子,还有Python x库里的xtest虚拟输入方法。

我记得在某个地方看到过,有人通过使用tkinter把所有按键输入重定向到一个不可见的窗口,从而阻止所有键盘输入。如果有人能分享这个方法,那就太好了。

我需要一种方法,可以阻止所有按键输入,但又不关闭我的键盘钩子。

2 个回答

0

我有一个键盘钩子,可以检测到X事件。我想找到一种方法,能够全局地阻止一个特定的键盘事件发送到某个窗口。如果能通过访问事件队列并把这个键盘事件从中移除,那就最好不过了。看起来使用Python的Xlib库应该可以做到,但我就是搞不明白怎么操作。

1

我觉得这主要还是要看你使用的环境:curses和activestate的方案适合命令行,但如果你想在桌面环境(DE)中运行,就需要和那个桌面环境对接。你可以看看Python的Qt或GTK绑定,或者有一个叫python-xlib的库,可能可以让你直接连接到X系统。

所以我想答案就是“这要看情况”。你是在找控制台的无回显功能,还是想要一个桌面环境的文本替换程序,或者是类似xmodmap的布局更改工具呢?

撰写回答