【问题标题】:How to send Keyboard values in HID with Report ID?如何使用报告 ID 在 HID 中发送键盘值?
【发布时间】:2017-10-31 12:12:29
【问题描述】:

我正在使用以下描述符通过 HID 蓝牙从键盘发送键值。

    USAGE_PAGE(1),      0x01,      
    USAGE(1),           0x06,      
    COLLECTION(1),      0x01,      
    REPORT_ID(1),        0x02,
    USAGE_PAGE(1),      0x07,      
    USAGE_MINIMUM(1), (byte) 0xE0,
    USAGE_MAXIMUM(1), (byte) 0xE7,
    LOGICAL_MINIMUM(1), 0x00,
    LOGICAL_MAXIMUM(1), 0x01,
    REPORT_SIZE(1),     0x01,      
    REPORT_COUNT(1),    0x08,
    INPUT(1),           0x02,    
    REPORT_COUNT(1),    0x01,     
    REPORT_SIZE(1),     0x08,
    INPUT(1),           0x01,       
    REPORT_COUNT(1),    0x05,      
    REPORT_SIZE(1),     0x01,
    USAGE_PAGE(1),      0x08,       
    USAGE_MINIMUM(1),   0x01,       
    USAGE_MAXIMUM(1),   0x05,      
    OUTPUT(1),          0x02,      
    REPORT_COUNT(1),    0x01,     
    REPORT_SIZE(1),     0x03,
    OUTPUT(1),          0x01,      
    REPORT_COUNT(1),    0x06,       
    REPORT_SIZE(1),     0x08,
    LOGICAL_MINIMUM(1), 0x00,
    LOGICAL_MAXIMUM(1), 0x65,       
    USAGE_PAGE(1),      0x07,       
    USAGE_MINIMUM(1),   0x00,
    USAGE_MAXIMUM(1),   0x65,
    INPUT(1),           0x00,       
    END_COLLECTION(0),

我面临的问题是我能够发送数据,但相同的数据被无限次发送。

如果我将修饰符字节设置为 2,那么一切正常,即为特定的按键发送大写的后者,但如果我发送小写的后者数据将被无限次发送。

【问题讨论】:

    标签: bluetooth keyboard bluetooth-lowenergy hid bluetooth-keyboard


    【解决方案1】:

    当您忘记释放按键时,按键似乎会被接收“无限次”。该数组包含当前按下的键(在您的情况下最多 6 个)。您需要将缓冲区清除为“无事件指示”索引,在您的情况下为 0x00。如果您不这样做,那么主机很可能会实现“typ-o-matic”键重复功能......即您在普通键盘上按住某个键时看到的内容。

    【讨论】:

    • 感谢@aja 的回答。尽管释放了密钥,但我收到了这个错误。因为我正在向 id 为 0x00 的客户发送空报告,所以我知道我必须发送键盘 ID 以及空报告,这对我来说很好。
    猜你喜欢
    • 2021-03-30
    • 2021-07-19
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 2021-04-26
    • 2015-08-28
    • 1970-01-01
    • 2011-11-10
    相关资源
    最近更新 更多