在 Fedora 上为 MacBook 实现 macOS 风格的三指拖拽

老雷 创作于 2026-02-22
Fedora MacBook Linux 全文约 3109 字,预计阅读时间为 8 分钟

前言

从 macOS 切换到 Linux 的 MacBook 用户,最想念的功能之一就是三指拖拽——用三根手指轻放在触控板上就能拖动窗口或选中文字,无需按下触控板。这种操作方式一旦习惯了就再也回不去了,就像用惯了 Vim 的人再让他用记事本写代码一样痛苦。

本文介绍如何在 Fedora 上实现这个功能,让 MacBook 在 Linux 下也能拥有近乎原生的触控板体验。

问题分析

为什么直接配置不工作?

libinput 是现代 Linux 发行版的触控板驱动,它支持 clickfinger 模式:

手指数量 clickfinger 模式行为
1 指 左键
2 指 右键
3 指 中键(不是左键!)

问题就在这里:libinput 的 clickfinger 模式不支持将三指映射为左键,所以无法通过简单的配置实现三指拖拽。

libinput 已内置三指拖拽功能

好消息是,libinput 从某个版本开始已经内置了三指拖拽功能(LIBINPUT_CONFIG_3FG_DRAG),只是默认被禁用。我们需要编译 libinput 并启用这个功能。

解决方案

环境信息

步骤 1:安装 X11 会话支持(如果使用 KDE Wayland)

Fedora 43 的 KDE 默认只有 Wayland 会话。X11 配置在 Wayland 下不生效,建议切换到 X11:

sudo dnf install -y plasma-workspace-x11

安装后,在登录界面选择 “Plasma (X11)” 会话。

步骤 2:安装编译依赖

sudo dnf install -y --skip-unavailable \
    git meson gcc gcc-c++ \
    libevdev-devel libwacom-devel mtdev-devel \
    systemd-devel check libudev-devel \
    python3-libevdev python3-pytest gtk4-devel

步骤 3:下载 libinput 源码

mkdir -p ~/libinput-build && cd ~/libinput-build

# 下载当前系统对应版本
wget https://gitlab.freedesktop.org/libinput/libinput/-/archive/1.30.1/libinput-1.30.1.tar.gz
tar xzf libinput-1.30.1.tar.gz
cd libinput-1.30.1

说明:

步骤 4:修改源码启用三指拖拽

编辑 src/evdev-mt-touchpad-gestures.c,找到 tp_3fg_drag_default 函数:

// 修改前
static enum libinput_config_3fg_drag_state
tp_3fg_drag_default(struct tp_dispatch *tp)
{
    return LIBINPUT_CONFIG_3FG_DRAG_DISABLED;
}

// 修改后
static enum libinput_config_3fg_drag_state
tp_3fg_drag_default(struct tp_dispatch *tp)
{
    return LIBINPUT_CONFIG_3FG_DRAG_ENABLED_3FG;
}

可以用 sed 一键修改:

sed -i 's/LIBINPUT_CONFIG_3FG_DRAG_DISABLED/LIBINPUT_CONFIG_3FG_DRAG_ENABLED_3FG/' \
    src/evdev-mt-touchpad-gestures.c

说明:

步骤 5:编译安装

# 配置
meson setup build --prefix=/usr -Ddocumentation=false -Ddebug-gui=false

# 编译
meson compile -C build

# 备份原版本
sudo cp /usr/lib64/libinput.so.10.13.0 /usr/lib64/libinput.so.10.13.0.bak

# 安装
sudo meson install -C build

# 更新动态链接库缓存
sudo ldconfig

说明:

步骤 6:验证安装

/usr/bin/libinput --version
# 输出: 1.30.1

步骤 7:配置 X11 触控板选项(可选)

创建 /etc/X11/xorg.conf.d/30-touchpad.conf

Section "InputClass"
    Identifier "touchpad"
    Driver "libinput"
    MatchIsTouchpad "on"

    Option "Tapping" "on"              # 开启轻触点击
    Option "TappingDrag" "false"       # 禁用单指拖动(避免误触)
    Option "ClickMethod" "clickfinger" # 使用手指数量区分按键
    Option "NaturalScrolling" "on"     # 自然滚动(可选)
EndSection

说明:

步骤 8:重新登录

注销并重新登录 X11 会话,三指拖拽功能即可生效。

验证效果

操作 效果
单指轻触 左键点击
三指轻放并移动 拖拽窗口/选中文字

现在可以试着用三根手指拖动窗口,感受一下久违的 macOS 体验吧。

故障排除

功能不生效

1、确认使用的是 X11 会话而非 Wayland:

echo $XDG_SESSION_TYPE  # 应输出 x11

2、检查 libinput 库是否正确安装:

ls -la /usr/lib64/libinput.so*

恢复原版本

如果出现问题,可以恢复系统原版 libinput:

sudo cp /usr/lib64/libinput.so.10.13.0.bak /usr/lib64/libinput.so.10.13.0
sudo ldconfig

系统更新后失效

Fedora 更新 libinput 包时会覆盖补丁版本。如果三指拖拽失效,需要重新编译。建议保留编译目录以便快速重新安装:

cd ~/libinput-build/libinput-1.30.1
sudo meson install -C build
sudo ldconfig

总结

虽然 Linux 下没有原生支持 macOS 风格的三指拖拽,但 libinput 已经内置了相关代码,只需修改一行代码重新编译即可启用。这个小小的改动能显著提升 MacBook 在 Linux 下的触控板体验。

唯一的缺点是系统更新 libinput 后需要重新安装,不过考虑到这个功能带来的便利,这点麻烦还是值得的。毕竟,能用三指拖拽的日子,才是好日子。

相关链接