You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:39:04