罗技 Marble Mouse

来自 ArchWiki

本文或章节已过时。

原因:本页面大部分内容写于 2008 年至 2011 年之间。多个章节包含自 2011 年以来正在修订的注释。(在Talk:Logitech Marble Mouse中讨论)

本文或章节需要语言、wiki 语法或风格改进。请参阅 Help:Style 以供参考。

原因:过于注重细节:不必要的时间参考,提及特定的软件版本。需要重写为使用该硬件的通用指南,而与环境无关。(在Talk:Logitech Marble Mouse中讨论)

Logitech Marble Mouse 是一款带有四个按钮和一个轨迹球的指点设备,也称为 Trackman Marble。Marble Mouse 既可以左手使用,也可以右手使用。它需要进行一些配置才能启用轨迹球滚动功能。有关详细图像,请参阅:Logitech Marble Mouse (或此处)。

安装

鼠标在启动时或任何时候“热插拔”到已启动的系统中时都会自动检测到。无需特殊安装。

示例配置

有关可用选项的更多信息,请参阅 libinput(4) § 配置详情

libinput

GDM 3.16 和 XFCE 4.12 使用 libinput。以下配置步骤已知于 2019 年 1 月 23 日起有效

  1. 安装 xf86-input-libinput
  2. 编辑 /etc/X11/xorg.conf.d/10-libinput.conf
  3. 附加以下内容
Section "InputClass"
  Identifier   "Marble Mouse"
  MatchProduct "Logitech USB Trackball"
  Driver       "libinput"
  Option       "ScrollMethod"    "button"
  Option       "ScrollButton"    "8"
  Option       "MiddleEmulation" "true"
EndSection

  • 通过按下并按住左侧小按钮同时移动轨迹球来启用水平和垂直滚动。
  • 通过同时按下两个大按钮来启用和弦点击。
  • 使用左侧小按钮进行后退浏览。
  • 使用右侧小按钮进行前进浏览。

或附加

Section "InputClass"
  Identifier    "Marble Mouse"
  MatchProduct  "Logitech USB Trackball"
  Driver        "libinput"
  Option        "ScrollMethod"        "button"
  Option        "ScrollButton"        "9"
  Option        "MiddleEmulation"     "true"
  Option        "HorizontalScrolling" "false"
  Option        "ButtonMapping"       "1 2 3 4 5 6 7 9 8"
EndSection

  • 通过按下并按住右侧小按钮同时移动轨迹球来启用垂直滚动。
  • 禁用水平滚动。
  • 通过同时按下两个大按钮来启用和弦点击。
  • 使用左侧小按钮进行前进浏览。
  • 使用右侧小按钮进行后退浏览。

基本功能

Marble Mouse 按钮的硬件 ID 保持不变,与设备配置无关。

当未指定其他配置时,按钮映射到以下功能

ID 硬件操作 结果
1 左侧大按钮 普通点击
2 双大按钮 中键点击 †
3 右侧大按钮 右键点击
4 (非按钮) -
5 (非按钮) -
6 (非按钮) -
7 (非按钮) -
8 左侧小按钮 浏览器后退
9 右侧小按钮 浏览器前进
注意
  • 同时按下两个大按钮会创建中键点击
  • † 同时点击由配置指令启用。它需要 Emulate3buttons
  • 术语中键点击滚轮点击在本文档中可互换使用。
  • 备用点击可以代替右键点击使用。通常,这会弹出上下文菜单。
  • 以上显示的结果是在未按下修饰键时发生的。
  • 当按下修饰键(例如 Ctrl)并单击按钮时,可能会发生不同的结果。
ID 硬件操作 结果
4 向下滚动滚球 向下移动光标
5 向上滚动滚球 向上移动光标
6 向左滚动滚球 向左移动光标
7 向右滚动滚球 向右移动光标
注意
  • 当未使用修饰键时,会发生光标移动。
  • 修饰键与滚动运动结合使用可能会产生备用结果。
  • “修饰键”是指在滚动轨迹球时按住的键(例如 Ctrl)或按钮(如鼠标按钮)。
注意: Marble Mouse 轨迹球可以执行文档滚动,很像滚轮鼠标。当按住滚动修饰键并滚动轨迹球时,会发生滚动。您必须至少提供最小配置才能启用此功能。

