python - 是否有跨平台的 python 低级 API 来捕获或生成键盘事件?

标签 python cross-platform keyboard-events low-level-api

我正在尝试编写一个跨平台的 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/

相关文章:

javascript - 键盘小键盘分隔键 COMMA 与 DOT

c - 从Linux输入设备访问键

Python GIL 和线程同步

python - Python : How to match a word pattern, 中的正则表达式如果前面没有另一个可变长度的单词?

python - 如何使用 python 将大文件从源文件分块复制到目标文件?

javascript - Flask 后台运行函数时,如何给页面添加加载gif?

c# - 具有类似 WPF 的 GUI 创建的多平台编程语言?

windows - 使用 Qt 4 与 Qt 5 开发适用于 Windows 和 OS X 的应用程序?

linux - 如何从命令行在 *nix 中将文件显示为 "selected"?

macos - 在 OSX 中,如何确定哪个键盘生成了 NSEvent?