Python如何区分两台不同的键盘并识别对应按键触发事件?
问题解答
1. keyboard模块能否实现多键盘区分?
不能。
Python的keyboard模块是对系统全局按键事件的封装,所有输入设备的按键事件会被汇总为统一的事件流返回,不会携带触发事件的硬件标识信息,因此无法区分是哪一台键盘触发的按键。
2. 可行替代方案
Linux环境:使用evdev库
evdev可以直接访问Linux内核的输入设备子系统,支持单独枚举、监听每一个输入设备的事件,可直接区分不同键盘的输入。
示例代码如下:
from evdev import InputDevice, categorize, ecodes import threading # 先通过evdev.util.list_devices()查看所有输入设备,找到对应两个键盘的设备路径 keyboard1 = InputDevice('/dev/input/eventX') # 替换为第一个键盘的实际设备路径 keyboard2 = InputDevice('/dev/input/eventY') # 替换为第二个键盘的实际设备路径 def listen_kb(device, kb_name): for event in device.read_loop(): # 筛选按键按下事件 if event.type == ecodes.EV_KEY and event.value == 1: if ecodes.KEY[event.code] == 'KEY_K': print(f"You pressed k of {kb_name}") return # 启动独立线程分别监听两个键盘 t1 = threading.Thread(target=listen_kb, args=(keyboard1, "keyboard 1")) t2 = threading.Thread(target=listen_kb, args=(keyboard2, "keyboard 2")) t1.start() t2.start() t1.join() t2.join()
Windows环境:使用Raw Input相关库
可以调用Windows原生的Raw Input API,或者使用封装好的第三方库比如rawinput、pywin32,通过接口返回事件中携带的设备ID即可区分不同键盘的输入。
内容的提问来源于stack exchange,提问作者KavG
相关产品推荐
相关产品推荐

