Pi Zero作为HID设备 - 没有大写字母

时间:2018-03-29 16:15:48

标签: raspberry-pi usb hid

我目前正在尝试使用我的pi零w模拟键盘,遵循几个指导原则,例如https://www.rmedgar.com/blog/using-rpi-zero-as-keyboard-setup-and-device-definition(全部3个部分)或此https://randomnerdtutorials.com/raspberry-pi-zero-usb-keyboard-hid/

它似乎工作,但我只能使它键入小写字符,我不知道为什么。例如,使用此代码行(取自rmedgar指南)

write_report(chr(32)+NULL_CHAR+chr(11)+NULL_CHAR*5)

它只是键入一个小写“h” - 所以似乎忽略了chr(32) - 它应该是SHIFT。我试图用“showkeys -s”跟踪SHIFT的scancod,它显示我0x2a(推)和0xaa(释放)。然后我用42替换了上面代码中的32(0x2中的0x2a)但是没有改变。

我正在使用旧的Thinkpad x230,可能是移位扫描码不同吗?

我缺少的任何其他观点?

非常感谢:)

2 个答案:

答案 0 :(得分:1)

当你发送一个带有大写字母的HID报告时,你需要确保Shift键的修饰符位设置为1,就像在你键入大写字母的真实键盘上一样按Shift键。它通常表示为报告中固定位置的单个位,而不是8位代码。我不知道您正在使用的API的详细信息,但您应该在其文档中搜索关键字,例如"修饰符"," shift"," ctrl&#34 ;和" alt"。

答案 1 :(得分:0)

答案正如aja指出的那样 - 我使用了错误的描述符,它应该是

git clone <repo URL>

因此,在覆盆子pi 0上启用HID设备的完整脚本看起来像这样(大部分是从我第一个问题中提到的链接复制而来)。

echo -ne \\x05\\x01\\x09\\x06\\xa1\\x01\\x05\\x07\\x19\\xe0\\x29\\xe7\\x15\\x00\\x25\\x01\\x75\\x01\\x95\\x08\\x81\\x02\\x95\\x01\\x75\\x08\\x81\\x03\\x95\\x05\\x75\\x01\\x05\\x08\\x19\\x01\\x29\\x05\\x91\\x02\\x95\\x01\\x75\\x03\\x91\\x03\\x95\\x06\\x75\\x08\\x15\\x00\\x25\\x65\\x05\\x07\\x19\\x00\\x29\\x65\\x81\\x00\\xc0 > functions/hid.usb0/report_desc