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

是否有跨平台的python低级API来捕获或生成键盘事件?,python,cross-platform,keyboard-events,low-level-api,Python,Cross Platform,Keyboard Events,Low Level Api,我正在尝试编写一个跨平台的python程序,它将在后台运行,监视所有键盘事件,当它看到一些特定的快捷键时,它会生成一个或多个自己的键盘事件。例如,将Ctrl-@映射到“my”可能很方便。email@address“,因此每次程序要求我输入电子邮件地址时,我只需键入Ctrl-@ 我知道这样的项目已经存在,我正在重新发明轮子。。。但我的目标只是学习更多关于低级键盘API的知识。此外,这个问题的答案可能对其他程序员有用,例如,如果他们想启动需要密码的SSH连接,而不使用pexpect 谢谢你的帮助 注

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

我知道这样的项目已经存在,我正在重新发明轮子。。。但我的目标只是学习更多关于低级键盘API的知识。此外,这个问题的答案可能对其他程序员有用,例如,如果他们想启动需要密码的SSH连接,而不使用pexpect

谢谢你的帮助

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


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

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

在Windows上,使用

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


[*]:天哪,当我启动一个与键盘事件挂钩的Python程序时,甚至我的病毒/特洛伊木马扫描程序都不会抱怨…

跨平台UI库,例如或具有用于键盘事件的API。使用这些,您可以将«CTRL»+«@»映射到操作

在linux上,您可能想看看。出于某种奇怪的原因,读取/dev/input/。。。。在X运行时并不总是有效。例如,它不适用于ubuntu 8.10。Pykeylogger使用xlib,当另一种方法不起作用时,xlib正好起作用。我还在研究这个问题,所以如果你能找到一种更简单的方法,请告诉我。

作为最初编写pykeylogger linux端口的人,我可以说没有真正的跨平台方法。本质上,我使用记录扩展重写了pyhook API,用于从xserver本身捕获键盘事件。当然,这假设记录扩展存在,并加载到x服务器中

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


查看pyxhook.py中的pykeylogger源代码,了解类和实现。否则,根据操作系统的不同,只需加载该模块或pyhook即可。

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

在Linux下,使用Xlib很容易做到这一点。有关详细信息,请参见本页:


不幸的是,这不会给我一个系统范围的键盘显示器,只是一个特定于应用程序的显示器。我也是。我不能让pykeylogger在Ubuntu9.10上运行作为记录,我想正是这个错误阻止了pykeylogger在Ubuntu9.10上的工作,这是一个适用于OS X的解决方案