liuxf66
驱动中牛
驱动中牛
  • 注册日期2001-08-15
  • 最后登录2003-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2263回复:15

USB Mouse的INT端点传给Mouse驱动的三个字节数据是什么?

楼主#
更多 发布于:2002-05-22 11:20
在USB Mouse中,定义了一个INT端点,用来向Mouse的驱动(mouclass.sys和mouhid.sys,都是windows自带的)传送数据,一共有三字节的数据,据我所知,第一个字节定义了哪个键按下(左、右、中),第二个字节定义了X方向的位移量,第三个字节定义了Y方向的位移量。
难道第二个和第三个字节只能定义位移量吗?能不能将设备坐标传送给驱动程序(类似触摸屏定位系统,当手指按下时,鼠标能自动移动到按下的位置)?如果能,在firmware中该如何实现?
谢谢!

最新喜欢:

drirddrird
liuxf66
Nouk
驱动中牛
驱动中牛
  • 注册日期2001-08-22
  • 最后登录2006-10-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-22 15:55
Push.
I want to know it,too.
Taiwan's Driver Developer
liuxf66
驱动中牛
驱动中牛
  • 注册日期2001-08-15
  • 最后登录2003-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-23 01:46
或许可以在HID类的报告描述符中可以修改这三个数据的数据类型,我正在尝试看懂报告描述符,并修改它,不过,那玩艺太TMD的抽象,读懂它确实有点困难!
liuxf66
liuxf66
驱动中牛
驱动中牛
  • 注册日期2001-08-15
  • 最后登录2003-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-25 18:05
我顶!
liuxf66
SDK
SDK
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2007-11-26
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-25 18:41
若你看了mouse 芯片的资料就明白为何只是传输位移量了,因它本身就只能输出位移量!若要传输坐标点,可采用两种方法实现。
   1。mouse 内加入单片机来实现,这样自然要写firmware,如何实现也不难,请记下第一个点的坐标位置(通常在显示器中央处),然后和上一个点坐标相加,依次类推。
   2。完全改变驱程。总的方法同上。
liuxf66
驱动中牛
驱动中牛
  • 注册日期2001-08-15
  • 最后登录2003-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-25 23:36
请记下第一个点的坐标位置(通常在显示器中央处),然后和上一个点坐标相加,依次类推。


楼上老兄,你说的第一个点的坐标是不是指windows启动后鼠标的初始坐标点?那是个什么值?
你说的“和上一个点的坐标相加”是什么意思?能不能详细解释一下,我现在很急!
谢谢!
liuxf66
SDK
SDK
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2007-11-26
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-26 19:50
Hi:
    是的,就是启动后mouse光标初始值(通常在屏幕的中央处),至于多少?随屏幕的分辩率不一样而不同,你完全可自行摸索。至于“相加”也不难理解,若上一点坐标为(Xn,Yn),则下一点坐标为X(n+1)=Xn+dX 、    Y(n+1)=Yn+dY (其中dX、dY为此次移动的偏移量)
kodaira
驱动牛犊
驱动牛犊
  • 注册日期2002-05-11
  • 最后登录2002-06-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-27 11:17
毕业设计刚好看过资料

希望对你有帮助

 ;)


Data report will be 3 bytes format:
Byte     Bit      Description
1         0       Left button status; 1=pressed
          1       Right button status; 1=pressed
          2       Middle button status; 1=pressed
          3       Reserve
          4       X data sign; 1=negative
          5       Y data sign; 1=negative
          6       X data overflow; 1=overflow
          7       Y data overflow; 1=overflow
2        0-7      X data(D0-D7)
3        0-7      Y data(D0-D7)




[编辑 -  5/27/02 by  kodaira]
kodaira
驱动牛犊
驱动牛犊
  • 注册日期2002-05-11
  • 最后登录2002-06-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-05-27 11:24
天,编辑了格式还是不对
 :mad:

应该是byte是1(第一个1)         2(倒数第2)   3(last one)
       bit是01234567 0-7 0-7

这样应该清楚了吧



[编辑 -  5/27/02 by  kodaira]
liuxf66
驱动中牛
驱动中牛
  • 注册日期2001-08-15
  • 最后登录2003-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-05-27 20:16
请问楼上兄弟,那byte2和byte3中的Data是位移量呢还是绝对地址呢?
liuxf66
SDK
SDK
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2007-11-26
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-05-28 07:56
Hi liuxf66

   屏幕上的象素点绝对地址是不可能存在负值的,无论X>0,Y>0
liuxf66
驱动中牛
驱动中牛
  • 注册日期2001-08-15
  • 最后登录2003-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-05-28 23:32
屏幕上的象素点绝对地址是不可能存在负值的,无论X>0,Y>0

我觉得也是这样,这三个字节的内容我看过,想向大家确认一下。

完全改变驱程。总的方法同上。

SDK兄,你做过这样的驱动程序吗?能不能介绍一下经验?谢谢!
liuxf66
SDK
SDK
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2007-11-26
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-05-29 08:06
Hi liuxf66 兄:
    因不知你用它做什么?是否做玻珠幕教鞭用,若是,那样最好不要改驱程,这样会给使用者带来许多不便,如原先的Mouse 不能同时使用了。
liuxf66
驱动中牛
驱动中牛
  • 注册日期2001-08-15
  • 最后登录2003-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-05-29 10:18
我是用他来做触摸屏,基本原理是这样的:当触摸屏上有笔按上时,AD采样到触摸屏的触点电压并送给PC,PC将这个电压信号换算为触摸屏的坐标信号,然后让鼠标的移动到该触点位置并相当于按下鼠标左键,当然还应该有一个切换按钮,移动到触点位置的同时并按下鼠标右键。
我买过类似产品,他们能实现这个功能,不知道SDK兄认为我的方案可行否?谢谢!
liuxf66
hywyy
驱动牛犊
驱动牛犊
  • 注册日期2002-05-14
  • 最后登录2002-05-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-05-29 10:20
大家好,我现在在作usb的鼠标,对于那三个字节具体是如何得到的还不清楚,还有主机是怎样识别这些偏移信号的。第二三两个字节的
x和y数据是如何构成的? 希望高手指点, 在这多谢拉!
SDK
SDK
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2007-11-26
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-05-29 14:53
Hi liuxf66  兄:
    不知你的产品,是通用型的还是为你某一产品专用的,若为专用,改变驱程自然更好。若为通用型,当然还是采用单片机为好。

游客

返回顶部