我正在尝试编写一个跨平台的 python 程序,它将在后台运行,监控所有键盘事件,当它看到一些特定的快捷方式时,它会生成一个或多个自己的键盘事件。例如,将 Ctrl-@ 映射到“my.email@address”可能会很方便,这样每次某些程序询问我的电子邮件地址时,我只需要键入 Ctrl-@。
我知道这样的程序已经存在,我正在重新发明轮子……但我的目标只是了解更多有关低级键盘 API 的信息。此外,这个问题的答案可能对其他程序员有用,例如,如果他们想在不使用 pexpect 的情况下启动需要密码的 SSH 连接。
感谢您的帮助。
注:有a similar question但仅限于windows平台,不需要python。我正在寻找一个跨平台的 python api。还有其他与键盘事件相关的问题,但显然他们对系统范围的键盘事件不感兴趣,只对特定于应用程序的键盘快捷键感兴趣。
编辑:我应该在这里添加一个免责声明:我不想写一个键盘记录器。如果我需要键盘记录器,无论如何我都可以从网上下载一个。 ;-)
最佳答案
没有这样的API。我的解决方案是编写一个辅助模块,它会根据 os.name
的值使用不同的辅助程序。
在 Windows 上,使用 Win32 extensions .
在 Linux 上,事情有点复杂,因为真正的操作系统保护他们的用户免受键盘记录器的侵害[*]。所以在这里,您将需要一个根进程来监视 /dev/input/
中的 [] 句柄之一。您最好的选择可能是在 /dev/input/by-path/
下面寻找一个条目,其中包含字符串 "kbd"
或 "keyboard"
。这在大多数情况下应该有效。
[*]:哎呀,当我启动一个 Hook 到键盘事件的 Python 程序时,即使是我的病毒/木马扫描器也不会提示...
关于python - 是否有跨平台的 python 低级 API 来捕获或生成键盘事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/676713/