投稿日:2020年11月22日
Ubuntuを使っているとまれに入力デバイスに対しての挙動が気に入らない場合があります。この記事では、xinputコマンドを使ってタッチパッドの感度の高さを変更します。
私は普段遣いのPCとしてHPのSpectreX360にUbuntu20.04LTSをインストールして使用しているのですが、プログラミングなどをしているとふいにタッチパッドに触れてしまったりした際にカーソルが移動してしまったりしてどうも使いづらい?
おそらくタッチパッドの感度が高すぎるのが原因のようです。
タッチパッドの感度の調整にはxinputコマンドを使用します。
まずはxinputでタッチパッドのidを特定する必要があります。
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ELAN0732:00 04F3:24DB id=10 [slave pointer (2)]
⎜ ↳ Synaptics TM3257-001 id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ HP TrueVision FHD RGB-IR: HP Tr id=9 [slave keyboard (3)]
↳ ELAN0732:00 04F3:24DB id=11 [slave keyboard (3)]
↳ Intel Virtual Button driver id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)]
↳ HP Wireless hotkeys id=15 [slave keyboard (3)]
↳ HP WMI hotkeys id=16 [slave keyboard (3)]
おそらくタッチパッドはVirtual core pointerの子要素になっていると思います。その中でそれらしいものを見つけましょう(Synapticsとかついた名前が怪しい)。
今回の場合Synaptics TM3257-001がそれらしい気がします。
試しにid=14の入力を確認してみましょう。
xinput --test {デバイスid}コマンドは指定したidから受け取るデータをログとして表示してくれるコマンドです。
コマンドをうってタッチパッドをいろいろいじると…
$ xinput --test 14
motion a[0]=1105
motion a[0]=1106
motion a[0]=1110
motion a[0]=1117
motion a[0]=1127
motion a[0]=1136 a[1]=709
motion a[0]=1144 a[1]=713
間違いなさそうです。
では変更する前に、現在の設定値を確認します。
xinput --watch-props {デバイスid}コマンドでそのデバイスの設定値を確認できます。
$ xinput --watch-props 14
Device 'Synaptics TM3257-001':
Device Enabled (171): 1
Coordinate Transformation Matrix (173): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (305): 1
Device Accel Constant Deceleration (306): 2.500000
Device Accel Adaptive Deceleration (307): 1.000000
Device Accel Velocity Scaling (308): 13.694853
Synaptics Edges (318): 92, 2228, 60, 1061
Synaptics Finger (319): 25, 30 , 0
Synaptics Tap Time (320): 180
Synaptics Tap Move (321): 113
Synaptics Tap Durations (322): 180, 180, 100
Synaptics ClickPad (323): 1
Synaptics Middle Button Timeout (324): 0
Synaptics Two-Finger Pressure (325): 282
Synaptics Two-Finger Width (326): 7
Synaptics Scrolling Distance (327): -64, -64
Synaptics Edge Scrolling (328): 0, 0, 0
Synaptics Two-Finger Scrolling (329): 1, 1
Synaptics Move Speed (330): 1.000000, 1.750000, 0.077640, 0.000000
Synaptics Off (331): 0
Synaptics Locked Drags (332): 0
Synaptics Locked Drags Timeout (333): 5000
Synaptics Tap Action (334): 0, 0, 0, 0, 1, 3, 2
Synaptics Click Action (335): 1, 3, 2
Synaptics Circular Scrolling (336): 0
Synaptics Circular Scrolling Distance (337): 0.100000
Synaptics Circular Scrolling Trigger (338): 0
Synaptics Circular Pad (339): 0
Synaptics Palm Detection (340): 0
Synaptics Palm Dimensions (341): 10, 200
Synaptics Coasting Speed (342): 20.000000, 50.000000
Synaptics Pressure Motion (343): 30, 160
Synaptics Pressure Motion Factor (344): 1.000000, 1.000000
Synaptics Resolution Detect (345): 1
Synaptics Grab Event Device (346): 0
Synaptics Gestures (347): 1
Synaptics Capabilities (348): 1, 0, 0, 1, 1, 1, 0
Synaptics Pad Resolution (349): 20, 20
Synaptics Area (350): 0, 0, 0, 0
Synaptics Soft Button Areas (351): 0, 0, 0, 0, 0, 0, 0, 0
Synaptics Noise Cancellation (352): 12, 12
Device Product ID (298): 1739, 0
Device Node (297): "/dev/input/event12"
Synaptics Fingerの設定がタッチパッドの感度の設定です。3つの値が設定してありますが左から順に以下のような意味を持ちます。
2の値が大きくなるほどタッチでのクリックが弱くなります。
1の値が小さくなるほどマウスは動かしやすくなります。
自分のPCの場合3の設定は使用できないようでした。
いろいろいじってみた結果5 55 0が丁度いい値でした。
値のセットはxinput --set-prop {デバイスid} "{設定名}" {設定値}コマンドを使います。
$ xinput --set-prop 14 "Synaptics Finger" 5 55 0
これでタッチパッド全体の感度は下がりました。
追加でタッチと判断するタップタイムを下げて置くとより誤タッチが減るでしょう。
この設定はSynaptics Tap Timeの設定です。
設定した値以下のタッチをタップとみなします。
いろいろ設定値で試して見たところ100がちょうど良かったです。
$ xinput --set-prop 14 "Synaptics Tap Time" 100
これらの設定は再起動するとリセットされてしまいます。
永続化するには以下のように~/.xsessionrcに書き込みましょう。
$ echo "xinput --set-prop 14 'Synaptics Finger' 5 60 0" >> ~/.xsessionrc
$ echo "xinput --set-prop 14 'Synaptics Tap Time' 110" >> ~/.xsessionrc
これで設定は完了です!