blog/source/_posts/2024/08/logiops.md
2024-11-16 11:34:10 +08:00

6.8 KiB
Raw Blame History

title tags categories index_img banner_img permalink date
在 Linux 中驱动罗技鼠标快捷键
学习笔记
linux
罗技
鼠标
Linux
/img/2024/logiops/anjian.webp /img/2024/logiops/anjian.webp /articles/2024/logiops/index.html 2024-08-18 19:30:56

最近由于受够了 Windows 的种种陈年老 bug ,开始润去 Linux 但是bug贼多非常好用的 Logi Options+ 并没有 Linux 版本,但幸运的是,有人开发出了一个第三方的驱动: logiops
我使用的鼠标为 M720 ,我觉得还挺好用的,不过我更推荐 Master 系列,因为 M720 的质量不太好,我已经换了两个了(Master 系列的鼠标适合手大的人,但是 Master 鼠标左侧的两个快捷键感觉不那么好用,太小了,容易误触或者按不下去)

准备工作

  1. 项目需要c++ 20 编译器,需要安装 cmakelibevdevlibudevlibconfig等。
# Debian/Ubuntu
sudo apt install build-essential cmake pkg-config libevdev-dev libudev-dev libconfig++-dev libglib2.0-dev

# Arch Linux
sudo pacman -S base-devel cmake libevdev libconfig systemd-libs glib2

# Fedora
sudo dnf install cmake libevdev-devel systemd-devel libconfig-devel gcc-c++ glib2-devel

# Gentoo Linux
sudo emerge dev-libs/libconfig dev-libs/libevdev dev-libs/glib dev-util/cmake virtual/libudev

# Solus
sudo eopkg install cmake libevdev-devel libconfig-devel libgudev-devel glib2-devel

# openSUSE
sudo zypper install cmake libevdev-devel systemd-devel libconfig-devel gcc-c++ libconfig++-devel libudev-devel glib2-devel
  1. 克隆仓库
git clone https://github.com/PixlOne/logiops.git

编译安装

  1. 构建
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
  1. 安装
sudo make install
  1. 配置守护进程
sudo systemctl enable --now logid
  1. tip: 出现问题时重启,这可以解决大部分问题
sudo service logid restart

配置文件

配置文件位于/etc/logid.cfg,自己创建一个vim /etc/logid.cfg
此文件的语法解释参见: 语法解释
配置中每个鼠标按键通过一个cid表示鼠标按键的cid值参见: CIDs
或是通过debug模式查看。 debug模式:

# 先停止服务
sudo service logid stop
# 然后
sudo logid -v

此时以应该能看见下列输出,如果看不见,可以尝试重新连接鼠标到电脑。这样就能知道你鼠标上有什么按键了。

[DEBUG] Ignoring virtual node on /dev/hidraw4
[DEBUG] Ignoring virtual node on /dev/hidraw3
[INFO] Detected receiver at /dev/hidraw0
[DEBUG] Unsupported device /dev/hidraw1 ignored
[DEBUG] Unsupported device /dev/hidraw2 ignored
[DEBUG] Unsupported device /dev/hidraw5 ignored
[INFO] Device found: M720 Triathlon Multi-Device Mouse on /dev/hidraw0:2
[DEBUG] /dev/hidraw0:2 remappable buttons:
[DEBUG] CID  | reprog? | fn key? | mouse key? | gesture support?
[DEBUG] 0x50 |         |         | YES        |
[DEBUG] 0x51 |         |         | YES        |
[DEBUG] 0x52 | YES     |         | YES        | YES
[DEBUG] 0x53 | YES     |         | YES        | YES
[DEBUG] 0x56 | YES     |         | YES        | YES
[DEBUG] 0x5b | YES     |         | YES        | YES
[DEBUG] 0x5d | YES     |         | YES        | YES
[DEBUG] 0xd0 | YES     |         | YES        | YES
[DEBUG] 0xd7 | YES     |         |            | YES

下面是我的配置文件,我用了两三年了,非常好用,如果你用的也是 M720 ,可以参考一下
侧键一(前进按钮/Forward Button/0x56) | 侧键二(返回按钮/Back Button/0x53) | 手势按键(Switch Apps/0xd0) | 滚轮向左(Left Scroll/0x5b) | 滚轮向右(Right Scroll/0x5d)
按键示意图(有点脏,请见谅) 按键的定义参见: linux/input-event-codes.h

devices: (
{
    name: "M720 Triathlon Multi-Device Mouse";
    buttons: (
        {
            cid: 0x56;
            action =
            {
                type: "Keypress";
                keys: ["KEY_LEFTCTRL","KEY_C"];
            };
        },
        {
            cid: 0x53;
            action =
            {
                type: "Keypress";
                keys: ["KEY_LEFTCTRL","KEY_V"];
            };
        },
        {
            cid: 0x5b;
            action =
            {
                type: "Keypress";
                keys:["KEY_LEFTCTRL","KEY_LEFTALT","KEY_LEFT"];
            };
        },
        {
            cid: 0x5d;
            action =
            {
                type: "Keypress";
                keys:["KEY_LEFTCTRL","KEY_LEFTALT","KEY_RIGHT"];
            };
        },
        {
            cid: 0xd0;
            action =
            {
                type: "Gestures";
                gestures:(
                {
                    direction:"Up";
                    mode="OnInterval";
                    interval=75;
                    action=
                    {
                        type:"Keypress";
                        keys:["KEY_VOLUMEUP"];
                    }
                },
                {
                    direction:"Down";
                    mode="OnInterval";
                    interval=75;
                    action=
                    {
                        type:"Keypress";
                        keys:["KEY_VOLUMEDOWN"];
                    }
                },
                {
                    direction:"None";
                    mode="OnRelease";
                    action=
                    {
                        type:"Keypress";
                        keys:["KEY_LEFTCTRL","KEY_X"];
                    }
                }
                )
            };
        }
    );
    hiresscroll:
    {
        hires: true;
        invert: false;
        target: false;
    };
}
);

我的配置文件解释: 按侧键一复制,侧键而粘贴,手势按键剪切,手势按键向上音量加,手势按键向下音量减
注意: 如果你使用的屏幕DPI非常高不是分辨率是DPI。启用了高分辨率滚轮会导致滚轮速度非常块可以关闭调整回正常的速度
(Windows和Linux上统一的复制和粘贴的快捷键是Ctrl+Insert和Shift+Insert这个快捷键不区分图形软件和命令行软件)
tips:

  • insert(KEY_INSERT)
  • 左shift(KEY_LEFTSHIFT)
  • 左ctrl(KEY_LEFTCTRL)
  • 左alt(KEY_LEFTALT)
  • 左方向键(KEY_LEFT)
  • 右方向键(KEY_RIGHT)

参考资料

logiops在 Linux下设置罗技鼠标的按键和手势
logiops
linux/input-event-codes.h