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

本文探讨了Windows系统中通过WM_INPUT获取的鼠标物理位移与屏幕位移之间的转换关系。分析了鼠标分辨率、数据更新频率等因素对鼠标速度的影响,并详细阐述了Windows XP的鼠标加速度函数设计,旨在提供平滑的用户体验。文章介绍了分段函数F(Vmouse)用于转换物理位移到屏幕位移,并讨论了不同鼠标设置对移动速度的影响。
摘要由CSDN通过智能技术生成

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
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值