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

2024-05-16 04:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个跨平台的python程序,该程序将在后台运行,监视所有键盘事件,当它看到一些特定的快捷键时,它将生成一个或多个自己的键盘事件。例如,将Ctrl-@映射到“my.email@address”可能很方便,因此每当有程序要求我输入电子邮件地址时,我只需要键入Ctrl-@。

我知道这样的程序已经存在,我正在重新发明轮子。。。但我的目标只是进一步了解低级键盘api。此外,这个问题的答案可能对其他程序员有用,例如,如果他们希望启动一个需要密码的SSH连接,而不使用pexpect。

谢谢你的帮助。

注意:这里有keyboard-input-on-windows">a similar question,但它仅限于Windows平台,不需要python。我正在寻找一个跨平台的python api。还有其他与键盘事件相关的问题,但显然他们对系统范围的键盘事件不感兴趣,只是对特定于应用程序的键盘快捷键感兴趣。

编辑:我可能应该在这里添加一个免责声明:我确实不想写键盘记录程序。如果我需要一个键盘记录程序,我可以从网上下载一个。;-)


Tags: 程序api键入address电子邮件emailmy地址
3条回答

作为编写原始pykeylogger linux端口的人,我可以说没有真正的跨平台端口。实际上,我使用record扩展重新编写了键盘事件的pyhook API,以便从xserver本身捕获。当然,这假定记录扩展名在那里,并加载到x服务器中。

从这里开始,它基本上只是检测您是否在windows或linux上,然后为OS加载正确的模块。其他的都应该是一样的。

查看pykeylogger源代码,在pyxhook.py中获取类和实现。否则,只需加载该模块,或者改为pyhook,具体取决于操作系统。

我在Ubuntu9.10上做了一些测试。pykeylogger似乎不工作。我试图更改/etc/X11/xorg.conf以允许加载模块,但是在特定版本的ubuntu中没有xorg.conf,所以,在我看来,pykelogger没有在ubuntu 9.10上工作!!

没有这样的API。我的解决方案是编写一个helper模块,它将根据os.name的值使用不同的helper。

在Windows上,使用Win32 extensions

在Linux上,事情有点复杂,因为真正的操作系统保护他们的用户免受键盘记录者的攻击。因此,这里需要一个根进程来监视/dev/input/中的[]个句柄之一。您最好的选择可能是在/dev/input/by-path/下面查找一个包含字符串"kbd""keyboard"的条目。这在大多数情况下都应该有效。

[*]:天哪,当我启动连接到键盘事件的Python程序时,即使是我的病毒/特洛伊木马扫描器也不会抱怨。。。

相关问题 更多 >