在“滚轮模式”下使用轨迹球可能需要用户做出一些不寻常的手势。例如,使用滚轮鼠标,您可以使用 Ctrl + wheel_roll  手势调整 Web 浏览器中的显示字体。使用轨迹球,此操作变为 Ctrl + 按住按钮 + 滚球

配置

您可能会发现直接跳转到示例配置并尝试它很有帮助。

配置章节包含您可能不感兴趣的信息。大多数 Arch 用户将使用现代版本的 X 服务器,该服务器需要 udev 热插拔。

注意:目前(截至 2012 年 5 月)Gnome 3 和中键点击模拟存在问题。请参阅下面的#“双大按钮”组合点击

Gnome 3 例如在 Ubuntu 12.04 中使用。

按钮和轨迹球

在找到示例配置文件后,您可能希望对其进行更改。您只需要关注三到四个设置行。

分配按钮

您可能想要为按钮按下分配新操作。这可以通过设置位置参数来完成。

可以更改按钮 1、2、3、89 的值。(按钮 2 只是两个大按钮的组合按下。)不要更改参数 4、5、6 或 7。

# This line makes the default button assignments.

Option "ButtonMapping" "1 2 3 4 5 6 7 8 9"

分配不同按钮操作的一个明显原因是适应左手放置

# This line switches the left and right large buttons, and nothing else. For left-handed user.

Option "ButtonMapping" "3 2 1 4 5 6 7 8 9"

重新分配的另一个原因是当您不喜欢“正常”分配时 — 尤其是小按钮。

下面的行将按钮 2 操作更改为浏览器前进。参数二(双大按钮点击)被赋予值 9,表示浏览器前进。下面的行还重新分配了两个小按钮。我们希望它们发出中键点击。(可以单独单击任一按钮。)参数八和九被赋予值 2,表示中键点击

# Three buttons are given new assignments. For right-handed user.

Option "ButtonMapping" "1 9 3 4 5 6 7 2 2"

参数按数字顺序排列。您可能修改的参数是 1、2、3、8 和 9。参数 4、5、6 和 7 应保持不变;它们对应于轨迹球移动。

“双大按钮”组合点击

如前所述,按钮 2 是同时按下两个大按钮。

实验表明,在没有配置指令的情况下,此操作会产生不确定的结果。它似乎发出某些命令,但结果与我对中键点击的期望不一致。结果似乎取决于哪个对象最靠前。无论如何它都是不一致的。您需要启用组合点击

# Emulate3Buttons refers to the act of pressing buttons A and D
# simultaneously to emulate a middle-click or wheel click.
Option "Emulate3Buttons" "true"

这足以启用按钮 2 的默认映射,即滚轮点击。请参阅最小配置

截至 2012 年 5 月,Gnome 3 和中键点击模拟存在问题。Gnome 3 例如在 Ubuntu 12.04 中使用。Gnome 3 还设置了中键点击属性,并默认为“false”。由于 Gnome 在 Xorg 之后进行设置,因此 Gnome 设置会覆盖 xorg 设置,并且禁用模拟。可以使用以下命令更改 Gnome 设置

gsettings set org.gnome.settings-daemon.peripherals.mouse middle-button-enabled true

您只需要执行一次(每个用户),因为 Gnome 会记住会话之间的设置。如果您感兴趣,可以在 launchpad bug 上找到有关此问题的错误报告。

滚动修饰键

Marble Mouse 的一个巨大限制是缺少滚轮或滚轮环。通过分配滚动修饰键来克服此限制:鼠标按钮允许轨迹球滚动。当按住滚动修饰键时,轨迹球会滚动。虽然默认分配了滚动修饰键(请参阅基本功能),但默认情况下未启用滚动修饰键。除了启用滚动修饰键外,您可以将其分配给不同的按钮。

注意:滚动按钮除了滚动功能外,还具有“点击”功能。滚动修饰键是一个“按下并按住”功能,与“点击”功能分开。滚动修饰键的最佳选择是其中一个小按钮。不幸的是,这些按钮的标准“点击”操作很笨拙。我建议您重新分配小按钮的点击操作。

