You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Lubuntu虚拟机执行xrandr -y后鼠标定位与显示不匹配问题求助

Lubuntu虚拟机执行xrandr -y后鼠标定位与显示不匹配问题求助

先共情下你的处境:Windows 10主机用VMware Player 16跑Lubuntu 24.04,为了让屏幕在镜子里正常显示,用xrandr -y翻转了画面,结果鼠标却闹脾气——光标显示倒过来了,移动逻辑还和正常屏幕一致,点屏幕底部的内容得把鼠标移到顶部,确实挺闹心的!

问题根源分析

这个问题本质是系统显示层和输入层的翻转不同步xrandr -y只处理了桌面的输出画面翻转,但VMware虚拟机的鼠标输入是基于Host的坐标映射到Guest系统的,Guest没同步调整鼠标输入的坐标变换,导致显示和输入错位。而且虚拟机环境下,xrandr的行为确实和物理机不一样,毕竟VMware在中间做了一层输入输出中转。

具体解决方法

方法1:用xinput同步翻转鼠标输入坐标

这是最直接的方案,给鼠标设备设置坐标变换矩阵,让输入和翻转后的屏幕匹配:

  1. 打开终端,运行xinput list,找到你的虚拟机鼠标设备(名字通常带“VMware”“Mouse”,比如VMware Virtual USB Mouse),记下它的id号(比如输出里的id=8)。
  2. 执行下面的命令,把<鼠标ID>换成你刚才找到的数字:
xinput set-prop <鼠标ID> "Coordinate Transformation Matrix" 1 0 0 0 -1 1 0 0 1

这个矩阵会垂直翻转鼠标的输入Y轴,刚好对应xrandr -y的屏幕垂直翻转。执行完再移动鼠标试试,应该就能和屏幕交互区域对应上了。

方法2:用LXQt自带的显示设置翻转(更省心)

别用命令行的xrandr了,试试桌面环境自带的设置,它大概率会自动同步鼠标输入:

  1. 打开LXQt菜单,找到Monitor Settings(显示器设置)。
  2. 在弹出的窗口里,选中你的显示器,在“Rotation”(旋转)选项里选“180°”或者“Vertical Flip”(垂直翻转)。
  3. 应用设置后,看看鼠标的显示和移动是不是都正常了——桌面环境的设置通常会同时处理显示输出和输入设备的坐标适配,比单独用xrandr靠谱。

方法3:调整VMware的鼠标集成模式

有时候VMware的鼠标捕获模式会干扰输入映射,可以试试:

  1. 在VMware窗口里按Ctrl+Alt释放鼠标,回到Host系统。
  2. 点击VMware窗口顶部的Player菜单,选择Manage > Virtual Machine Settings(管理>虚拟机设置)。
  3. 在设置窗口里找到Options > Mouse and Keyboard(选项>鼠标和键盘)。
  4. 切换“Mouse Policy”(鼠标策略),比如把“Auto Capture Mouse”(自动捕获鼠标)改成“Ungrab when cursor leaves window”(光标离开窗口时释放),或者禁用“Enhanced Virtual Keyboard”(增强型虚拟键盘),重启虚拟机再测试。

后续优化

如果每次开机都要手动执行命令,可以把xrandr -y和xinput的命令写成脚本,加到LXQt开机启动项里:

  1. 新建文本文件flip_display.sh,内容如下(替换<鼠标ID>为实际值):
#!/bin/bash
xrandr -y
xinput set-prop <鼠标ID> "Coordinate Transformation Matrix" 1 0 0 0 -1 1 0 0 1
  1. 给脚本加执行权限:chmod +x flip_display.sh
  2. 打开LXQt的Session Settings(会话设置),在“Autostart”(自动启动)里添加这个脚本的路径,开机就会自动执行了。

备注:内容来源于stack exchange,提问作者Deep Thought

火山引擎 最新活动