我正在尝试编写一个跨平台的python程序,它将在后台运行,监视所有键盘事件,当它看到一些特定的快捷方式时,它会生成一个或多个自己的键盘事件.例如,将Ctrl- @映射到"my.email@address"可能很方便,因此每次某个程序询问我的电子邮件地址时,我只需要输入Ctrl- @即可.
我知道这些程序已经存在,我正在重新发明轮子......但我的目标只是了解有关低级键盘API的更多信息.此外,这个问题的答案可能对其他程序员有用,例如,如果他们想要启动需要密码的SSH连接,而不使用pexpect.
谢谢你的帮助.
注意:有一个类似的问题,但它仅限于Windows平台,并且不需要python.我正在寻找跨平台的python api.还有其他与键盘事件有关的问题,但显然他们对系统范围的键盘事件不感兴趣,只是特定于应用程序的键盘快捷键.
编辑:我应该在这里增加一个声明:我不是想写一个键盘记录.如果我需要一个键盘记录器,无论如何我都可以从网上下载一个.;-)
在我家的Kubuntu机器上,我正在运行一个脚本,在每个按键上发出蜂鸣声,无论哪个窗口或应用程序都有焦点,都可以从这个有见地的页面改编而来
#!/usr/bin/env python
from Xlib.display import Display
import os
import sys
ZERO=[]
for i in range(0,32):
ZERO.append(0)
ignorelist=[ZERO]
def main():
if os.getuid()==0:
os.system("modprobe pcspkr")
print("Speaker enabled, start as normal user")
sys.exit()
print("If no beep is heard, then run as root to enable pcspkr")
disp = Display()
while 1:
keymap=disp.query_keymap()
if keymap not in ignorelist:
os.system("beep")
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
这个脚本运行得很好,但是我的双核Intel机器的两个CPU都是80%左右,所以我对这台机器几乎没什么用.如何在不干扰其操作的情况下降低此简单脚本的CPU要求?换句话说,无论什么窗口或应用程序具有焦点,它仍应在按键时刻发出蜂鸣声.
如果在Python中无法做到这一点,我应该关注哪些其他技术?C?我会假设有一些内核组件通知应用程序的按键:KDE如何处理全局快捷方式?如何让我的申请也能收到这些通知?
我的目标是在按下每个按键时发出哔哔声,因为我正在训练我的手指在机械键盘上键入而不会在没有丢失按键的情况下触底.我刚从Cherry Browns毕业到Cherry Blues,缺乏战术反馈需要一些时间来适应.
请注意,无论哪个窗口具有焦点,任何解决方案都必须发出蜂鸣声.此程序旨在用作将在我使用的所有应用程序的后台运行的守护程序.
谢谢.
我刚刚写了一个小程序,每隔几分钟从flickr下载一个新壁纸.
现在我想添加"喜欢"壁纸的功能,所以它会比非喜欢或不喜欢的壁纸更频繁地出现.
我想为这个功能分配一个全局键盘快捷键.
例如:如果按ctrl + 7,它将在Python中执行某种"喜欢"的功能.
是否有任何库(在JavaScript中,例如有一个库,我可以在其中定义快捷方式shortcut("ctrl-b", someFunction);)
否则,我该怎么做呢?我见过这个类似的问题,但它已经过时了.