标准滚动设置定义了用于滚动的小按钮 — 这很好,— 但同一按钮的默认“点击”操作是浏览器后退。更好的选择是中键点击中键点击对应于您多年使用滚轮鼠标的期望。

抛开抱怨(这些可以通过重新分配小按钮来解决),您指定一个按钮作为滚动修饰键

Option "EmulateWheel" "true"
Option "EmulateWheelButton" "8"

# Button 8 is the small button on the left side, which works well for right-handed users.
# Button 9 is the small button on the right side, which works well for left-handed users.
# Button 2 cannot be assigned as the scroll modifier; AKA "EmulateWheelButton".

禁用水平滚动

特定的配置行启用了水平滚动。您可以通过注释掉该行来禁用水平滚动。

# A hash mark disables a configuration line.

# Option "XAxisMapping" "6 7"

我同时使用滚动方向,但有些人可能会发现这种限制很有帮助。您不能以类似的方式禁用垂直滚动 — 无论如何您也不想这样做。

右侧或左侧

前面的章节解释了如何修改配置文件以适应左手或右手放置。

  •  有时,您可能希望在左手使用和右手使用之间切换。
  •  当我感觉到重复性劳损的早期迹象时,我会这样做。

要切换到相反的放置方式,我手动编辑配置文件并重启 X 服务器。 文件中的注释提醒我更改哪些行。如果您愿意,可以设计一个脚本来使切换更自动化。

  •  对于 Arch Linux,我更喜欢运行 Openbox 窗口管理器的轻量级或不存在的桌面环境。

其他桌面环境可能具有简化(或复杂化,取决于您如何看待)在左右之间切换的小部件。例如,使用 Ubuntu 10.10,您只需在鼠标控制面板中标记一个框即可实现按钮切换。(但是,您必须更改配置文件才能获得正确的滚动修饰键分配。此外,Ubuntu 会忽略配置文件中的大按钮分配;控制面板使它们变得不必要。)

系统范围或每用户

注意:章节正在修订中。请跳转到示例配置

如果您希望配置是系统范围的,则可以将此行添加到 InputDevice-Section。

Option "ButtonMapping" "1 8 3 2 9"

对于每用户配置,您需要将其放在 ~/.xinitrc 中。

xinput set-button-map "Logitech USB Trackball" 1 8 3 4 5 6 7 2 9 10 11 12 13

Xorg 输入热插拔

注意:章节正在修订中。请跳转到示例配置

两个说明帮助您配置带有按钮的轨迹球,用于点击、中键点击、右键点击和滚动。第一个说明使用 Xorg 输入热插拔;第二个说明不使用。编辑它们以适合您的偏好。

将此条目添加到您的 /etc/X11/xorg.conf

Section "InputClass"
    Identifier   "Logitech Trackball"
    MatchProduct "Trackball"
    Option       "ButtonMapping"      "1 8 3 4 5 6 7 2 9"
    Option       "EmulateWheel"       "True"
    Option       "EmulateWheelButton" "9"
    Option       "XAxisMapping"       "6 7"
EndSection

要了解有关所用参数的更多信息,您应该阅读 evdev(4) § 配置详情

不使用 Xorg 热插拔

注意:章节正在修订中。请跳转到示例配置

/etc/X11/xorg.conf 中的鼠标设备条目应如下所示

Section "InputDevice"
    Identifier "Mouse0"
    Driver     "mouse"
    Option     "CorePointer"
    Option     "Device"             "/dev/input/mice"
    Option     "Protocol"           "ExplorerPS/2"
    Option     "Buttons"            "9"
    Option     "ZAxisMapping"       "4 5"
    Option     "XAxisMapping"       "6 7"
    Option     "EmulateWheelButton" "9"
    Option     "EmulateWheel"       "true"
EndSection

"Protocol""Auto" 选项也适用。当然,您可以使用您喜欢的名称作为 Identifier,只要它与您在 Section "ServerLayout" 中用作 InputDevice 的名称相同。

GNOME 3 和 Wayland

当运行 Wayland 时,上述配置文件不起作用。但是,GNOME 3 为启用鼠标滚轮模拟和调整鼠标光标的加速度行为提供了一组有限的配置选项。

这些设置也可通过 dconf 在 /org/gnome/desktop/peripherals/trackball/ 下获得

