windows鼠标,物理位移与屏幕位移的计算方法(鼠标加速度)

1、背景
在Windows系统中,有3种获取鼠标位移信息的方法:WM_MOUSEMOVE, WM_INPUT 和DirectInput。这3种方法中,WM_MOUSEMOVE获取的是鼠标当前在窗口上的绝对位置,通过它可以获取鼠标的屏幕位移;WM_INPUT和DirectInput获取的则是鼠标相对于上一个位置的相对位移,它们就是鼠标实际上的物理位移。事实上,WM_INPUT与DirectInput在获取鼠标位移信息上是等价的,这与他们的实现有关,本文不作讨论。下面的讨论中,我只会提及WM_INPUT。

物理位移与屏幕位移之间有一个转换公式,但是这个公式微软没有公开(或者是我没有找到)。本文第二、三节分别讨论物理位移和屏幕位移的一些细节,第四节要讨论这两者之间的转换关系以及我的一些研究结果。第五节是结论。

2、物理位移
物理位移就是鼠标实际上移动了多少个点,这里首先要介绍一下鼠标的一些概念。首先是鼠标的分辨率,鼠标分辨率单位是dpi,即每个英寸可以分辨多少个点。以400dpi的鼠标为例(以下都会使用这个参数的鼠标),理想情况下,用户每移动鼠标1/400英寸,鼠标硬件就可以检测到一个点的位移。第二是鼠标的扫描率,这个参数会影响鼠标的跳帧问题,不过这与我的讨论没有太大关系。在下面讨论中,我假设不存在跳帧问题。最后一个参数是数据更新频率,这是与鼠标接口和鼠标本身都有关的一个参数。例如USB1.1鼠标,数据更新频率是125Hz,PS/2的鼠标为100Hz,而USB2.0的鼠标频率更高。

鼠标数据每一次更新时包含一个数据包,这个包中包含了此次更新间隔中鼠标的每一个轴的位移,这个位移值为一个8bit整数,即每一个轴位移可以在-128到+127之间。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值