Gnome

按住中鍵時使滑鼠移動滾動

  • March 2, 2021

在 Windows 中,我習慣於點擊中心按鈕,它會向上或向下提供“快速滾動”選項。如何在 Linux 上獲得這種行為?它目前似乎在中心點擊時使用後退按鈕。

我在 CentOS 下使用 Gnome。

此 Windows 功能從未真正進入 Unix 世界。在 Unix 世界中,滑鼠中鍵的主要目的是粘貼剪貼板內容(或者更準確地說,是用滑鼠選擇的文本,它是自動複製的)。一些跨平台應用程序,如 Firefox 和 Chrome,在 Windows 下支持 Linux 風格的滑鼠中鍵,反之亦然,但除此之外,大多數應用程序不支持這種細粒度的滾動。

儘管如此,您可以在系統級別相當接近。可以設置滑鼠按鈕,當按下它時,滑鼠移動會轉換為滾輪事件。這與您習慣使用的功能相同,但您可能會發現運動不連貫,因為應用程序接收到滾輪事件,這些事件通常被解釋為滾動一整行或整列。

要使用此配置,請使用xinput程序(我不知道是否有 GUI 前端)。首先,執行以下命令來查看您的指針設備的名稱:

$ xinput --list       
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Generic USB Mouse                         id=8    [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation          id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
   ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
   ↳ Power Button                              id=7    [slave  keyboard (3)]
   ↳   USB Keyboard                            id=9    [slave  keyboard (3)]

例如,在上面的輸出中,指針設備是Generic USB mouse. 您可以執行以下命令來列出可以調整的屬性:

xinput --list-props 'Generic USB Mouse'

您要查找的屬性集是“Evdev Wheel Emulation”屬性。使用以下設置,當按下滑鼠中鍵(按鈕 2)時,移動滑鼠會發送滾輪事件(4=上,5=下,6=左,7=右)。

xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation' 1
xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Button' 2
xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Axes' 6 7 4 5

您可能需要調整其他參數(慣性、超時)。

您可以將這些命令放在腳本中。添加#!/bin/sh為第一行,並使腳本文件可執行(例如chmod +x ~/bin/activate-wheel-emulation.sh)。然後將該腳本添加到會話開始時要執行的命令列表中(gnome-session-properties讓您對其進行配置)。

如果您具有 root 訪問權限並且想要對所有使用者進行更改(在家用電腦上可接受),則通過X.org 伺服器配置文件進行更改會更簡單。以 root 身份創建一個名為包含滑鼠驅動程序/etc/X11/xorg.conf.d/wheel-emulation.conf設置的文件。設置相同,但它們的組織方式略有不同。

Section "InputClass"
   Identifier "Wheel Emulation"
   MatchProduct "Generic USB Mouse"
   Option "EmulateWheel" "on"
   Option "EmulateWheelButton" "2"
   Option "XAxisMapping" "6 7"
   Option "YAxisMapping" "4 5"
EndSection

引用自:https://unix.stackexchange.com/questions/101867