[圈圈教你玩USB]

鼠标使用绝对坐标,它的描述符的问题

[复制链接]
16420|17
手机看帖
扫描二维码
随时随地手机跟帖
xiaoqi937|  楼主 | 2010-5-26 17:13 | 显示全部楼层 |阅读模式
本帖最后由 xiaoqi937 于 2010-5-26 17:14 编辑

我用外部输入的数据控制鼠标,输入的数据为16位,所以定义了X,Y的长度也为16位。数据代表鼠标的绝对位置。我配置了描述符,但发现,鼠标只能在一块小的区域里正常移动。不能布满全屏。我把描述符列在下面,希望好心人能给些指点。只列出了X,Y的那部分。
Usage Page 01
Usage 30
Usage 31
Logical Minimum (0)
Logical Maximum (65535)
Physical Minimum (0)
Physical Maximum (65535)
Report Size (16)
Report Count(2)
Input (Data, Variable, Absolute)
End Collection
我改了逻辑的最大最小值,好像不起作用。删掉了也不影响。物理最大值,再大也是这样,可移动区域不会在屏幕上有所增加。到底是哪的问题呢?

相关帖子

大秦正声| | 2010-5-27 16:05 | 显示全部楼层
是相对坐标!


擅长c8051f单片机usb通信(hid,bulk,c51,vb6,vc6),rf通信(cc1100/cc2500),internet通信(cp2200),iap(bootloader),定时/记数,外部中断,ad,da,uart,spi,i2c,pwm,wdt,i/o,lcd(240*128)以及
掉电数据保护等软硬件设计和编程!

可以承接相关开发项目以及技术转让!
http://yang96381.blog.163.com

使用特权

评论回复
604724930| | 2010-6-14 08:11 | 显示全部楼层
学的东西了哦

使用特权

评论回复
tanganrong| | 2010-6-17 15:25 | 显示全部楼层
这是我做的USB红外触摸屏定义的HID描述符,已经在产品上正常工作,你可以参考一下(REPORT_ID为0x02部分)。
   //126 byte
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
    0x09, 0x02,                    // USAGE (Mouse)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x09, 0x01,                    //   USAGE (Pointer)
    0xa1, 0x00,                    //   COLLECTION (Physical)
    0x85, 0x01,                    //     REPORT_ID (1)
    0x05, 0x09,                    //     USAGE_PAGE (Button)
    0x19, 0x01,                    //     USAGE_MINIMUM (Button 1)
    0x29, 0x03,                    //     USAGE_MAXIMUM (Button 3)
    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)
    0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)
    0x75, 0x01,                    //     REPORT_SIZE (1)
    0x95, 0x03,                    //     REPORT_COUNT (3)
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
    0x75, 0x05,                    //     REPORT_SIZE (5)
    0x95, 0x01,                    //     REPORT_COUNT (1)
    0x81, 0x01,                    //     INPUT (Cnst,Ary,Abs)
    0x05, 0x01,                    //     USAGE_PAGE (Generic Desktop)
    0x09, 0x30,                    //     USAGE (X)
    0x09, 0x31,                    //     USAGE (Y)
    0x15, 0x81,                    //     LOGICAL_MINIMUM (-127)
    0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)
    0x75, 0x08,                    //     REPORT_SIZE (8)
    0x95, 0x02,                    //     REPORT_COUNT (2)
    0x81, 0x06,                    //     INPUT (Data,Var,Rel)
    0xc0,                          //     END_COLLECTION
    0xc0,                          // END_COLLECTION
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
    0x09, 0x02,                    // USAGE (Mouse)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x09, 0x01,                    //   USAGE (Pointer)
    0xa1, 0x00,                    //   COLLECTION (Physical)
    0x85, 0x02,                    //     REPORT_ID (2)
    0x05, 0x09,                    //     USAGE_PAGE (Button)
    0x19, 0x01,                    //     USAGE_MINIMUM (Button 1)
    0x29, 0x03,                    //     USAGE_MAXIMUM (Button 3)
    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)
    0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)
    0x75, 0x01,                    //     REPORT_SIZE (1)
    0x95, 0x03,                    //     REPORT_COUNT (3)
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
    0x75, 0x01,                    //     REPORT_SIZE (1)
    0x95, 0x05,                    //     REPORT_COUNT (5)
    0x81, 0x03,                    //     INPUT (Cnst,Var,Abs)
    0x05, 0x01,                    //     USAGE_PAGE (Generic Desktop)
    0x09, 0x30,                    //     USAGE (X)
    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)
    0x26, 0xff, 0x07,              //     LOGICAL_MAXIMUM (2047)
    0x35, 0x00,                    //     PHYSICAL_MINIMUM (0)
    0x46, 0xff, 0x07,              //     PHYSICAL_MAXIMUM (2047)
    0x75, 0x10,                    //     REPORT_SIZE (16)
    0x95, 0x01,                    //     REPORT_COUNT (1)
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
    0x09, 0x31,                    //     USAGE (Y)
    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)
    0x26, 0xff, 0x05,              //     LOGICAL_MAXIMUM (1535)
    0x35, 0x00,                    //     PHYSICAL_MINIMUM (0)
    0x46, 0xff, 0x05,              //     PHYSICAL_MAXIMUM (1535)
    0x75, 0x10,                    //     REPORT_SIZE (16)
    0x95, 0x01,                    //     REPORT_COUNT (1)
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
    0xc0,                          //     END_COLLECTION
    0xc0                           // END_COLLECTION

