我正在尝试使用arduino leonardo构建新的游戏手柄,以将击键发送到PC。
我只能使我的游戏板能够工作,例如键盘。
构建游戏手柄并尝试在PC游戏中使用它之后,我按下了一个按钮,它可以将诸如“ q”,“ w”,“ e”,“ r”等的击键发送到PC。
如何发送诸如“按钮1”,“按钮2”,“按钮3”等的击键?
答案 0 :(得分:0)
HID设备通过提供称为HID报告描述符的结构来指定应如何解释其数据。看来您的应用使用的报表描述符旨在模拟键盘而不是游戏板,这就是为什么您看到按键而不是游戏板按钮输入的原因。您可以在Device Class Definition for HID v1.11中找到有关HID报告描述符的更多信息。
HID规范定义了称为“用途”的数字值,它们代表设备的预期用途。这些用法分为代表广泛用法类别的“用法页面”。例如,键盘将具有“通用桌面”用法页面中的“键盘”用法。设备支持的各个输入和输出也有用法,例如,Tab键在“键盘/键盘用法”页面上有其自己的用法。
HID游戏手柄的报告描述符应具有顶层应用程序集合,其中应包含GenericDesktop / Joystick用法(UP:0x01,U:0x04)或GenericDesktop / GamePad用法(UP:0x01,U:0x05)。
游戏手柄按钮应具有“按钮用法”页面中的用法,从主按钮的用法1开始(UP:0x09,U:0x01)。游戏手柄轴的用法应来自GenericDesktop页面中的轴范围,通常左指杆具有X和Y轴用法(X为UP:0x01,U:0x30,Y为UP:0x01,U:0x31)。如果您有D-pad,则它应该具有Hat Switch轴用法(UP:0x01,U:0x39),并应将其值报告为旋转。
有关HID使用值的更多信息,请参见HID Usage Tables v1.12文档。
Here's an example report descriptor用于具有12个按钮,2个指拨杆,2个模拟触发器和一个D-pad的简单游戏手柄式设备。