web-dev-qa-db-ja.com

lubintu(openbox)でタッチパッドを切り替えるキーバインド

Lubuntuを使用しています。タッチパッドを切り替える(オンとオフを切り替える)ショートカットを追加したい。

〜/ .config/openbox(私の場合はlubuntu-rc.xml)のxmlファイルを編集する必要があることはわかっています ここで説明されているように および here

FnとF5が押されたときにトリガーするようにしたい(私のDellにはタッチパッドアイコンがあるので、それがx86キーバインドもトリガーすると仮定します、それが問題であればdunno)

私のマシンで

 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」という行があります。

私が基本的に求めているのは、srepclientの出力を読み取り、「synclient TochPadOff = 0」または「synclient TochPadOff = 1」を実行するシェルスクリプトの記述方法を教えてくれるgrepと正規表現の操作方法を知っている人です。

これが見つかった場合 非常によく似たスクリプト ですが、grepの部分で苦労しています。

generic toggle script が見つかった場合、情報をgrepする方がきれいだと思います。

私はすでに知っています シェルスクリプトをキーボードショートカットにバインドする方法 その例から。

大いに感謝します。

3
Nivatius

これは私のために働く:

  #!/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 'answer を参照してください。 Fn。私は今まで使ったことがありません Super、 Control、 Alt、そして Shift。そのスクリプトをバインドできます Control+Shift+F5、 例えば。

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

〜/ .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(2番目):実際のパラメーターをリストします
grep:タッチパッドを参照する行を選択します
cut -d = -f 2:「=」以降の部分のみを取得します
expr \( ... + 1 \) %2:1ずつインクリメントし、2による除算のリマインダを取得します(つまり、0/1を切り替えます)
synclient TouchpadOff=:TouchpadOffを上記の結果に設定します
bash -c "...":上記のすべてがbashシェルで実行されていることを確認してください。

このように、別のシェルスクリプトは必要ありません。ただし、必要に応じてすべてを簡単にスクリプトに入れることができます。

1
Mario F.

私はこの解決策に落ち着きました:

脚本

# 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を押してポップアップを閉じ、長い出力を上にスクロールしてキーコードを探します。

1
Nivatius