目前(6.3.1) KDE Plasma 桌面自带的触控板手势只有 4 指上滑下滑,这肯定是不够用的。可以通过 libinput-gestures 来实现自定义笔记本触控板手势。

libinput-gestures

安装

arch 用户直接通过 AUR 安装 libinput-gestures from AUR

paru -S libinput-gestures

其他发行版用户手动安装:

git clone https://github.com/bulletmark/libinput-gestures.git
cd libinput-gestures
sudo ./libinput-gestures-setup install

Debian and Ubuntu users may also need to install libinput-tools if that package exists in your release:

sudo apt-get install libinput-tools

启动

  1. 加入 input 用户组:
sudo gpasswd -a $USER input
newgrp input # 立即生效
  1. 添加自启动,并现在启动:
libinput-gestures-setup autostart start

ydotool

libinput-gestures 文档建议使用的键盘模拟器是 xdotool ,但是它只能用在 xorg 或者 xwayland 的 app 上,而最新的 KDE 采用 wayland,因此我们用 ydotool 做替代。

安装并启动

# Arch:
sudo pacman -S ydotool
# Debian based systems:
sudo apt install ydotool

添加开机自启动并现在启动:

systemctl --user enable --now ydotool.service

配置

创建自定义配置:

cp /etc/libinput-gestures.conf ~/.config/ && kate ~/.config/libinput-gestures.conf

libinput-gestures 配置解释

这里仅作快速上手解释,更详细请参考配置文件中的注释。 配置格式:

gesture <action> [finger_count] <command>

libinput-gestures 支持的 action 有:

  • swipe up
  • swipe down
  • swipe left
  • swipe right
  • swipe left_up
  • swipe left_down
  • swipe right_up
  • swipe right_down
  • pinch in
  • pinch out
  • pinch clockwise
  • pinch anticlockwise
  • hold on
  • hold on N (按压 N 秒)

finger_count 即同时运动的手指数,例如,三指上滑写为:gesture swipe up 3 command 即执行的命令,可以是任何命令,包括运行脚本,因此可操作性很强。下面就是通过执行 ydotool 命令来实现的快捷键触发。

ydotool

ydotool 支持键盘和鼠标模拟,详细参考:https://github.com/ReimuNotMoe/ydotool#usage

值得注意的是,ydotool 的 key 指令要用 keycodes,可以在这个文件中找到 keycodes:/usr/include/linux/input-event-codes.hkeycodes:1 表示按住对应的键,keycodes:0 表示释放对应的键。

例如,要用 ydotool 模拟 ctrl + F12,需要依次按住 ctrl,按住 F12,再释放两个按键。ctrl(左) 的 keycodes 为 29,F12 的 keycodes 为 88,则命令写作:ydotool key 29:1 88:1 88:0 29:0

参考配置

于是,我们便可以自定义触控板的手势,来执行一些快捷键了。下面给出我自己用的简单配置:

gesture swipe down 3 ydotool key 29:1 88:1 88:0 29:0     # 三指下滑回到桌面
gesture swipe up 3 ydotool key 29:1 68:1 68:0 29:0       # 三指上滑查看窗口
gesture swipe right 4  ydotool key 56:1 15:1 15:0 56:0   # 任务窗口切换
gesture swipe left 4   ydotool key 56:1 15:1 15:0 56:0
gesture pinch out ydotool key 29:1 13:1 13:0 29:0        # 捏合放大(Ctrl + =)
gesture pinch in ydotool key 29:1 12:1 12:0 29:0         # 捏合缩小(Ctrl + -)

配置完成后,需要重启 libinput-gestures 以应用:

libinput-gestures-setup stop desktop autostart start