阅读:2262回复:15
USB Mouse的INT端点传给Mouse驱动的三个字节数据是什么?
在USB Mouse中,定义了一个INT端点,用来向Mouse的驱动(mouclass.sys和mouhid.sys,都是windows自带的)传送数据,一共有三字节的数据,据我所知,第一个字节定义了哪个键按下(左、右、中),第二个字节定义了X方向的位移量,第三个字节定义了Y方向的位移量。
难道第二个和第三个字节只能定义位移量吗?能不能将设备坐标传送给驱动程序(类似触摸屏定位系统,当手指按下时,鼠标能自动移动到按下的位置)?如果能,在firmware中该如何实现? 谢谢! |
|
最新喜欢:![]()
|
沙发#
发布于:2002-05-22 15:55
Push.
I want to know it,too. |
|
|
板凳#
发布于:2002-05-23 01:46
或许可以在HID类的报告描述符中可以修改这三个数据的数据类型,我正在尝试看懂报告描述符,并修改它,不过,那玩艺太TMD的抽象,读懂它确实有点困难!
|
|
|
地板#
发布于:2002-05-25 18:05
我顶!
|
|
|
地下室#
发布于:2002-05-25 18:41
若你看了mouse 芯片的资料就明白为何只是传输位移量了,因它本身就只能输出位移量!若要传输坐标点,可采用两种方法实现。
1。mouse 内加入单片机来实现,这样自然要写firmware,如何实现也不难,请记下第一个点的坐标位置(通常在显示器中央处),然后和上一个点坐标相加,依次类推。 2。完全改变驱程。总的方法同上。 |
|
5楼#
发布于:2002-05-25 23:36
请记下第一个点的坐标位置(通常在显示器中央处),然后和上一个点坐标相加,依次类推。 楼上老兄,你说的第一个点的坐标是不是指windows启动后鼠标的初始坐标点?那是个什么值? 你说的“和上一个点的坐标相加”是什么意思?能不能详细解释一下,我现在很急! 谢谢! |
|
|
6楼#
发布于:2002-05-26 19:50
Hi:
是的,就是启动后mouse光标初始值(通常在屏幕的中央处),至于多少?随屏幕的分辩率不一样而不同,你完全可自行摸索。至于“相加”也不难理解,若上一点坐标为(Xn,Yn),则下一点坐标为X(n+1)=Xn+dX 、 Y(n+1)=Yn+dY (其中dX、dY为此次移动的偏移量) |
|
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] |
|
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] |
|
9楼#
发布于:2002-05-27 20:16
请问楼上兄弟,那byte2和byte3中的Data是位移量呢还是绝对地址呢?
|
|
|
10楼#
发布于:2002-05-28 07:56
Hi liuxf66
屏幕上的象素点绝对地址是不可能存在负值的,无论X>0,Y>0 |
|
11楼#
发布于:2002-05-28 23:32
屏幕上的象素点绝对地址是不可能存在负值的,无论X>0,Y>0 我觉得也是这样,这三个字节的内容我看过,想向大家确认一下。 完全改变驱程。总的方法同上。 SDK兄,你做过这样的驱动程序吗?能不能介绍一下经验?谢谢! |
|
|
12楼#
发布于:2002-05-29 08:06
Hi liuxf66 兄:
因不知你用它做什么?是否做玻珠幕教鞭用,若是,那样最好不要改驱程,这样会给使用者带来许多不便,如原先的Mouse 不能同时使用了。 |
|
13楼#
发布于:2002-05-29 10:18
我是用他来做触摸屏,基本原理是这样的:当触摸屏上有笔按上时,AD采样到触摸屏的触点电压并送给PC,PC将这个电压信号换算为触摸屏的坐标信号,然后让鼠标的移动到该触点位置并相当于按下鼠标左键,当然还应该有一个切换按钮,移动到触点位置的同时并按下鼠标右键。
我买过类似产品,他们能实现这个功能,不知道SDK兄认为我的方案可行否?谢谢! |
|
|
14楼#
发布于:2002-05-29 10:20
大家好,我现在在作usb的鼠标,对于那三个字节具体是如何得到的还不清楚,还有主机是怎样识别这些偏移信号的。第二三两个字节的
x和y数据是如何构成的? 希望高手指点, 在这多谢拉! |
|
15楼#
发布于:2002-05-29 14:53
Hi liuxf66 兄:
不知你的产品,是通用型的还是为你某一产品专用的,若为专用,改变驱程自然更好。若为通用型,当然还是采用单片机为好。 |
|