嵌入式Linux运行X11VNC服务时VNC客户端鼠标光标严重跳转问题
X11VNC 帧缓冲区模式下鼠标跳转问题解决方案
问题根因
该故障由缩放参数配置错误、UINPUT绝对坐标范围未显式声明导致,x11vnc无法正确换算VNC客户端输入坐标和嵌入式设备帧缓冲区的物理坐标对应关系,最终出现鼠标跳变。
修复步骤
- 首先执行
fbset命令确认/dev/fb0的真实分辨率、色深参数,例如返回值中geometry 1280 480 1280 960 16就代表物理分辨率为1280*480,色深16位。 - 修正
-scale参数,原命令中-scale 640x480x16x1280属于格式错误,不需要将色深、原始分辨率拼接到缩放参数中,仅需要填写VNC客户端要显示的目标分辨率即可,例如要缩放到640*480输出则写-scale 640x480。 - 补全UINPUT绝对坐标范围声明,在
-pipeinput参数后追加和帧缓冲区物理分辨率匹配的坐标范围,例如帧缓冲区实际分辨率为1280*480则修改为-pipeinput UINPUT:direct_abs=/dev/uinput:abs_x=1280:abs_y=480。 - 删除原命令中的
-nodragging参数,该参数会关闭拖拽动作的实时坐标同步,会加剧鼠标跳变问题。 - 追加
-nomodtweak参数,避免x11vnc擅自修改输入设备的坐标映射规则。
修复后参考启动命令
假设帧缓冲区物理分辨率为1280480,VNC输出分辨率为640480:
x11vnc -rfbport 5901 -no6 -rawfb /dev/fb0 -scale 640x480 -verbose -cursor none -pipeinput UINPUT:direct_abs=/dev/uinput:abs_x=1280:abs_y=480 -nomodtweak
如果调整后仍然存在鼠标跳转问题,可以在上述命令基础上追加-pointer_mode 1参数,强制使用绝对坐标映射模式。
内容的提问来源于stack exchange,提问作者codeshredder726b
相关产品推荐
相关产品推荐

