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

Linux系统下如何查找可用键盘设备以绑定其hidraw接口

跨总线通用键盘hidraw设备识别方案

你之前通过lsusb -v匹配USB HID键盘接口属性的方案,仅适用于USB总线设备:

Bus 001 Device 002: ID 17ef:6099 Lenovo Lenovo Traditional USB Keyboard
Device Descriptor:
  ...
  idVendor           0x17ef Lenovo
  idProduct          0x6099 
  ...
  Configuration Descriptor:
    ...
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0 

以下是不限设备总线的通用识别方案,支持USB、蓝牙、内置键盘、PS/2转接等所有接入系统的键盘设备:

方案1:基于input子系统属性过滤

Linux所有输入设备统一由input子系统管理,无需区分总线类型:

  • 第一步:过滤符合键盘属性的输入设备
    所有标准键盘设备的event节点在/proc/bus/input/devices中会标记EV=120013(对应键盘必备的EV_KEY、EV_REP、EV_LED事件能力),可通过以下命令快速过滤:
    grep -E '^(N:|H:|B: EV=|B: KEY=)' /proc/bus/input/devices | grep -B2 -A2 'EV=120013'
    
    返回结果中的H: Handlers=eventX kbd字段对应的eventX就是该键盘的输入事件节点。
  • 第二步:匹配对应hidraw节点
    通过udevadm查询event节点关联的hidraw设备:
    udevadm info --query=property --name=/dev/input/eventX | grep 'DEVNAME=.*hidraw'
    
    也可以直接遍历/sys/class/hidraw/下的设备,读取对应子目录下的input设备能力值做匹配,无需依赖udev。

方案2:udev规则自动匹配(热插拔场景适用)

如果需要处理键盘热插拔自动绑定hidraw的需求,可以直接写udev规则匹配系统预定义的键盘属性,不需要手动解析设备能力:
规则示例:

SUBSYSTEM=="hidraw", ENV{ID_INPUT_KEYBOARD}=="1", MODE="0660", GROUP="input", SYMLINK+="keyboard-hidraw%n"

该规则会自动给所有键盘类hidraw设备创建/dev/keyboard-hidraw*的软链接,直接读取软链接即可定位目标设备。
注意:部分多功能键盘会同时暴露键盘、鼠标、宏按键等多个hidraw节点,仅标记ID_INPUT_KEYBOARD=1的节点对应普通键盘输入功能,其余节点可按需过滤。

内容的提问来源于stack exchange,提问作者Martin Kouba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:36:03