我正在尝试编写一个跨平台的python程序,该程序将在后台运行,监视所有键盘事件,当它看到一些特定的快捷键时,它将生成一个或多个自己的键盘事件。例如,将Ctrl-@映射到“my.email@address”可能很方便,因此每当有程序要求我输入电子邮件地址时,我只需要键入Ctrl-@。
我知道这样的程序已经存在,我正在重新发明轮子。。。但我的目标只是进一步了解低级键盘api。此外,这个问题的答案可能对其他程序员有用,例如,如果他们希望启动一个需要密码的SSH连接,而不使用pexpect。
谢谢你的帮助。
注意:这里有keyboard-input-on-windows">a similar question,但它仅限于Windows平台,不需要python。我正在寻找一个跨平台的python api。还有其他与键盘事件相关的问题,但显然他们对系统范围的键盘事件不感兴趣,只是对特定于应用程序的键盘快捷键感兴趣。
编辑:我可能应该在这里添加一个免责声明:我确实不想写键盘记录程序。如果我需要一个键盘记录程序,我可以从网上下载一个。;-)
作为编写原始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程序时,即使是我的病毒/特洛伊木马扫描器也不会抱怨。。。
相关问题 更多 >
编程相关推荐