我正在使用 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。我只使用过Super、Control、Alt和。例如,我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 脚本了。但是,如果您愿意,您可以轻松地将所有内容放入脚本中。