You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

X11下不同分辨率如何保持鼠标物理移动对应指针物理位移一致

问题结论

仅修改Coordinate Transformation Matrix(坐标转换矩阵,以下简称CTM)无法完全实现你的需求,你的猜测完全正确:X11下鼠标加速计算的执行节点早于CTM变换,仅靠CTM缩放无法修正加速逻辑带来的位移偏差。

原因说明

X11默认输入栈(libinput/evdev驱动)的鼠标事件处理链路顺序为:

  1. 鼠标硬件上报原始位移计数
  2. 驱动读取原始位移,结合当前移动速度、加速曲线配置,计算出对应全屏虚拟像素的加速后位移量
  3. 对加速后的位移应用CTM做坐标变换
  4. 将最终坐标映射到屏幕输出

你将CTM设为0.5倍缩放时,仅在最后一步对已经算完加速的位移做了线性缩放,加速阶段的速度阈值、增益计算都是基于2160p分辨率下的虚拟像素密度完成的。分辨率降到1080p后,像素物理尺寸变为原来的2倍,同样的物理移动速度对应的虚拟像素速度只有原来的1/2,会导致加速触发时机、增益大小和原分辨率下不匹配。你调整CTM后觉得手感接近预期,是因为慢速移动时鼠标未触发加速,位移呈线性变化,这部分CTM缩放可以正常修正;一旦移动速度快到触发非线性加速,偏差就会显现。

正确配置方法

不要通过CTM做位移缩放,改为在加速计算前应用缩放系数,让整个加速逻辑匹配降分辨率后的像素密度,操作步骤如下:

  1. 先把CTM恢复为默认单位矩阵,执行命令:
    xinput --set-prop [你的鼠标设备名/ID] 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1
    
  2. 设置恒定减速参数,在加速计算前将位移缩放为原来的1/2,匹配1080p的像素密度:
    xinput --set-prop [你的鼠标设备名/ID] 'Device Accel Constant Deceleration' 2
    
    这个参数的作用是在加速逻辑启动前,将硬件上报的原始位移除以设定值,后续所有速度计算、加速增益都会基于缩放后的位移执行,完全匹配分辨率减半后的像素映射关系,慢移、快移的物理位移都会和2160p下完全一致。
  3. 校准验证:可以用xev -event mouse工具做量化测试,弹出测试窗口后,固定鼠标物理移动距离(比如沿鼠标垫水平移动10cm),分别记录2160p默认配置、1080p修改配置后的像素位移值:1080p下的像素位移应为2160p下的1/2,此时物理移动距离完全匹配。
注意事项
  • 如果你的发行版使用libinput驱动(绝大多数2018年后的发行版默认配置),请确保libinput Accel Profile参数和2160p下的配置一致(比如同为自适应加速/平坦加速),不要切换加速剖面,避免手感差异。
  • 如果你是通过xrandr设置输出缩放而非直接切换显示器分辨率,需要额外确认输出缩放比例和上述减速参数的匹配关系:输出缩放比例为s时,减速参数设置为1/s即可,比如输出设为0.75x缩放就把减速值设为≈1.33。

内容的提问来源于stack exchange,提问作者Augustinas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 17:09:17