搜索
bottom↓
回复: 21

有没有朋友搞过鼠标的绝对坐标控制

[复制链接]

出0入0汤圆

发表于 2015-8-16 09:05:58 | 显示全部楼层 |阅读模式
最近在触摸屏转hid鼠标,现在触摸屏那边传回一个绝对坐标,而鼠标通常给pc的都是相对位移,怎么样把两者结合起来呢?
网上看到有人实现usb鼠标的绝对坐标方式控制,相对的报告描述符也给出了,但是鼠标就是不能动。
有没有朋友搞过这块的?

出0入0汤圆

发表于 2015-8-16 09:10:10 | 显示全部楼层
win linux自己会管理mouse

出0入0汤圆

 楼主| 发表于 2015-8-16 09:25:47 | 显示全部楼层
NJ8888 发表于 2015-8-16 09:10
win linux自己会管理mouse

我知道,但是现在的问题是,比如:我点击触摸屏的左上角,假设坐标为0,0,这时候我需要通过USB模拟鼠标的协议发送给PC,使得PC上鼠标指针移动到显示器0,0的坐标上,我的硬件又不知道PC上鼠标当前的位置,我如何移动鼠标呢?当然,如果自己做USB驱动可以实现,但是现在就是想通过现有的HID协议来实现

出0入0汤圆

发表于 2015-8-16 10:04:24 | 显示全部楼层
Uplate 发表于 2015-8-16 09:25
我知道,但是现在的问题是,比如:我点击触摸屏的左上角,假设坐标为0,0,这时候我需要通过USB模拟鼠标的 ...

比如你用linux,QT做的程序,插入USB鼠标,系统带了驱动程序处理鼠标坐标啊,你不会是裸奔吧

出0入0汤圆

发表于 2015-8-18 16:35:27 | 显示全部楼层
HID报告描述符里面有描述相对值还是绝对值的描述吧。

出0入0汤圆

发表于 2015-8-18 17:20:15 来自手机 | 显示全部楼层
记得好像要做个分辩率转换

出0入0汤圆

发表于 2015-8-18 17:39:03 | 显示全部楼层
call me   嗯嗯

出0入0汤圆

发表于 2015-8-18 17:52:09 | 显示全部楼层

想知道大侠有解决方法吗?

出0入0汤圆

发表于 2015-8-18 18:07:32 | 显示全部楼层
  1. const u8 MOUSE_ReportDescriptor[MOUSE_SIZ_REPORT_DESC] =
  2. {
  3. //=============================================================================
  4. //【鼠标】-顶层集合(报告ID=1,报告长度=6),描述符长度=58
  5.     0x05, 0x01,                // Usage Page (Generic Desktop)
  6.     0x09, 0x02,                // Usage (Mouse)
  7.     0xA1, 0x01,                // Collection (Application)        【通用桌面设备:鼠标】应用集合开始
  8.     0x09, 0x01,                //        Usage (Pointer)        指针设备
  9.     0xA1, 0x00,                //        Collection (Physical)        物理集合开始

  10.     0x85, 0x01,                //                Report ID (1)        报告ID =1
  11.    
  12.     0x05, 0x09,                //                Usage Page (Buttons)用途页为【按键】
  13.     0x19, 0x01,                //                Usage Minimum (01)        用途最小值1
  14.     0x29, 0x03,                //                Usage Maximum (03)用途最大值3(1=左键,2=右键,3=示中键)
  15.     0x15, 0x00,                //                Logical Minimum (0)        逻辑最小值0
  16.     0x25, 0x01,                //                Logical Maximum (1)        逻辑最大值1
  17.     0x75, 0x01,                //                Report Size (1)        字段大小为1bit
  18.     0x95, 0x03,                //                Report Count (3)        这样的字段数量为3
  19.     0x81, 0x02,                //                Input (Data, Var, Abs)输入(变量,数值,绝对值)

  20.     0x75, 0x05,                //                Report Size (5)
  21.     0x95, 0x01,                //                Report Count (1)        填充5个bit,补足一个字节
  22.     0x81, 0x01,                //                Input (Constant) for padding       

  23.     0x05, 0x01,                //                Usage Page (Generic Desktop)        用途页为【通用桌面】
  24.     0x09, 0x30,                //                Usage (X)                        用途为X
  25.     0x09, 0x31,                //                Usage (Y)                        用途为Y

  26.     0x15, 0x00,                //                Logical Minimum (0)             【逻辑最小值=0】
  27.     0x26, 0xff, 0x7f,        //                Logical_Maximum (32767)        【逻辑最大值=32767】
  28.     0x35, 0x00,                //                PHYSICAL_Minimum (0)        【物理最小值=0】
  29.     0x46, 0xff, 0x7f,        //                PHYSICAL_Maximum (32767)        【物理最大值=32767】

  30.     0x75, 0x10,                //                Report Size (16)                【16位量】
  31.     0x95, 0x02,                //                Report Count (2)                【这样的字段数量为2】
  32.     0x81, 0x02,                //                Input (Data, Var, Abs)        【输入(变量,数值,绝对值)】

  33.     0xC0,                //        End Collection (Physical) 物理集合结束
  34.     0xC0,                // End Collection (Application) 应用集合结束  
  35. };
