在 python 中使用键盘模块导致键盘延迟

Using Keyboard module in python cause lag in keyboard

所以我正在尝试制作一个 python 脚本,该脚本将按顺序按下特定键以在游戏中执行 mechanic/stunt。我仍在处理计时等问题,但我遇到的主要问题是,一旦我启动文件,它就会导致主键盘 delay/lag。一旦文件启动,我在键盘上做的任何事情,它不必是特定的击键,此时任何键都会滞后,循环继续检查键可能是一个问题,但我不是非常肯定。

代码如下:

from pynput.keyboard import Key, Controller
from pynput.mouse import Button, Controller
import time
import keyboard

print("Press Q to execute speedflip")

mouse = Controller()

while True:  # making a loop
    try:  # used try so that if user pressed other than the given key error will not be shown
        if keyboard.is_pressed('5'):  # if key 'q' is pressed 
            print('Speedflip 5 executed')
            mouse.press(Button.left)
            keyboard.press('w')
            #part boost-start done
            keyboard.press('w')
            keyboard.press('a')
            time.sleep(0.18)
            keyboard.release('w')
            keyboard.release('a')
            #part-position-done
            time.sleep(0.6)
            keyboard.press('w')
            keyboard.press('e')
            mouse.click(Button.right, 1)
            time.sleep(0.1)
            mouse.click(Button.right, 1)
            time.sleep(0.1)
            keyboard.release('w')
            keyboard.release('e')
            #diagonal flip done
            keyboard.press('s')
            keyboard.press('d')
            time.sleep(0.9)
            keyboard.release('s')
            keyboard.release('d')
            #part diagonal flip cancel done
            time.sleep(1)
            mouse.release(Button.left)
            keyboard.release('w')
            #boost release donewa
            
                    
        if keyboard.is_pressed('6'):
            print('Speedflip 6 is executed')
            mouse.press(Button.left)
            keyboard.press('w')
            #part boost-start done
            keyboard.press('w')
            keyboard.press('a')
            time.sleep(0.05)
            keyboard.release('w')
            keyboard.release('a')
            #part-position-done
            time.sleep(0.6)
            keyboard.press('w')
            keyboard.press('e')
            mouse.click(Button.right, 1)
            time.sleep(0.1)
            mouse.click(Button.right, 1)
            time.sleep(0.1)
            keyboard.release('w')
            keyboard.release('e')
            #diagonal flip done
            keyboard.press('s')
            keyboard.press('d')
            time.sleep(0.9)
            keyboard.release('s')
            keyboard.release('d')
            #part diagonal flip cancel done
            time.sleep(1)
            mouse.release(Button.left)
            keyboard.release('w')
            #boost release done
            
    except:
        break

与其通过检查按下的键进行无限循环(您甚至无法从代码中猜测退出此循环),不如在按下特定键时添加回调。它甚至显示在 keyboard 包的主页上(link,查看示例部分)

def speedflip5():
    print('Speedflip 5 executed')
    mouse.press(Button.left)
    keyboard.press('w')
    # do all the stuff here ...

def speedflip6():
    print('Speedflip 6 executed')
    mouse.press(Button.left)
    keyboard.press('w')
    # do all the stuff here ...

import keyboard

keyboard.add_hotkey('5', speedflip5)
keyboard.add_hotkey('6', speedflip6)
keyboard.wait()

自己添加停止等待的条件