我想制作一个可以在后台运行但在发生鼠标事件或键盘事件时打印文本的Python脚本。是否有任何库/内置功能可以实现这一点?还是可以调用的任何系统命令来获取此信息?成为root用户不是问题。
我想制作一个可以在后台运行但在发生鼠标事件或键盘事件时打印文本的Python脚本。是否有任何库/内置功能可以实现这一点?还是可以调用的任何系统命令来获取此信息?成为root用户不是问题。
我猜你可能会使用evdev的Python绑定:http://packages.python.org/evdev/index.html。在教程中,他们提供了一个键盘示例,但是鼠标事件应该类似:
>>> from evdev import InputDevice, categorize, ecodes
>>> from select import select
>>> dev = InputDevice('/dev/input/event1')
>>> print(dev)
device /dev/input/event1, name "Dell Dell USB Keyboard", phys "usb-0000:00:12.1-2/input0"
>>> while True:
... r,w,x = select([dev], [], [])
... for event in dev.read():
... if event.type == ecodes.EV_KEY:
... print(categorize(event))
... # hitting a and holding space
key event at 1337016188.396030, 30 (KEY_A), down
key event at 1337016188.492033, 30 (KEY_A), up
key event at 1337016189.772129, 57 (KEY_SPACE), down
key event at 1337016190.275396, 57 (KEY_SPACE), hold
key event at 1337016190.284160, 57 (KEY_SPACE), up
例如,看一下pynput:
from pynput.keyboard import Key, Listener
#defining function to print when key is pressed
def on_press(key):
print('{0} pressed'.format(
key))
#defining function to print when key is released
def on_release(key):
print('{0} release'.format(
key))
if key == Key.esc:
# Stop listener
return False
# Collect events until released
with Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
/dev/input
中的设备读取输入事件。 - Some programmer dudecat /dev/input/mice mouse0
mouse1
event0-9
给我的输出都是空白的,如果我将输出重定向到另一个文件,它仍然是空白的?这里有什么根本上不同于读取/dev/urandom
的东西吗? - jett