复制代码

出0入0汤圆

发表于 2015-8-18 18:24:47 | 显示全部楼层

不错,不错~~~

出0入0汤圆

发表于 2015-8-18 18:31:26 来自手机 | 显示全部楼层
圈圈的书里 有你想要的,我也是参照他的

出0入0汤圆

 楼主| 发表于 2015-8-18 21:48:25 | 显示全部楼层
本帖最后由 Uplate 于 2015-8-18 21:50 编辑


非常感谢各位,昨天晚上已经搞出来了
另外

    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 的话会有问题,我记得貌似是移动范围小了,明天到公司 把报告描述符贴出来

出0入0汤圆

发表于 2015-8-19 09:34:49 | 显示全部楼层
Uplate 发表于 2015-8-18 21:48
非常感谢各位,昨天晚上已经搞出来了
另外

不会吧不会吧

出0入8汤圆

发表于 2015-8-20 05:38:07 来自手机 | 显示全部楼层
n年前我做过一个这玩意儿。有点儿忘了。。

出0入0汤圆

发表于 2020-11-4 17:30:52 | 显示全部楼层
大哥 复合设备描述符搞过吗 就是一次性弄个键盘和鼠标的报告描述符

出0入149汤圆

发表于 2020-11-5 04:26:04 来自手机 | 显示全部楼层
你要模拟的是触摸屏,而不是鼠标

出0入0汤圆

发表于 2020-11-6 12:34:22 | 显示全部楼层
Uplate 发表于 2015-8-18 21:48
非常感谢各位,昨天晚上已经搞出来了
另外

大哥 可以贴一下描述符吗

出0入0汤圆

发表于 2020-11-6 12:34:44 | 显示全部楼层
Momo 发表于 2020-11-5 04:26
你要模拟的是触摸屏,而不是鼠标

触控屏的 描述符 我老是测了没反应呢

出0入0汤圆

发表于 2020-11-6 12:35:24 | 显示全部楼层
qq1113673178 发表于 2020-11-4 17:30
大哥 复合设备描述符搞过吗 就是一次性弄个键盘和鼠标的报告描述符

这个我弄出来 了 用report id区分,但是有的设备还是会没反应 用绝对坐标的鼠标 会没反应 相对坐标可以

出0入0汤圆

发表于 2021-1-9 13:39:50 | 显示全部楼层
Uplate 发表于 2015-8-18 21:48
非常感谢各位,昨天晚上已经搞出来了
另外

兄弟哥们 能贴一下吗

出0入0汤圆

发表于 2022-7-1 10:46:29 | 显示全部楼层
mark 学习一下

出0入0汤圆

发表于 2022-7-2 12:50:13 | 显示全部楼层
看你给电脑是给相对还是绝对。给相对要自己算了再传,给绝对直接就能传。   HID可以定义相对还是绝对。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 21:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表