切换笔记本电脑触控板的脚本

切换笔记本电脑触控板的脚本

我有一个脚本可以禁用我的 thinkpad 上的触摸板:

#!/usr/bin/env bash

xinput --disable 12

我如何调整脚本,以便它不只是禁用,而是检查触摸板的当前状态并切换启用/禁用?

答案1

奇怪的是xinput不能过滤它的输出本身。但我们有grep

xinput --list-props 12 | grep -q 'Device Enabled.*1$' && echo enabled || echo disabled

答案2

切换对于触摸板,您可以从以下脚本运行 Perl 单行代码:

perl -e '$dev="SynPS/2 Synaptics TouchPad"; `xinput list-props $dev` =~ /^.*Device Enabled.+?(\d)$/m ;  $1 ? `xinput --disable $dev` : `xinput --enable $dev`;

简短的扩展:

  • 反引号执行系统/linux命令
  • 在匹配显示“Device Enabled”的行时,正则表达式会查找该行的最后一个数字字符(0 ... 表示关闭,1 ... 表示打开)
  • 正则表达式中的 /m 表示:使用命令输出中的每一行作为单独的元素(否则正则表达式的 ^ 和 $ 将表示字符串的开头/结尾,而不是行
  • 括号将匹配的数字保存到变量 $1 中
  • 剩下的就是三元运算符:“if true”? "do this" : "else to this",意思是如果 $1 等于 0 或 1 -> 禁用或启用

(要在“i3”窗口管理器中使用它:您必须编写:

bindsym XF86TouchpadToggle exec --no-startup-id perl -e '{`xinput list-props 10` =~ /^.*Device Enabled.+?(\d)$/m and  {$1 ? `xinput --disable 10` : `xinput --enable 10`}} '

相关内容