从后台python进程捕获和使用输入事件,而不通知焦点窗口

时间:2017-04-25 21:36:19

标签: python linux pyautogui

基本上我想编写一个小脚本,这将允许我进行某种可编程键盘仿真。类似于Windows上的autohotkey能够工作的东西。

让我们说我想将箭头键重新绑定到' wsad'或者' hjkl'但仅当CapsLook处于活动状态时。我能够通过pyinput检测键盘按键(https://pypi.python.org/pypi/pynput)我也可以使用pyautogui(https://pyautogui.readthedocs.io)轻松地将各种键盘事件发送到聚焦窗口但是我无法找到一种消费方式当前关注窗口收到事件之前的事件。

任何提示?

1 个答案:

答案 0 :(得分:3)

此模块是捕获键盘事件的可用工具之一:

  

https://pypi.python.org/pypi/keyboard/

但它仍处于开发阶段,并且(尚未)提供一个全局钩子,能够捕获其原始的键盘事件并将它们(或不转发)转发到目标应用程序。

另一个值得研究的工具是:

  

myboard.py at code.google.com downloads

上面的脚本使用了Python ctypesXlib模块,这使得直接使用C语言编写的系统库成为可能。它可以在很大程度上捕获键盘事件,并在系统范围内在测试它的时候,它已经崩溃了我的操作系统,所以请注意......

还要考虑使用X11 XGrabKey系统库中的XGrabKeyboardlibX11.so

import ctypes
libX11    = ctypes.CDLL('libX11.so')
XGrabKey = libX11.XGrabKey
XGrabKeyboard = libX11.XGrabKeyboard
print("XGrabKey: "     , dir(XGrabKey))
print("XGrabKeyboard: ", dir(XGrabKeyboard))