使用 xdotool 和 libinput

您所在的位置:网站首页 挨毬的意思 使用 xdotool 和 libinput

使用 xdotool 和 libinput

2024-06-30 10:54| 来源: 网络整理| 查看: 265

主页 » Posts使用 xdotool 和 libinput-geatures 优化 Linux 上使用触摸板的体验将 Windows™ 上触摸板的使用体验带到 Linux 上来三月 10, 2019 · 4 分钟 · Ethan Shen | 语言:English正體中文ThinkPad X1 Carbon Touchpad

ThinkPad X1 Carbon Touchpad

目录介绍编辑触摸板相关 Xorg 配置文件安装 xdotool使用 libinput-gestures更多可能性介绍#

Windows 的触摸板手势可用性随着 Windows 10 的铺开愈来愈高,不仅手势的样式较前更为多样,而且顺滑度也不容置疑地有了很大的提升。相比之下,优化在桌面乏力的 Linux 在触摸板的体验,就成了生存在 Linux 用户和笔记本用户两者并集的使用者需要操心的问题了。

下文主要围绕 Wayland 自带的 libinput 而不讨论 synaptics 等替代方案。另外,本人对 libinput 的 Archwiki 中文词条 做了一些微小的贡献,可以配合食用。

编辑触摸板相关 Xorg 配置文件#

Linux 的输入设备的配置文件都存储在 /etc/X11/xorg.conf.d 而 30-touchpad.conf 顾名思义为触摸板的配置信息。将其复制到 /usr/share/X11/xorg.conf.d 进行修改。此时可以引用 40-libinput.conf 的基本框架,按照以下配置格式:

1 2 3 4 5 6 7 Section "InputClass" Identifier "touchpad" Driver "libinput" Option "Tapping" "on" Option "NaturalScrolling" "true" Option "ClickMethod" "clickfinger" EndSection`

其中 Option "Tapping" "on" 开启了触摸板的「触摸点按」操作。不用再按下触摸板;

Option "NaturalScrolling" "true" 则还原了更为 Natural 的滚动方向,让你得以梦回 Windows;

Option "ClickMethod" "clickfinger" 就开启「双指点按即右键单击,三指点按即中键单击」的选项。

除此之外 libinput 提供了更多关于「点按」、「滚动」、「触摸板指针加速度」等较为丰富的选项,其它的配置选项可参见 libinput 的 man page。

关于 libinput 的各种点按滚动操作,在其 文档 中有友好形象的图例帮助理解。同时,你也可以在里面看到对于其它如「小红点」、「触摸屏幕」等输入设备的配置与支持,不在本文「触摸板」的讨论范围之内,所以不议。

安装 xdotool#

xdotool 是一个可以模拟键盘鼠标输入的工具。与下文提到的 libinput-gestures 包配合使用,便可以将触摸板手势绑定相应的热键或是鼠标操作,从而达到添加并优化触摸板手势的目的。

ArchWiki 中对于 Xorg 中模拟键鼠输入的 推荐 中,xdotool 被描述为「Very Buggy」,然而简单使用下来,我认为 xdotool 的使用十分简单且没有什么毛病(也许是我只是使用了它对键盘输入处理的部分 😂)以下是 xdotool 的基本操作:

1 2 3 4 xdotool click 1 xdotool key Ctrl+L xdotool mousemove x y xdotool type 'string'

这可以说是非常明了的语法了。值得注意的是,对于几个特殊的按键,xdotool 是这么称呼的:「1」鼠标左键、「2」鼠标中键、「3」鼠标右键,「Left」方向左键、「Right」方向右键、「Super」Windows 徽标键、「plus」加号、「minus」减号。

xdotool 还支持窗口检索、获取窗口焦点等功能,可以实现大部分键鼠自动化的需求。

使用 libinput-gestures#

安装 libinput-gestures 并将当前用户添加到 input 组,将配置文件模板 /etc/libinput-gestures.conf 复制到 ~/.config/ 下进行修改。启动 libinput-gestures-setup 进行初始化。

1 libinput-gestures-setup start

其中 gestures 在 libinput-gestures 的认知中有 swipe 和pinch 两种,分别对应手指在触摸板上滑动和捏合操作。众所周知,这 Ctrl + + 和 Ctrl + - 两个热键基本可以实现大多数软件视图上的放大和缩小,习惯上我们把双指张开作放大操作,双指捏合作缩小操作,所以先添加到 ~/.config/libinput-gestures.conf 中。

1 2 gesture pinch in 2 xdotool key Ctrl+minus gesture pinch out 2 xdotool key Ctrl+plus

关于 pinch,你可以指定 in 和 out 和参与动作的手指数量。同理,对于 swipe,参与动作的手指数量和滑动的四个方向(分为 Left、Right、Up、Down)也可以被指定,以下则是一个左右滑动实现在 Chrome 中切换标签页的例子。

1 2 gesture swipe right 3 xdotool key Ctrl+Tab gesture swipe left 3 xdotool key Ctrl+Alt+Tab

向右三指滑动进入下一个标签页,向左三指滑动进入上一个标签页。虽然没有相应动画反馈,但也用得顺手。

通过阅读 libinput-gestures 相关章节 对于原理的介绍得知,触摸板对于参与动作手指数量相同的 swipe 和 pinch 的区分判断并不是完全准确,所以不要配置出同手指数量的两种不同动作共存,后期体验会比较差,较大概率发生误判。特别是同手指数量滑动但是不同方向的时候,如配置双指左右滑动切换应用,很可能与双指上下滑动,也就是滚动的动作产生冲突。

更多可能性#

当然,libinput-gestures 和 xdotool 并非必须配合使用,也可以使用支持键鼠输入的如 xte、xvkbd,而它们的操作与 xdotool 大体上也是相同的。

以下是 xvkbd 分别实现了 鼠标左键点击 and Ctrl+Tab 的例子。

1 2 xvkbd -no-jump-pointer -xsendevent -text '\m1' xvkbd -no-jump-pointer -xsendevent -text '\Ct'

xte 对组合键的操作是使用 keydown 和 keyup 实现的。以下是 xte 实现了 Ctrl+Tab 的例子。

1 2 3 xte keydown Control_L xte key Tab xte keyup Control_L

同样,你也可以直接给 libinput-gestures 绑定启动一个应用,如四指上滑呼出应用快捷入口。

遇到触摸板指针跳跃闪烁,或者手势严重误判的时候,可以尝试用以下命令重启 libinput-gestures。

1 libinput-gestures-setup restart

感谢阅读 💗

Creative Commons License本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

Linux


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3