监听键盘

最近在玩原神收集材料时, 总是要按着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 的第二个参数表示的是调用时传给调用函数的参数, 必须传, 不然调试时没问题, 但是直接运行会报错

总结

每面对一个新的问题, 都需要一个完全新的知识来解决. 哎, 学无止境