具有持续时间和多个密钥的Python密钥记录器



我正在尝试用python编写一个键记录器,它可以确定按下一个键的时间长度(通过释放按下键(,同时还可以检测是否按下了另一个键。例如,有人按w键4秒钟。在按住W的同时,他们还按下S并按住S X一段时间。我认为这可能需要多线程,但我不确定如何在python中处理。

这是我发现的跟踪按键长度的代码。我认为,它只需要线程。

import time
def callb(key): #what to do on key-release
ti1 = str(time.time() - t)[0:5] #converting float to str, slicing the float
print("The key",key," is pressed for",ti1,'seconds')
return False #stop detecting more key-releases
def callb1(key): #what to do on key-press
return False #stop detecting more key-presses
with keyboard.Listener(on_press = callb1) as listener1: #setting code for listening key-press
listener1.join()
t = time.time() #reading time in sec
with keyboard.Listener(on_release = callb) as listener: #setting code for listening key-release
listener.join()

使用hook方法获取所有事件

import keyboard
HISTORY = {}

def key_recording(e):
if e.name not in HISTORY and e.event_type == keyboard.KEY_DOWN:
HISTORY[e.name] = e.time
elif e.name in HISTORY and e.event_type == keyboard.KEY_UP:
print(f"The key {e.name} is pressed for {round(e.time - HISTORY.pop(e.name), 3)} seconds")

remove = keyboard.hook(key_recording)
try:
input("Press any key to exit")
except KeyboardInterrupt:
pass
finally:
remove()

最新更新