32G12K128中基于HID协议的USB键盘范例
附件中图片。朋友帮忙看看
和描述符声明相关:
输入报文八个字节:一个修饰键(8bit,左右ctrl\alt\shift\win键)+一个预留字节+6个按键扫描字节
char code HIDREPORTDESC =
{
0x05,0x01, //USAGE_PAGE(Generic Desktop);
0x09,0x06, //USAGE(Keyboard);
0xa1,0x01, //COLLECTION(Application);
0x05,0x07, //USAGE_PAGE(Keyboard);
0x19,0xe0, //USAGE_MINIMUM(224);
0x29,0xe7, //USAGE_MAXIMUM(255);
0x15,0x00, //LOGICAL_MINIMUM(0);
0x25,0x01, //LOGICAL_MAXIMUM(1);
0x75,0x01, //REPORT_SIZE(1);
0x95,0x08, //REPORT_COUNT(8);
0x81,0x02, //INPUT(Data,Variable,Absolute);
0x75,0x08, //REPORT_SIZE(8);
0x95,0x01, //REPORT_COUNT(1);
0x81,0x01, //INPUT(Constant);
0x19,0x00, //USAGE_MINIMUM(0);
0x29,0x65, //USAGE_MAXIMUM(101);
0x15,0x00, //LOGICAL_MINIMUM(0);
0x25,0x65, //LOGICAL_MAXIMUM(101);
0x75,0x08, //REPORT_SIZE(8);
0x95,0x06, //REPORT_COUNT(6);
0x81,0x00, //INPUT(Data,Array);
0x05,0x08, //USAGE_PAGE(LEDs);
0x19,0x01, //USAGE_MINIMUM(1);
0x29,0x03, //USAGE_MAXIMUM(3);
0x15,0x00, //LOGICAL_MINIMUM(0);
0x25,0x01, //LOGICAL_MAXIMUM(1);
0x75,0x01, //REPORT_SIZE(1);
0x95,0x03, //REPORT_COUNT(3);
0x91,0x02, //OUTPUT(Data,Variable,Absolute);
0x75,0x05, //REPORT_SIZE(5);
0x95,0x01, //REPORT_COUNT(1);
0x91,0x01, //OUTPUT(Constant);
0xc0, //END_COLLECTION;
}; ercircle 发表于 2025-6-10 11:25
和描述符声明相关:
输入报文八个字节:一个修饰键(8bit,左右ctrl\alt\shift\win键)+一个预留字节+6个按 ...
HIDREPORTDESC这个数组是什么意思,没有看明白?有6个按键扫描字节,为什么只用第二个 桃花源 发表于 2025-6-10 11:41
HIDREPORTDESC这个数组是什么意思,没有看明白?有6个按键扫描字节,为什么只用第二个 ...
HID设备描述符,可以看看USB规范,不是“只用第二个”,只是示例里单键示例这样写而已。
这个协议支持6键无冲,所以是6个
ercircle 发表于 2025-6-10 11:25
和描述符声明相关:
输入报文八个字节:一个修饰键(8bit,左右ctrl\alt\shift\win键)+一个预留字节+6个按 ...
或者说那些键用第二个,那些用第三个
有没有一个表 ercircle 发表于 2025-6-10 11:45
HID设备描述符,可以看看USB规范,不是“只用第二个”,只是示例里单键示例这样写而已。
这个协议支持6 ...
6键无冲是啥意思,第一次接触,老师说的太专业 桃花源 发表于 2025-6-10 11:47
或者说那些键用第二个,那些用第三个
有没有一个表
六键无冲就是同时按六个嘛,网上搜下机械键盘用的多点。
除了第一个字节的修饰键,后六个数组存放其它按键。
按码表示例包里有的:
另外对USB感兴趣建议看下这个教学视频:
【新提醒】视频教学:【USB 原理及实战,16课时】,大学标准课程,有配套书籍 - USB:USB-CDC虚拟串口/就是串口,一箭双雕之USB转双串口,[鼠标+键盘]的HID复合设备 国芯技术交流网站 - AI32位8051交流社区
ercircle 发表于 2025-6-10 11:55
六键无冲就是同时按六个嘛,网上搜下机械键盘用的多点。
除了第一个字节的修饰键,后六个数组存放其它 ...
老师,是不是可以这样理解,我如果是单个按键时,只用第二个字节就可以了,如果我是多个按键组合,就需要用到后面的3-7字节。 桃花源 发表于 2025-6-10 12:01
老师,是不是可以这样理解,我如果是单个按键时,只用第二个字节就可以了,如果我是多个按键组合,就需要 ...
没错,第“0”个字节存放修饰键,左 Ctrl + A + D 为例:
页:
[1]
2