学习USB一段时间,偶尔在网上听说微软X4键盘键盘很牛,有26个键没有冲突,就买一个来玩,其说明书上也没有说是哪26个键没有冲突,自己用了还是找不到是哪26个键,打电话找北京的技术支持联系,得到的答案是任意26个键!真怪了,看来他也是没有真的测试过吧,下面是其USB数据信息:
1.X4键盘枚举设备总共2个设备,两设备都是键盘目录下
其中接口0为标准键盘数据及Modifier键数据,数据包最大字节数为8,接口1处理的按键数据为:多媒体操控键、计算器快捷键、宏命令切换键、程序按键及宏命令录制键及标准键超过6个的数据,其数据包最大字节数为64
2. 其接口0与接口1的报告描述是不一样的,我只能抓这个两报告描述符,有兴趣的看收上传的文件。
3. Endpoint address 0x81是用来组织标准键盘数据,Endpoint address 0x83组织数据:多媒体操控键、计算器快捷键、宏命令切换键及宏命令录制键和超过标准键按下超过6个键时数据。
这样一抓数据,是哪26个键就一下子出来了,至于形成的鬼键,它是用硬件进行消除的,Endpoint address 0x81最大的字节数为8个,其中有两个被格式与Modifier键数据占用,最多按下6个标准键,比如按住1、2、3、4、5、6、7键,当超过6个键,前6个键是Endpoint address 0x81发送,按下第7个键时Endpoint address 0x83组织数据的首个字节置成0x0B,然后第二个字节才是7键的数据,它用的是两个端点进行发送数据,我现在进行模拟它,端点0x81发送数据后PC机正确才到数据,端点2也能发送数据到USB上了,问何应该设置报告描述符,让PC也知道我端点2发送的数据是标准备键盘数据!请高手指点指点!同时哪位高中手头有HID 报告描述符中文资料的,发我瞧瞧!谢谢 |