中键点击模拟

要启用左右按钮的组合来模拟中键点击,请输入

gsettings set org.gnome.desktop.peripherals.trackball middle-button-emulation true

鼠标滚轮模拟

GNOME 提供了分配滚动修饰键按钮的选项。为此,请输入

gsettings set org.gnome.desktop.peripherals.trackball scroll-wheel-emulation-button <button_id>

,其中 <button_id> 是应充当修饰键的鼠标按钮的 ID(请参阅基本功能)。要停用鼠标滚轮模拟,请将其设置为 0。

加速度曲线

可以将轨迹球配置为使用“平坦”或“自适应”加速度曲线,或者仅使用其“默认”曲线。为此,请设置

gsettings set org.gnome.desktop.peripherals.trackball accel-profile <profile>

为所需的值。

Sway 和 Wayland

当运行 Wayland 时,上述配置文件不起作用。Sway 为启用鼠标滚轮模拟和调整鼠标光标的加速度行为提供了一组有限的配置选项。在您的 sway 配置文件中,添加以下部分以在使用 Marble 时按下左侧小按钮时启用滚动

input "1133:50184:Logitech_USB_Trackball" {
    scroll_method on_button_down
}

Hyprland

Hyprland 还支持一组有限的滚轮模拟选项。将以下块添加到您的配置中

hyprland.conf
device {
    name = logitech-usb-trackball
    scroll_method = on_button_down
}
注意:检查以确保您的设备具有与上面示例中相同的名称,使用 hyprctl devices

您还可以根据Hyprland 输入文档配置 on_button_upedge

同时单击鼠标左键和鼠标右键时的中键点击模拟似乎无需额外配置即可工作。

Plasma 和 Wayland

当在 Wayland 中运行 Plasma 桌面会话时,您可以使用 qdbus 配置滚动,您只需找到正确的事件编号,您可以从 /dev 中确定,例如

event="$(basename $(readlink /dev/input/by-id/usb-Logitech_USB_Trackball-event-mouse))"
qdbus org.kde.KWin /org/kde/KWin/InputDevice/$event org.kde.KWin.InputDevice.scrollOnButtonDown true

默认情况下,使用左侧小按钮。如果您想使用右侧小按钮,请设置

qdbus org.kde.KWin /org/kde/KWin/InputDevice/$event org.kde.KWin.InputDevice.scrollButton 276

对于其他按钮,请按照下表操作

按钮 Kwin 按钮代码 功能(默认)
左侧大按钮 272 普通点击
右侧大按钮 273 右键点击
左侧小按钮 275 浏览器前进
右侧小按钮 276 浏览器后退

示例配置

示例配置修改并扩展了 Marble Mouse 的基本功能

在此示例中,可以单击两个小按钮中的任何一个来发送滚轮点击。滚轮点击在此处与“中键点击”含义相同。此外,一个小按钮与轨迹球结合使用可提供滚动。请注意,虽然两个小按钮都能够滚轮点击,但只有一个小按钮具有滚动功能。

最后,同时单击两个大按钮会发送浏览器后退事件。没有按钮可以发送浏览器前进

ID 硬件操作 结果(此配置) 新分配
1 左侧大按钮 普通点击 1
2 双大按钮 浏览器后退 8
3 右侧大按钮 右键点击 3
8 左侧小按钮 † 滚轮点击 2
9 右侧小按钮 ‡ 滚轮点击 2
注意
  •  同时按下两个大按钮会导致浏览器后退
  •  单击任一小按钮都会导致中键点击
  •  † 此小按钮在按住时允许轨迹球滚动。它是滚动修饰键。
  •  ‡ 此按钮也可以映射为滚动功能。此按钮更适合左侧放置,因为它位于左手拇指附近。据我所知,只能将一个按钮分配为滚动修饰键。

配置文件

以下行附加到 /etc/X11/xorg.conf.d/10-evdev.conf

注意:其他 Linux 发行版的用户可能会在其他位置找到配置文件。Ubuntu 使用 /usr/share/X11/xorg.conf.d/10-evdev.conf

注意: 如下所述的滚动在 2018 年 3 月的 Cinnamon 上不起作用 - 但稍后给出的 libinput 配置有效。