使用特权

评论回复
mywaypeng| | 2011-8-13 16:32 | 显示全部楼层
4# tanganrong

tanganrong,

你好!
我遇到和楼主一样的问题.
我是通过8bit相对XY的基础上改成16bit绝对XY坐标.
现在USB芯片已经可以发16bit的XY数据到PC.
但鼠标满屏跳.
是否需要更新驱动程序才可以正常运作呢?

我的邮箱是: mywaypeng@126.com

谢谢!

Jack

使用特权

评论回复
huaziforever| | 2011-10-5 16:38 | 显示全部楼层
4楼的正解,我也做过。

使用特权

评论回复
hezezhaowei| | 2011-10-14 11:26 | 显示全部楼层
1# xiaoqi937

使用特权

评论回复
hezezhaowei| | 2011-10-14 11:28 | 显示全部楼层
楼主您好,我现在也想做一个绝对坐标的HID鼠标,希望能得到您的帮助,我的QQ466695166

使用特权

评论回复
hezezhaowei| | 2011-10-14 11:30 | 显示全部楼层
楼主能不能将您的工程代码给我一下呀

使用特权

评论回复
a6482546| | 2011-10-25 11:09 | 显示全部楼层
楼主..我也有类似问题..希望能够+我QQ609725700交流一下

使用特权

评论回复
haiqingxiao| | 2011-10-31 17:09 | 显示全部楼层
谢谢,我也在弄这个

使用特权

评论回复
bluesky_kun| | 2013-6-26 18:02 | 显示全部楼层
为什么在改用鼠标的绝对坐标后,有的机器虽然能识别鼠标但发数据却没反应呢?

我使用的上面的报告描述符,在我电脑上死活没反应,换到我同事电脑上就ok

这是为什么呢?

使用特权

评论回复
konson32| | 2016-1-5 17:52 | 显示全部楼层
我所用的例程是上传4个字节,第一个字节表示按键,第二个字节表示x轴,第三个字节表示y轴,第四个字节
表示鼠标滚轮,当你们设置“0x75, 0x10, //     REPORT_SIZE (16)”为2个字节时上传一共6个字节(X轴和Y轴各2个字节),是这样子吗?哪里还需要再配置的吗?

使用特权

评论回复
taohao515| | 2017-5-21 15:08 | 显示全部楼层
tanganrong 发表于 2010-6-17 15:25
这是我做的USB红外触摸屏定义的HID描述符,已经在产品上正常工作,你可以参考一下(REPORT_ID为0x02部分) ...

请问你做过红外触摸屏相关的吗,我现在也正在做这个,请问能提供qq联系吗,我想请教您相关的,万分感谢

使用特权

评论回复
taohao515| | 2017-5-22 16:56 | 显示全部楼层
tanganrong 发表于 2010-6-17 15:25
这是我做的USB红外触摸屏定义的HID描述符,已经在产品上正常工作,你可以参考一下(REPORT_ID为0x02部分) ...

请问,HID的多点的红外触摸屏,报告描述符中的逻辑最大最小值是表示的触摸坐标,物理最大最小值没有左右吗,是要设置成0吗?

使用特权

评论回复
15389664934| | 2018-6-9 14:31 | 显示全部楼层
tanganrong 发表于 2010-6-17 15:25
这是我做的USB红外触摸屏定义的HID描述符,已经在产品上正常工作,你可以参考一下(REPORT_ID为0x02部分) ...

你好,请问Android下红外触摸框冲突是要修改Linux驱动吗?

使用特权

评论回复
零三翟邢止胃| | 2019-3-18 12:39 | 显示全部楼层
我现在也想做一个绝对坐标的HID鼠标

使用特权

评论回复
yzq13246068880| | 2019-6-11 14:30 | 显示全部楼层

使用特权

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

本版积分规则

0

主题

15

帖子

2

粉丝