缺少复制/粘贴鼠标中键功能

缺少复制/粘贴鼠标中键功能

Ubuntu 12.04 系统有点不寻常。它是从最小安装构建的,没有大多数常见的 Ubuntu 图形元素:没有 Unity、没有 Gnome shell、没有 LXDE 等等(我使用 i3 窗口管理器)。因此,“转到系统 > 实用程序 > . . ”之类的指令不适用于这样的系统。

此外,我一直在此系统上使用旧的串行鼠标 - Kensington Expert 鼠标(轨迹球),从人体工程学的角度来看,我非常喜欢它。我目前已通过串行转 PS2 适配器将其连接到系统,并且它大部分时间都运行良好 - 包括至关重要的通过鼠标中键复制/粘贴功能 - 尽管最近出现了一些奇怪的怪癖。为了解决这些怪癖,我决定尝试将串行转 PS2 适配器从图片中移除,并将其直接连接到串行端口。

因此,我找到了在 Ubuntu 下运行串行鼠标的指令(https://help.ubuntu.com/community/SerialMouseHowto),并且,执行这些指令并将鼠标挂接到串行端口确实会导致鼠标基本正常工作。问题是,我最常用且绝对必须具备的功能之一在此方案下不起作用:我可以按住鼠标左键并拖动,从图形或终端程序复制文本,但我无法通过在所需位置单击鼠标中键来粘贴它。简而言之,在此方案下似乎不存在鼠标中键功能。所以我正在寻找可能恢复该中键功能的方法。

我应该提到,在可能的 inputattach 选项中,没有一个与我的鼠标非常匹配。我尝试了几个,有些可以让鼠标正常工作,而其他则不行。我最初尝试了 --microsoft,但也尝试了 --mshack 和 --mouseman。使用这些选项,我都无法获得任何类型的鼠标中键功能。

顺便说一下,当鼠标通过串行转 ps2 适配器连接到系统时,xev 显示我的鼠标上有(从左下角开始并顺时针围绕鼠标)按钮 1、2、9 和 3。我认为按钮 9 可以指定为中间按钮。或者可能是 2 和 9 的组合。但是当我移除适配器并将鼠标直接连接到串行端口时,xev 指示只有 2 个按钮存在:左上角和左下角按钮都报告为按钮 1,而右上角和右下角按钮都报告为按钮 3。

那么,我是否需要进行一些鼠标按钮映射?此设备上有 4 个物理按钮。也许我需要在某个 /usr/share/X11/xorg.conf.d/ .conf 文件中放入一些补充 xorg 节?如能提供建议,我们将不胜感激。

答案1

我在 stackexchange 线程上找到了一个可行的答案https://unix.stackexchange.com/questions/9973/configuring-mouse-for-rightleft-button-simulating-middle-click-for-copy-paste。它涉及使用命令 xinput set-prop,具体来说

xinput set-prop "$device_name_or_number" "Evdev Middle Button Emulation" 1

完成此操作后,我需要的鼠标中键模拟功能(同时按下按钮 1 和 3 进行粘贴)就恢复了。

事后想法:这似乎与 evdev 有关,并且我在此系统上有一个 /usr/share/X11/xorg.conf.d/10-evdev.conf。也许我的 Option Emulate3Buttons true 节应该放在那里而不是 /etc/X11/xorg.conf 中?

摘要:为了使此解决方案在我的系统上工作,我编辑了 /etc/rc.local(如 OP 指示中引用的链接中的指令)并添加了行

inputattach --daemon --microsoft /dev/ttyS0

使串行鼠标基本可以正常工作。然后,我添加了以下行

xinput set-prop "$device_name_or_number" "Evdev Middle Button Emulation" 1

到我的 .xinitrc 文件(我不使用任何登录管理器)。重新启动并启动 X 后,我拥有了一个功能齐全的 Kensington Expert Mouse(至少满足我的需求)。带有中键粘贴功能。问题解决了,除了更好地理解了 evdev 和 Xorg 如何协同工作之外。

相关内容