2019年7月23日火曜日

【技術メモ】Ubuntu で TouchPad の動作をトグルで ON/OFF 切り替える方法

普段は仕事ではトラックボールを使っています。
Logicool MX EGRO Wireless Trackball というトラックボールです。
https://www.logicool.co.jp/ja-jp/product/mx-ergo-wireless-trackball-mouse

トラックボールを使っている最中は、誤タッチなどによるカーソル飛びといったストレスフルな動作を減らしたいので、タッチパッドデバイスを停止させたい、というのが今回のモチベーションです。

ですが、出先にこの大きさのポインティングデバイスを持ち出すのはシンドイのでタッチパッドを使えるようにはしたいのです。
コレ自体は簡単で、メニュー開いて普通にON/OFF すると良いだけなのですが、一つ問題があります。

ON/OFF を切り替えるためにはメニューを開いて、タッチパッドを無効化して...という操作が必要になりますが、マウスがない状態でこの操作をするには非常にやりにくいわけです。 

まさにニワトリタマゴですね(違いますね

なので、今回はキーボードのショートカットを登録し、それでトグル動作をさせることにしました。

方法は至ってシンプルで、 xinput コマンドからデバイスの状態を取得して、その状態に応じて対局する状態に遷移させます。

こんな感じです。
~$ xinput list-props [Device ID]
Device 'ETPS/2 Elantech Touchpad':
Device Enabled (181): 1
Coordinate Transformation Matrix (183): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Tapping Enabled (318): 1
〜 中略 〜
libinput Drag Lock Buttons (342): <no items>
libinput Horizontal Scroll Enabled (343): 1

ここで出てくる Device Enabled を判定して、
  • 1 のときはタッチパッドが有効なので 0 にする
  • 0 のときはタッチパッドが無効なので 1 にする
というトグル動作を実装します。

シェル芸から程遠く、ちょっとした繰り返しくらいでしか普段シェルを書かないのですが xinput を飛ばすだけなのに他の言語を使うのもアレってことで、勉強がてら素直にシェルで実装しています。

ここで作った shell を ubuntu のキーボードのショートカットに設定します。ここでは [CTRL + ALT + P] にしました。

実装していますと言っても askubuntu にある実装そのままですが。
https://askubuntu.com/questions/844151/enable-disable-touchpad

https://github.com/grim13b/toggle-touchpad

このシェルをキーボードのショートカットから呼び出すように設定して完了です。

ということで、キーボード打っている最中にカーソルが飛んで変な入力することもなくなり、心が落ち着くようになりました。

0 件のコメント :

コメントを投稿