打印

usb鼠标 迷惑

[复制链接]
2068|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lincoln1000|  楼主 | 2011-5-6 14:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
坛里的各位大侠,小弟在学习usb鼠标过程中发现如下奇怪的现象,不知大家有没有遇到过,给小弟指点下迷津

现象:1、若只向pc报告dxdy,则鼠标可以正常使用,报告描述符如下
_ReportDescriptor:     //
    .dw 0x05, 0x01                    // USAGE_PAGE (Generic Desktop)
    .dw 0x09, 0x02                    // USAGE (Mouse)
    .dw 0xa1, 0x01                    // COLLECTION (Application)
    .dw 0x09, 0x01                    //   USAGE (Pointer)
    .dw 0xa1, 0x00                    //   COLLECTION (Physical)
//    .dw 0x05, 0x09                    //     USAGE_PAGE (Button)
//    .dw 0x19, 0x01                    //     USAGE_MINIMUM (Button 1)
//    .dw 0x29, 0x03                    //     USAGE_MAXIMUM (Button 3)
//    .dw 0x15, 0x00                    //     LOGICAL_MINIMUM (0)
//    .dw 0x25, 0x01                    //     LOGICAL_MAXIMUM (1)
//    .dw 0x75, 0x01                    //     REPORT_SIZE (1)
//    .dw 0x95, 0x03                    //     REPORT_COUNT (3)
//    .dw 0x81, 0x02                    //     INPUT (Data,Var,Abs)
//    .dw 0x75, 0x05                    //     REPORT_SIZE (5)
//    .dw 0x95, 0x01                    //     REPORT_COUNT (1)
// .dw 0x81, 0x03                    //     INPUT (Cnst,Var,Abs)
    .dw 0x05, 0x01                    //     USAGE_PAGE (Generic Desktop)
    .dw 0x09, 0x30                    //     USAGE (X)
    .dw 0x09, 0x31                    //     USAGE (Y)
//    .dw 0x09, 0x38                    //     USAGE (Wheel)
    .dw 0x15, 0x81                    //     LOGICAL_MINIMUM (-127)
    .dw 0x25, 0x7f                    //     LOGICAL_MAXIMUM (127)
    .dw 0x75, 0x08                    //     REPORT_SIZE (8)
    .dw 0x95, 0x02                    //     REPORT_COUNT (3)
    .dw 0x81, 0x06                    //     INPUT (Data,Var,Rel)
    .dw 0xc0                         //   END_COLLECTION
    .dw 0xc0                          //   END_COLLECTION
_ReportDescriptor_End:
         2、如果在1的基础上加上报告按键,则通过bus hound抓到的in数据长度总为1,并且要么是dx的值,要么是dy的值,报告描述符如下
_ReportDescriptor:     //
    .dw 0x05, 0x01                    // USAGE_PAGE (Generic Desktop)
    .dw 0x09, 0x02                    // USAGE (Mouse)
    .dw 0xa1, 0x01                    // COLLECTION (Application)
    .dw 0x09, 0x01                    //   USAGE (Pointer)
    .dw 0xa1, 0x00                    //   COLLECTION (Physical)
    .dw 0x05, 0x09                    //     USAGE_PAGE (Button)
    .dw 0x19, 0x01                    //     USAGE_MINIMUM (Button 1)
    .dw 0x29, 0x03                    //     USAGE_MAXIMUM (Button 3)
    .dw 0x15, 0x00                    //     LOGICAL_MINIMUM (0)
    .dw 0x25, 0x01                    //     LOGICAL_MAXIMUM (1)
    .dw 0x75, 0x01                    //     REPORT_SIZE (1)
    .dw 0x95, 0x03                    //     REPORT_COUNT (3)
    .dw 0x81, 0x02                    //     INPUT (Data,Var,Abs)
    .dw 0x75, 0x05                    //     REPORT_SIZE (5)
    .dw 0x95, 0x01                    //     REPORT_COUNT (1)
    .dw 0x81, 0x03                    //     INPUT (Cnst,Var,Abs)
    .dw 0x05, 0x01                    //     USAGE_PAGE (Generic Desktop)
    .dw 0x09, 0x30                    //     USAGE (X)
    .dw 0x09, 0x31                    //     USAGE (Y)
//    .dw 0x09, 0x38                    //     USAGE (Wheel)
    .dw 0x15, 0x81                    //     LOGICAL_MINIMUM (-127)
    .dw 0x25, 0x7f                    //     LOGICAL_MAXIMUM (127)
    .dw 0x75, 0x08                    //     REPORT_SIZE (8)
    .dw 0x95, 0x02                    //     REPORT_COUNT (3)
    .dw 0x81, 0x06                    //     INPUT (Data,Var,Rel)
    .dw 0xc0                         //   END_COLLECTION
    .dw 0xc0                          //   END_COLLECTION
_ReportDescriptor_End:

望大家不吝赐教 先谢谢了

相关帖子

沙发
lincoln1000|  楼主 | 2011-5-6 15:59 | 只看该作者
顶起,大家有没有遇到过这样的情况! 把报告按键的屏蔽了  就可以移动鼠标! 传输字节的个数都是设置对了的,但是pc那边抓到的数据长度恒为1:Q

使用特权

评论回复
板凳
lincoln1000|  楼主 | 2011-5-7 13:36 | 只看该作者
是不是我给的信息不全?怎么没人回答的:(  折腾得我呀,把我想到的可能都试过了 还是一样的现象!用的是标准鼠标,应该就是跟着device class definition for human interface device那个文档搞就是了的呀

使用特权

评论回复
地板
lincoln1000|  楼主 | 2011-5-8 14:50 | 只看该作者
没人碰到过这种现象吗? 大家给我猜测下是什么原因吧:Q   
好像数据传输过程丢了前面两个字节的数据似的

使用特权

评论回复
5
lincoln1000|  楼主 | 2011-5-8 16:32 | 只看该作者
结贴了 :lol  摸索了几天还是蒙出来了

使用特权

评论回复
6
lincoln1000|  楼主 | 2011-5-8 17:10 | 只看该作者
最根本原因是我用的是集成了usb模块的ic  ic 文档上面介绍不够齐全  4个字节的长度分两次传就好了  端点设置那设不到64byte  貌似只能设2

使用特权

评论回复
7
bluesky_kun| | 2013-6-28 11:32 | 只看该作者
我在做usb鼠标的绝对坐标处理,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

61

帖子

1

粉丝