在 lubuntu (openbox) 中切换触摸板的键绑定

在 lubuntu (openbox) 中切换触摸板的键绑定

我正在使用 lubuntu。我想添加一个快捷方式来切换(打开和关闭)我的触摸板。

我知道我需要编辑 ~/.config/openbox 中的 xml 文件(在我的情况下是 lubuntu-rc.xml)如这里所述这里

我希望它在按下 Fn 和 F5 时触发它(在我的戴尔电脑上有一个触摸板图标,所以我假设它也会触发 x86 键绑定,不知道这是否重要)

在我的计算机上

 synclient TouchPadOff=1

关闭触摸板,然后

  synclient TouchPadOff=0

再次打开它。

命令

synclient

没有任何选项,返回此列表

Parameter settings:
    LeftEdge = 300
    RightEdge = 1700
    TopEdge = 210
    BottomEdge = 1190
    FingerLow = 12
    FingerHigh = 15
    MaxTapTime = 180
    MaxTapMove = 107
    MaxDoubleTapTime = 180
    SingleTapTimeout = 180
    ClickTime = 100
    EmulateMidButtonTime = 75
    EmulateTwoFingerMinZ = 141
    EmulateTwoFingerMinW = 7
    VertScrollDelta = 48
    HorizScrollDelta = 48
    VertEdgeScroll = 1
    HorizEdgeScroll = 0
    CornerCoasting = 0
    VertTwoFingerScroll = 1
    HorizTwoFingerScroll = 0
    MinSpeed = 1
    MaxSpeed = 1.75
    AccelFactor = 0.0819336
    TouchpadOff = 0
    LockedDrags = 0
    LockedDragTimeout = 5000
    RTCornerButton = 2
    RBCornerButton = 3
    LTCornerButton = 0
    LBCornerButton = 0
    TapButton1 = 1
    TapButton2 = 3
    TapButton3 = 0
    ClickFinger1 = 1
    ClickFinger2 = 1
    ClickFinger3 = 0
    CircularScrolling = 0
    CircScrollDelta = 0.1
    CircScrollTrigger = 0
    CircularPad = 0
    PalmDetect = 0
    PalmMinWidth = 10
    PalmMinZ = 100
    CoastingSpeed = 20
    CoastingFriction = 50
    PressureMotionMinZ = 15
    PressureMotionMaxZ = 80
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1
    ResolutionDetect = 1
    GrabEventDevice = 1
    TapAndDragGesture = 1
    AreaLeftEdge = 0
    AreaRightEdge = 0
    AreaTopEdge = 0
    AreaBottomEdge = 0
    HorizHysteresis = 12
    VertHysteresis = 12
    ClickPad = 0

如您所见,有行“TouchpadOff = 0”。

所以我基本上是想找一个知道如何使用 grep 和正则表达式的人来告诉我如何编写一个 shell 脚本,读取 snyclient 的输出并相应地执行“synclient TochPadOff=0”或“synclient TochPadOff=1”。

如果发现执行非常类似操作的脚本,但我在 grep 部分上遇到了困难。

如果发现通用切换脚本,但我认为 grapping 信息更干净。

我也已经知道如何将 shellscript 绑定到键盘快捷键从那个例子中。

非常感谢您的帮助。

答案1

这对我有用:

  #!/bin/sh
  TOGGLE=$HOME/.toggle

  if [ ! -e $TOGGLE ]; then
    touch $TOGGLE
    synclient TouchPadOff=1 &
  else
    rm $TOGGLE
    synclient TouchPadOff=0 &
  fi

exit 0

似乎不需要grep。另外,我不太确定 Openbox 是否喜欢Fn任何 rc.xml,但请参阅Nivatius 的回答如何使用涉及 的按键Fn。我只使用过SuperControlAlt和。例如,我Shift可以将该脚本绑定到Control++ 。ShiftF5

<keybind key="C-S-F5">        # Toggle touchpad
  <action name="Execute"><command>/home/dkb/bin/toggle-touchpad</command></action>
</keybind>

答案2

我选择了这个解决方案:

脚本

# This shell script is PUBLIC DOMAIN. You may do whatever you want with it.

TOGGLE=$HOME/.touchpadtoggle

if [ ! -e $TOGGLE ]; then
    touch $TOGGLE
    synclient TouchpadOff=1
else
    rm $TOGGLE
    synclient TouchpadOff=0
fi

配置文件

<!-- toggle touchpad with fn key fn+F5 -->
    <keybind key="XF86TouchpadToggle">
     <action name="Execute">
          <command>~/scripts/touchpadtoggle.sh</command>
         </action>
    </keybind>

当然,命令中的路径需要指向你的脚本

我使用 xev 找出了 fn+F5 的 XF 代码:

运行 xev,按 Fn 键和 F5,然后关闭弹出窗口,在长输出中向上滚动并查找键码。

答案3

这是我在 ~/.config/openbox/lubuntu-rc.xml 中放置的内容

<keybind key='XF86TouchpadToggle'>
    <action name='Execute'>
        <command>bash -c "synclient TouchpadOff=$(expr \( $(synclient | grep TouchpadOff | cut -d = -f 2) + 1 \) % 2)"</command>
    </action>
</keybind>

注释
synclient(第二个):列出实际参数
grep:选择指向 Touchpad 的行
cut -d = -f 2:仅获取“=”之后的部分
expr \( ... + 1 \) %2:增加 1 并获取除以 2 的余数(即切换 0/1)
synclient TouchpadOff=:将 TouchpadOff 设置为上述结果
bash -c "...":确保以上所有内容都在 bash shell 中运行。

这样我就不需要单独的 shell 脚本了。但是,如果您愿意,您可以轻松地将所有内容放入脚本中。

相关内容