在 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()
自己添加停止等待的条件
所以我正在尝试制作一个 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()
自己添加停止等待的条件