如何使用 i3 在 Arch Linux 中通过按键切换命令

How to toggle a command with a keypress in Arch Linux using i3

我发现笔记本电脑上的鼠标垫很烦人,因为我经常在打字时用手臂刷它,所以我想我可以切换它以将其关闭并在我想使用鼠标时再次打开。出于某种原因,synaptics 没有拿起我的鼠标垫,所以我使用 xinput disable 11,其中 11 是我的鼠标垫的 ID。我正在尝试在 i3 配置中使用 bindsym 来使 "m" 切换鼠标垫。我已经制作了一个 sh 脚本来禁用鼠标垫,但是当我再次按下 "m" 时它似乎没有重新打开。我想我会创建一个系统变量来确定鼠标垫是否打开,但 sh 脚本似乎没有正确看到它。这是我目前在 /bin:

中称为 "trackpad" 的脚本
#!/bin/bash
if [[  -eq 1 ]]
then
    xinput enable 11 && export TRACKPAD=0
else
    xinput disable 11 && export TRACKPAD=1
fi

然后在我的 i3 配置文件中有:

bindsym $mod+m exec trackpad $TRACKPAD

我不确定这是否是最好的方法,所以任何替代建议都会很好。否则,我该如何解决?我是 Linux.

的新手

xinput 提供参数 list-props 用于列出设备的所有属性。至少在我的触摸板上,执行 xinput enablexinput disable 会切换 属性 Device Enabled (0/1)。 Greping 此 属性 的状态使您能够测试设备当前是否已启用。

使用此方法解决您的问题的一种快速而简单的方法可能是以下代码段:

#!/bin/bash
if xinput list-props 11 | grep -qE "Device Enabled.*1$"
then 
    xinput disable 11
else 
    xinput enable 11
fi

或作为简单的一行:

#!/bin/bash
xinput list-props 11 | grep -qE "Device Enabled.*1$" && xinput disable 11 || xinput enable 11

如您所见,这些脚本不需要传递参数。简单执行切换设备状态。