有没有朋友搞过鼠标的绝对坐标控制
最近在触摸屏转hid鼠标,现在触摸屏那边传回一个绝对坐标,而鼠标通常给pc的都是相对位移,怎么样把两者结合起来呢?网上看到有人实现usb鼠标的绝对坐标方式控制,相对的报告描述符也给出了,但是鼠标就是不能动。
有没有朋友搞过这块的? win linux自己会管理mouse
NJ8888 发表于 2015-8-16 09:10
win linux自己会管理mouse
我知道,但是现在的问题是,比如:我点击触摸屏的左上角,假设坐标为0,0,这时候我需要通过USB模拟鼠标的协议发送给PC,使得PC上鼠标指针移动到显示器0,0的坐标上,我的硬件又不知道PC上鼠标当前的位置,我如何移动鼠标呢?当然,如果自己做USB驱动可以实现,但是现在就是想通过现有的HID协议来实现 Uplate 发表于 2015-8-16 09:25
我知道,但是现在的问题是,比如:我点击触摸屏的左上角,假设坐标为0,0,这时候我需要通过USB模拟鼠标的 ...
比如你用linux,QT做的程序,插入USB鼠标,系统带了驱动程序处理鼠标坐标啊,你不会是裸奔吧 HID报告描述符里面有描述相对值还是绝对值的描述吧。 记得好像要做个分辩率转换 call me 嗯嗯 Halley 发表于 2015-8-18 17:39
call me 嗯嗯
想知道大侠有解决方法吗? const u8 MOUSE_ReportDescriptor =
{
//=============================================================================
//【鼠标】-顶层集合(报告ID=1,报告长度=6),描述符长度=58
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) 报告ID =1
0x05, 0x09, // Usage Page (Buttons)用途页为【按键】
0x19, 0x01, // Usage Minimum (01) 用途最小值1
0x29, 0x03, // Usage Maximum (03)用途最大值3(1=左键,2=右键,3=示中键)
0x15, 0x00, // Logical Minimum (0) 逻辑最小值0
0x25, 0x01, // Logical Maximum (1) 逻辑最大值1
0x75, 0x01, // Report Size (1) 字段大小为1bit
0x95, 0x03, // Report Count (3) 这样的字段数量为3
0x81, 0x02, // Input (Data, Var, Abs)输入(变量,数值,绝对值)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1) 填充5个bit,补足一个字节
0x81, 0x01, // Input (Constant) for padding
0x05, 0x01, // Usage Page (Generic Desktop) 用途页为【通用桌面】
0x09, 0x30, // Usage (X) 用途为X
0x09, 0x31, // Usage (Y) 用途为Y
0x15, 0x00, // Logical Minimum (0) 【逻辑最小值=0】
0x26, 0xff, 0x7f, // Logical_Maximum (32767) 【逻辑最大值=32767】
0x35, 0x00, // PHYSICAL_Minimum (0) 【物理最小值=0】
0x46, 0xff, 0x7f, // PHYSICAL_Maximum (32767) 【物理最大值=32767】
0x75, 0x10, // Report Size (16) 【16位量】
0x95, 0x02, // Report Count (2) 【这样的字段数量为2】
0x81, 0x02, // Input (Data, Var, Abs) 【输入(变量,数值,绝对值)】
0xC0, // End Collection (Physical) 物理集合结束
0xC0, // End Collection (Application) 应用集合结束
};
Halley 发表于 2015-8-18 18:07
不错,不错~~~ 圈圈的书里 有你想要的,我也是参照他的 本帖最后由 Uplate 于 2015-8-18 21:50 编辑
Halley 发表于 2015-8-18 18:07
非常感谢各位,昨天晚上已经搞出来了
另外
0x15, 0x00, // Logical Minimum (0) 【逻辑最小值=0】
0x26, 0xff, 0x7f, // Logical_Maximum (32767) 【逻辑最大值=32767】
0x35, 0x00, // PHYSICAL_Minimum (0) 【物理最小值=0】
0x46, 0xff, 0x7f, // PHYSICAL_Maximum (32767) 【物理最大值=32767】
这个 PHYSICAL_Minimum (0)如果设为0 的话会有问题,我记得貌似是移动范围小了,明天到公司 把报告描述符贴出来
Uplate 发表于 2015-8-18 21:48
非常感谢各位,昨天晚上已经搞出来了
另外
不会吧不会吧 n年前我做过一个这玩意儿。有点儿忘了。。 大哥 复合设备描述符搞过吗 就是一次性弄个键盘和鼠标的报告描述符 你要模拟的是触摸屏,而不是鼠标 Uplate 发表于 2015-8-18 21:48
非常感谢各位,昨天晚上已经搞出来了
另外
大哥 可以贴一下描述符吗 Momo 发表于 2020-11-5 04:26
你要模拟的是触摸屏,而不是鼠标
触控屏的 描述符 我老是测了没反应呢 qq1113673178 发表于 2020-11-4 17:30
大哥 复合设备描述符搞过吗 就是一次性弄个键盘和鼠标的报告描述符
这个我弄出来 了 用report id区分,但是有的设备还是会没反应 用绝对坐标的鼠标 会没反应 相对坐标可以 Uplate 发表于 2015-8-18 21:48
非常感谢各位,昨天晚上已经搞出来了
另外
兄弟哥们 能贴一下吗 mark 学习一下 看你给电脑是给相对还是绝对。给相对要自己算了再传,给绝对直接就能传。 HID可以定义相对还是绝对。
页:
[1]