Logitech MX Master
Logitech MX Master 是一个系列的电脑鼠标。
用法
如果您使用购买时附带的 Unifying 接收器 USB 适配器,鼠标应该无需特殊配置即可工作。将适配器插入您的电脑。确保鼠标已设置为通道 1,方法是按下鼠标底部的 switch
按钮,然后按住该按钮直到它开始快速闪烁。几秒钟后,它应该变为常亮,现在就已连接。如果您想连接到未连接的接收器,请参阅 Logitech Unifying Receiver
要使用 蓝牙,请更改鼠标底部的通道,然后单击 connect
按钮。现在,使用您选择的蓝牙管理器搜索鼠标并配对。将来,当您的蓝牙处于活动状态时,切换到该通道后,它应该立即连接。如果您在扫描时遇到鼠标未显示的问题,请参阅 Bluetooth#Device does not show up in scan。
该鼠标有 3 个主要版本,最新的迭代有 5 个修订版,但功能相同
- MX Master,
- MX Master 2s,
- MX Master 3
MX Master 3 变体 名称 发布 支持? 随附? MX Master 3 2019 Unifying Unifying + USB A-C MX Master 3 for Mac 2020 Unifying USB C-C MX Master 3 for business 2021 Bolt Bolt + USB A-C MX Master 3S 2022 MX Master 3S for Mac Bolt USB C-C
额外按钮的映射
安装 solaar 或 logiopsAUR(logiops-gitAUR) 以自定义鼠标设置
- 易于编程的按钮。
- DPI 选择。
- 智能滚轮(超高速和逐击滚轮模式)。
- 高分辨率滚动。
- 手势。
虽然 logiops 在 v0.3.0 中增加了对新的 Bolt 连接器的支持,但偶尔会出现问题。有关基于 Bolt 的设备的列表,请参阅 Wikipedia:List of Logitech products。市场上所有基于 Bolt 的设备也都具有蓝牙连接功能。因此,使用蓝牙代替可以作为一种解决方法。
solaar 完全支持基于 Bolt 的连接,包括设备配对。
仅使用 #Xbindkeys 并调整桌面快捷方式也可以实现一些自定义,但有一些注意事项(请查看下面的注释)。
Logiops
可以通过运行以下命令,作为应用程序通过命令行执行
# logid
或者作为 logid.service
启动。
配置位于 /etc/logid.cfg
中。但该软件包不带任何配置。需要创建此文件,指定要使用的设备名称。要从 cli 启动获取该名称
# logid -v
将打印检测到的设备的名称。
然后您可以创建配置文件。
示例
有关更多详细信息,请参阅 配置格式文档,包括 CID(按钮代码)列表 和 键代码列表。
这个最小的配置文件只是使每个按钮都像普通的鼠标按钮一样工作,忽略手势。它将允许额外按钮正常使用,例如在游戏和 Xbindkeys 中(见下文)。
/etc/logid.cfg
devices: ({ name: "Wireless Mouse MX Master 3"; // A lower threshold number makes the wheel switch to free-spin mode // quicker when scrolling fast. smartshift: { on: true; threshold: 20; }; hiresscroll: { hires: true; invert: false; target: false; }; // Higher numbers make the mouse more sensitive (cursor moves faster), // 4000 max for MX Master 3. dpi: 1500; buttons: ( // Make thumb button 10. { cid: 0x53; action = { type: "Keypress"; keys: ["KEY_FORWARD"]; }; }, // Make top button 11. { cid: 0x56; action = { type: "Keypress"; keys: ["KEY_BACK"]; }; } ); });
对于功能更全面的配置,请参阅 logid.example.cfg 或 这个
/etc/logid.cfg
devices: ( { name: "Wireless Mouse MX Master 3"; smartshift: { on: true; threshold: 30; }; hiresscroll: { hires: true; invert: false; target: false; }; thumbwheel: { divert: true; invert: false; left: { mode: "OnInterval"; interval: 2; action: { type: "Keypress"; keys: ["KEY_VOLUMEDOWN"]; }; }; right: { mode: "OnInterval"; interval: 2; action: { type: "Keypress"; keys: ["KEY_VOLUMEUP"]; }; }; tap: { type: "Keypress"; keys: ["KEY_MUTE"]; }; }; dpi: 1000; buttons: ( { cid: 0xc3; action = { type: "Gestures"; gestures: ( { direction: "Up"; mode: "OnRelease"; action = { type: "Keypress"; keys: ["KEY_LEFTCTRL", "KEY_F10"]; }; }, { direction: "Down"; mode: "OnRelease"; action = { type: "Keypress"; keys: ["KEY_LEFTCTRL", "KEY_F7"]; }; }, # { # direction: "Left"; # mode: "OnRelease"; # action = # { # type: "CycleDPI"; # dpis: [50, 500, 1000, 1500, 2000, 3000, 4000]; # }; # }, { direction: "Left"; mode: "OnRelease"; action = { type: "Keypress"; keys: ["KEY_LEFTMETA", "KEY_LEFT"]; }; }, # { # direction: "Right"; # mode: "OnRelease"; # action = # { # type = "ToggleHiresScroll"; # } # }, { direction: "Right"; mode: "OnRelease"; action = { type: "Keypress"; keys: ["KEY_LEFTMETA", "KEY_RIGHT"]; } }, { direction: "None" mode: "NoPress" } ); }; }, { cid: 0xc4; action = { type = "ToggleSmartshift"; }; }, { # Next tab instead of fwd in history, Comment to default behavior cid: 0x53; action = { type : "Keypress"; keys: ["KEY_LEFTCTRL", "KEY_PAGEUP"]; }; }, { # Previous tab instead of back in history, Comment to default behavior cid: 0x56; action = { type : "Keypress"; keys: ["KEY_LEFTCTRL", "KEY_PAGEDOWN"]; }; } ); }, { # Another device to configure name: "Other Logitech USB Receiver"; } );
Xbindkeys
鼠标发送的事件列表
物理操作 | 默认为 | 使用上述最小 logid 配置 配置 |
---|---|---|
左键 | 按钮 1 | 按钮 1 |
按下滚轮 | 按钮 2 | 按钮 2 |
右键 | 按钮 3 | 按钮 3 |
滚轮向上滚动 | 按钮 4 | 按钮 4 |
滚轮向下滚动 | 按钮 5 | 按钮 5 |
水平滚轮向右滚动(向上) | 按钮 6 | 按钮 6 |
水平滚轮向左滚动(向下) | 按钮 7 | 按钮 7 |
侧面底部按钮 | 按钮 8 | 按钮 8 |
侧面顶部按钮 | 按钮 9 | 按钮 9 |
拇指按钮 | Ctrl+Alt+Tab
|
按钮 10 |
按下滚轮下方的 “i” 按钮 | 未被 xbindkeys 检测到 | 按钮 11 |
注释
- 在按下拇指按钮时无法移动鼠标光标,但可以使用任何其他操作(按下按钮和滚动滚轮)。
Ctrl+Alt+Tab
事件仅在释放拇指按钮后发送。使用 logid 重新分配此按钮可以消除此限制。 - 如果您希望获得像 Windows 或 Mac 中拇指按钮的体验。在 KDE 中,转到系统设置 > 快捷方式 > 全局快捷方式 > KWin > 显示所有桌面上的所有窗口。默认设置为
Ctrl+F10
。将此操作设置为Ctrl+Alt+Tab
并应用设置。 - 默认情况下,Linux 中无法检测到滚轮下方的 “I” 按钮,但它可以用于在自由和棘轮模式之间切换滚轮。使用 logid 可以重新分配它以供使用。
- Linux 中无法检测到 Logitech 手势(按下拇指按钮时向上/向下/向左/向右移动鼠标),但它们在软件中由 logid 实现。
垂直滚轮及其附近的两个按钮应该可以立即工作,但是拇指按钮需要一些特殊处理,您可能需要重新映射其余按钮。
要重新映射鼠标的按钮,您可以使用软件包 xbindkeys 和 xautomation。
xbindkeys 将重定向按钮,而 xte(包含在 xautomation 中)将执行自定义按键。为此,请在您的主目录中创建一个名为 .xbindkeysrc
的配置文件。
这是垂直滚轮及其附近两个按钮的示例配置
# thumb wheel up => increase volume and unmute "amixer -D pulse set Master 4000+ unmute" b:6 # thumb wheel down => lower volume "amixer -D pulse set Master 4000-" b:7 # backward button => previous song "xte 'key XF86AudioPrev'" b:8 # forward button => next song "xte 'key XF86AudioNext'" b:9
如果使用 PulseAudio(更多信息 在这里)
# thumb wheel up => increase volume "pactl set-sink-volume @DEFAULT_SINK@ +2%" b:6 # thumb wheel down => lower volume "pactl set-sink-volume @DEFAULT_SINK@ -2%" b:7
如果您希望获得有关音量级别如何变化的视觉反馈,则可以改用以下几行(在 GNOME 和 KDE 中测试过)
# thumb wheel up => increase volume "xte 'key XF86AudioRaiseVolume'" b:6 # thumb wheel down => lower volume "xte 'key XF86AudioLowerVolume'" b:7
现在启动 xbindkeys
,最好将其添加到桌面环境的自动启动列表中。
拇指按钮是特殊的。使用 Logitech 为 Windows 和 Mac 提供的软件,您可以将其映射到最多 5 个操作:通过按下按钮或通过按下按钮并在四个方向之一移动鼠标。截至 2015 年 11 月,尚无法使用 Arch 启用方向功能。
如果您查看按钮触发的按键,您会注意到它发送一系列按键,这会使 xbindkeys 感到困惑。您需要在此处添加一个短暂的睡眠,以便 xbindkeys 仅对发送的第一个按键做出反应,这样我们至少可以将其映射到一个操作。
# thumb button => play/pause music # Credit to gregmuellegger https://bbs.archlinux.org/viewtopic.php?pid=1551271#p1551271 # We need a sleep here since the button triggers a few more key codes. # It also triggers Control+Mod2+Control_L and Alt+Mod2+Alt_L. The sleep # prevents that X receives those keypresses simultaniously. Therefore they # might interfere and trigger unwanted actions. By the sleep we make sure that # the Alt+Left is receive as distinct event. "sleep 0.1 && xte 'key XF86AudioPlay'" m:0xc + c:23
请记住,对 ~/.xbindkeysrc
的所有更改都需要重启 xbindkeys 进程
$ pkill xbindkeys && xbindkeys
电源
电池状态可以按照 Logitech Unifying Receiver 中的描述读取。例如,Solaar (solaar) 有一个系统托盘实用程序。
智能滚轮
智能滚轮是指滚轮根据其旋转速度自动从逐击滚动切换到平滑滚动。
Logiops
任何鼠标按钮都可以分配为在模式之间切换。默认设置是智能滚轮阈值约为 20,顶部按钮(滚轮正下方)用于在始终平滑和智能滚轮(仅在缓慢滚动时发出咔哒声)之间切换。增加阈值数字需要更快地旋转滚轮,然后它才会切换到平滑滚动模式。
要重现默认设置,请在配置文件中使用如上所示的此代码段
/etc/logid.cfg
... smartshift: { on: true; threshold: 20; }; buttons: ( // Make top button (0xc4) switch modes { cid: 0xc4; action = { type = "ToggleSmartshift"; }; }, ...
根据需要更改阈值或使用其他按钮 (cid)。
Solaar
除了 logid 之外,Solaar 也可以用于更改鼠标滚轮模式(超高速和逐击之间)切换的灵敏度,安装 solaar。将出现一个滑块,可以将其设置为 0 到 50 之间的某个值(包括 0 和 50)。0 表示始终处于超高速模式,50 表示始终处于逐击模式。
要更改灵敏度,请将此值更改为 0 到 50 之间的某个值。
故障排除
蓝牙模式下鼠标移动滞后
蓝牙模式下鼠标空闲几秒后卡顿
请参阅 Power management#USB autosuspend 将您的设备列入黑名单。
与 Windows 相比,拇指滚轮水平滚动行为不同(反向)
这是 libinput ([1]) 中添加的已知行为,旨在纠正此鼠标(以及许多其他 Logitech 产品)的垂直/水平滚轮配置不同的怪异行为(怪癖)。但是,如果经常在不同的操作系统上使用此鼠标,并且发现此自动校正行为不方便,则可以专门将其关闭
/etc/libinput/local-overrides.quirks
... [Logitech MX Master 3] MatchVendor=0x46D MatchProduct=0x4082 ModelInvertHorizontalScrolling=0 # MX Master 3 has a different PID on bluetooth [Logitech MX Master 3] MatchVendor=0x46D MatchProduct=0xB023 ModelInvertHorizontalScrolling=0 ...
另请参阅 [2],查看为其他设备修补的怪癖列表。
MX Master 3 缺少滚动事件
当滚轮处于棘轮模式且切换滚动方向(向上滚动两步并立即向下滚动一步)时,可能无法拾取最后一步。这可能意味着在禁用平滑滚动时,firefox 中的滚动不可预测,或者当有人使用滚轮在基于 qt 小部件的应用程序中切换选项卡时。这是因为 MX Master 3 被注册为高分辨率滚动设备,即使在棘轮模式下也会继续发送高分辨率事件 [3][4]。
要过滤掉高分辨率事件,请使用
/etc/libinput/local-overrides.quirks
... [Logitech MX Master 3] MatchVendor=0x46D MatchProduct=0x4082 AttrEventCode=-REL_WHEEL_HI_RES;-REL_HWHEEL_HI_RES; ...
要查找产品 ID(因为它们因制造批次和连接类型而异),请首先找到设备节点
# libinput list-devices | grep "MX Master 3" -A 5 | grep Kernel | awk '{print $2}' /dev/input/event9
然后查询设备节点的 ID
# udevadm info -a /dev/input/event9 | grep id/ ATTRS{id/product}=="4082" ATTRS{id/vendor}=="046d"
将 id/vendor
和 id/product
ID 复制到 MatchVendor
和 MatchProduct
字段中,并如所示在它们前面加上 0x
。