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

华为HC-P10 USB扫码器连树莓派:数字3/#识别为KEY_MOD_RSHIFT故障求助

华为HC-P10扫码器扫描数字3/#返回KEY_MOD_RSHIFT(0x20)的解决方法

问题核心分析

从你提供的原始扫描数据可以看到,扫描数字3时仅输出0x20(KEY_MOD_RSHIFT),无对应数字键码;且你之前修改hid_report.json时使用了无效十六进制值0x1g(十六进制仅包含0-9、A-F),这是配置未生效的直接原因之一。另外,部分USB扫码器的HID映射存储在设备固件中,修改本地配置文件可能无法覆盖设备默认设置。

解决方案步骤

  1. 修正本地HID映射文件
    标准HID键盘扫描码中,数字3的对应值为0x0C,#是Shift+3的组合(修饰符0x20+键码0x0C)。修改hid_report.json:

    {
      // ...其他配置
      "3": 0x0C,
      "#": {
        "modifier": 0x20,
        "key": 0x0C
      }
    }
    

    修改后重启node-hid进程,确保配置重新加载。

  2. 验证设备固件配置
    华为HC-P10的HID映射可能存储在设备内部,本地文件修改无效时:

    • 查找官方提供的扫码器配置工具,重新烧录正确的按键映射固件;
    • 使用evtest工具(树莓派需先安装sudo apt install evtest)查看输入设备事件,确认扫码器发送的原始键码是否正确。
  3. 软件层面临时兼容
    若硬件配置无法修改,可在node-hid逻辑中针对异常输出做兼容处理:

    let lastModifier = null;
    hidDevice.on('data', (data) => {
      const modifier = data[0];
      const keyCode = data[2];
      // 捕获仅输出右Shift的情况,判定为数字3
      if (modifier === 0x20 && keyCode === 0) {
        console.log('识别到数字3');
      }
      // 处理正常的#(Shift+3)
      else if (modifier === 0x20 && keyCode === 0x0C) {
        console.log('识别到#');
      }
      // 其他按键处理逻辑
      else {
        // ...
      }
    });
    
  4. 切换扫码器输出模式
    部分扫码器支持键盘/串口等多种输出模式,查看官方手册确认是否有模式切换快捷键,切换后重新测试扫描效果。

内容的提问来源于stack exchange,提问作者Emmanuel Tsegula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:55:30