监听键盘按键¶
绑定键盘事件¶
实例化一个 KeyListener
对象,通过 bind_key
绑定key
from terminal_layout import *
key_listener = KeyListener()
@key_listener.bind_key(Key.UP)
def _(kl, e):
print(e)
@key_listener.bind_key(Key.DOWN, 'a', '[0-9]')
def _(kl, e):
if e.key == 'a':
print('Press a')
elif e.key == Key.DOWN:
print('Press DOWN')
elif e.key == '0':
print('Press 0')
else:
print('Press 1-9')
def stop(kl, e):
print('Press', e.key, 'stop!')
kl.stop()
key_listener.bind_key(Key.ENTER,Key.F1, stop, decorator=False)
key_listener.listen(stop_key=[Key.CTRL_A])
bind_key¶
bind_key
绑定的key有三种类型:
Key的成员变量
正则表达式
“any”(任意按键)
其有两种用法,装饰器模式和非装饰器模;
非装饰器模式下,倒数第二个参数为回调的函数,最后一个参数必须是 decorator=False
允许的Key¶
name |
keys |
---|---|
Arrows |
UP, DOWN, LEFT, RIGHT |
Control+ |
CTRL_A, CTRL_B, CTRL_D, CTRL_E, CTRL_F, CTRL_X, CTRL_Z |
F |
F1, F2, F3, F4, F5, F6, F7, F8 |
Other |
ENTER, TAB, BACKSPACE, ESC |
注解
不支持绑定 CTRL_C
如果需要绑定 ESC ,记得修改stop_key。
绑定不在列表中的key¶
bind_key的参数是非常宽松的,因此你可以绑定不在支持列表中的key
from terminal_layout import *
from terminal_layout.readkey.key import KeyInfo
kl = KeyListener()
ctrl_g = KeyInfo('ctrl_g', '\x07')
@kl.bind_key(ctrl_g)
def _(kl, e):
print('按下 ctrl_g', e)
# or
ctrl_h_code = '\x08'
@kl.bind_key(ctrl_h_code)
def _(kl, e):
print('按下 ctrl_h', e)
kl.listen()