停用某个特定 HID 上的中键粘贴功能

停用某个特定 HID 上的中键粘贴功能

我在联想 T430s 上使用 Ubuntu 12.04。当使用带指点器的外接键盘时,我观察到以下意外行为:滚动时(按住鼠标中键并移动指点器),我最后选择的文本被粘贴。但这应该只发生在单击(而不是按住)鼠标中键时。有趣的是,这只发生在外接键盘上,笔记本电脑的键盘表现正常。此外,这只发生在按下鼠标中键后不久使用指点器时,当我等待至少一秒钟时,它不会粘贴。

谷歌搜索没有找到任何结果。是否有任何类似的经历或我错过的解决方法?

对我来说,一个可以接受的解决方法是仅禁用外接键盘上的中键粘贴功能,这样我仍然可以使用外接鼠标进行粘贴。我只找到了一种在所有设备上完全禁用此功能的方法,但我经常使用此粘贴功能,所以我不能没有它。

答案1

用于xinput list查找您想要禁用按钮的设备:

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=8    [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]

我将在鼠标上尝试一下。下一步是获取当前按钮映射:

$ xinput get-button-map 'Logitech USB-PS/2 Optical Mouse'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 

事实证明我的鼠标以非常简单的方式映射:物理按钮 1 是逻辑按钮 1,等等。这是默认设置;例如,如果您选择了左手模式,您可能会看到不同的东西。

无论如何,中间按钮是鼠标按钮 2。要禁用它,您可以将显示 2 的按钮设置为 0(禁用)。(希望当您滚动时,它会生成按钮 4 或 5 次点击,具体取决于您是向上还是向下滚动。这是滚轮正常工作的方式。)

$ xinput set-button-map 'Logitech USB-PS/2 Optical Mouse' 1 0 3 4 5 6 7 8 9 10 11 12 13 14 15 16

现在,该设备上的鼠标中键将被完全忽略。要将其改回,只需再次运行该命令,但将 2 放回原位。(当然,您也可以随意更改按钮映射 - 例如,如果您交换 4 和 5,您将更改滚动的方向)。

如果这能满足您的要求,那么您只需要安排将最后一行作为登录脚本的一部分运行。

相关内容