此示例设置为右手放置,并禁用水平滚动。

#       - - - Logitech Marble Mouse Settings - - -
#
#       The Logitech Marble Mouse buttons are mapped [A-D] from left to right: 
#       A (large); B (small) |  C (small); D (large). 
#
#       Preferred options for right-handed usage:
#       A = normal click [1]  
#       B = middle-click [2] 
#       C = middle-click [2] 
#       D = right-click [3]
#       Hold button B while rolling trackball to emulate wheel-scrolling. 
#
#       Preferred options for left-handed usage:
#       A = right-click [3]  
#       B = middle-click [2] 
#       C = middle-click [2]
#       D = normal click [1]
#       Hold button C while rolling trackball to emulate wheel-scrolling.
#       Pressing both large buttons simultaneously (b) produces a "back" action.

Section "InputClass"
        Identifier  "Marble Mouse"
        MatchProduct "Logitech USB Trackball"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"

#       Physical button #s:     A b D - - - - B C    
#       Option "ButtonMapping" "1 8 3 4 5 6 7 2 2"   right-hand placement
#       Option "ButtonMapping" "3 8 1 4 5 6 7 2 2"   left-hand placement
#       b = A & D 
        Option "ButtonMapping" "1 8 3 4 5 6 7 2 2"

#       EmulateWheel: Use Marble Mouse trackball as mouse wheel 
#       Factory Default: 8; Use 9 for right side small button
        Option "EmulateWheel" "true"
        Option "EmulateWheelButton" "8"

#       EmulateWheelInertia: How far (in pixels) the pointer must move to
#       generate button press/release events in wheel emulation mode.
#       Factory Default: 50
        Option "EmulateWheelInertia" "10"

#       Axis Mapping: Enable vertical [ZAxis] and horizontal [XAxis] scrolling
        Option "ZAxisMapping" "4 5"
#       Option "XAxisMapping" "6 7"

#       Emulate3Buttons: Required to interpret simultaneous press of two large
#       buttons, A & D, as a seperate command, b.
#       Factory Default: true
        Option "Emulate3Buttons" "true"
EndSection

重启 X

对 xorg 配置文件所做的更改在重启 X 会话后才会生效。要重启 X 会话,只需从您的窗口管理器注销并重新登录即可。

最小配置

使用 evdev

注意: 如下所述的滚动在 2018 年 3 月的 Cinnamon 上不起作用 - 但稍后给出的 libinput 配置有效。

有时,从绝对最小值开始并在此基础上构建可能很有用。这是 The Arch Way 的一个方面。本着这种精神,我决定看看我可以使用多少行来创建可用的 Marble Mouse 配置。

您可以省略所有配置行,Marble Mouse 仍然可用于基本指向和点击。但是,它将无法滚动。“双大按钮”同时点击会产生不确定的结果 — 实验表明了这一点。

如果您对默认按钮设置感到满意,并且只希望启用滚动和“双大按钮”点击,则需要以下行。以下行附加到 /etc/X11/xorg.conf.d/10-evdev.conf

Section "InputClass"
        Identifier  "Marble Mouse"
        MatchProduct "Logitech USB Trackball"
        Option "EmulateWheel" "true"
        Option "EmulateWheelButton" "8"
        Option "XAxisMapping" "6 7"
        Option "Emulate3Buttons" "true"
EndSection

其他调整

控制台 (gpm)

有关详细信息,请参阅 控制台鼠标支持。在控制台中,您可以将类型选项设置为 imps2 来使用 gpm。编辑 /etc/conf.d/gpm 如下

GPM_ARGS="-m /dev/input/mice -t imps2"

这使您可以使用左侧大按钮选择文本,使用右侧按钮扩展选择。左侧小按钮充当鼠标中键;它粘贴选择内容。

Firefox 浏览器

旧版本的 Firefox 将水平滚动硬件映射为执行浏览器后退浏览器前进导航。

这使得使用轨迹球进行垂直滚动几乎不可能。

为了解决这个问题

  • 在地址栏中输入 about:config
  • 找到名为 mousewheel.horizscroll.withnokey.action 的内部变量。将其值设置为 0
  • mousewheel.horizscroll.withnokey.numlines 设置为 1 也可能很有用。

参见