最近在玩原神收集材料时, 总是要按着w键, 中指有点疼. 所以想弄一个按键精灵.
但是我连官网也找不到, 安装的软件 系统也提示有病毒.
索性直接自己写一个
监听键盘
1 2 3 4 5 6 7
| import keyboard
def callback(): pass
keyboard.add_hotkey("alt+`", callback) keyboard.wait()
|
触发键盘
死循环按下w键, 每隔触发0.03s(这个是实际连按的间隔)
1 2 3 4 5 6 7 8 9 10
| import time import keyboard
def callback(): while True: keyboard.press("w") time.sleep(0.03)
keyboard.add_hotkey("alt+`", callback) keyboard.wait()
|
子线程执行
触发后, 由于死循环导致程序卡死. 改为子线程执行, 避免阻塞主线程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import _thread import time import keyboard
def run(): while True: keyboard.press("w") time.sleep(0.03)
def callback(): _thread.start_new_thread(run, ())
keyboard.add_hotkey("alt+`", callback) keyboard.wait()
|
循环触发
添加一个变量, 循环取反, 来判断是否执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import _thread import time import keyboard
isActice = False
def run(): global isActice isActice = not isActice while isActice: keyboard.press("w") time.sleep(0.03)
def callback(): _thread.start_new_thread(run, ())
keyboard.add_hotkey("alt+`", callback) keyboard.wait()
|
亲测有效!
Tips
_thread.start_new_thread 的第二个参数表示的是调用时传给调用函数的参数, 必须传, 不然调试时没问题, 但是直接运行会报错
总结
每面对一个新的问题, 都需要一个完全新的知识来解决. 哎, 学无止境