我正在尝试编写一个跨平台的python程序,它将在后台运行,监视所有键盘事件,当它看到一些特定的快捷方式时,它会生成一个或多个自己的键盘事件.例如,将Ctrl- @映射到"my.email@address"可能很方便,因此每次某个程序询问我的电子邮件地址时,我只需要输入Ctrl- @即可.
我知道这些程序已经存在,我正在重新发明轮子......但我的目标只是了解有关低级键盘API的更多信息.此外,这个问题的答案可能对其他程序员有用,例如,如果他们想要启动需要密码的SSH连接,而不使用pexpect.
谢谢你的帮助.
注意:有一个类似的问题,但它仅限于Windows平台,并且不需要python.我正在寻找跨平台的python api.还有其他与键盘事件有关的问题,但显然他们对系统范围的键盘事件不感兴趣,只是特定于应用程序的键盘快捷键.
编辑:我应该在这里增加一个声明:我不是想写一个键盘记录.如果我需要一个键盘记录器,无论如何我都可以从网上下载一个.;-)
没有这样的API.我的解决方案是编写一个帮助器模块,根据其值使用不同的帮助器os.name
.
在Windows上,使用Win32扩展.
在Linux上,事情有点复杂,因为真正的操作系统可以保护用户不受键盘记录程序的影响[*].所以在这里,你需要一个root进程来监视其中一个句柄/dev/input/
.你最好的选择可能是寻找下面/dev/input/by-path/
包含字符串"kbd"
或条目的条目"keyboard"
.这应该适用于大多数情况.
[*]:Jeez,当我启动一个挂钩键盘事件的Python程序时,甚至我的病毒/木马扫描程序都会抱怨...
作为编写原始pykeylogger linux端口的人,我可以说没有真正的跨平台端口.基本上我重写了pyhook API,用于使用记录扩展从xserver本身捕获的键盘事件.当然,这假设记录扩展在那里,加载到x服务器.
从那里开始,它基本上只是检测你是在Windows上还是linux上,然后为操作系统加载正确的模块.其他一切都应该是相同的.
在pyxhook.py中查看pykeylogger源代码和implimentation.否则,只需加载该模块或pyhook,具体取决于操作系统.