Python 使用模块键盘在输出中复制

Python 使用模块键盘在输出中复制,python,keyboard-events,keylogger,Python,Keyboard Events,Keylogger,我正在开发一个键盘记录器,它使用python模块“键盘”捕获按键。但是我的输出有问题。当我输入“Hello World”时,输出是flase。像这样:“shift-H-shift-e-e-l-l-o-space-W-o-r-l-d-d-enter 代码: 因此,它们有时是重复的,有时不是。为什么会这样?我的计算机速度变慢了,是在模块上,还是我使用了错误的功能或类似的东西 编辑-正确代码: print("starting") import keyboard

我正在开发一个键盘记录器,它使用python模块“键盘”捕获按键。但是我的输出有问题。当我输入“Hello World”时,输出是flase。像这样:“shift-H-shift-e-e-l-l-o-space-W-o-r-l-d-d-enter
代码:

因此,它们有时是重复的,有时不是。为什么会这样?我的计算机速度变慢了,是在模块上,还是我使用了错误的功能或类似的东西

编辑-正确代码:

print("starting")
import keyboard                 # imports the keyboard-module
file = open("log.txt", "w")     # creates a file
keyboard.unhook_all()           # clears all keys that were typed in

def on_key(key):
    file.write(str(key.name) + "\n")    # writes the output to a file
    file.flush()                        # saves the written stuff

while True:
    keyboard.on_release(on_key)       # waits for a key typed in
    keyboard.unhook_all()              # again clears all keys that were typed in

file.close() 
但是,如果您想确切地看到用户键入的内容,可以通过三行来完成:

import keyboard
rk = keyboard.record(until="Esc")
keyboard.play(rk)
 

问题是钩子会开火、松开、反弹,并在按键仍被按下时立即再次开火


您可以使用
键盘。松开时(按键)
而不是
键盘。挂钩(按键)
。这会导致挂钩仅在松开键时触发。这样,挂钩反弹时不再按键。

这起作用,谢谢!
import keyboard
rk = keyboard.record(until="Esc")
keyboard.play(rk)