投稿日:2022年4月16日
タッチパッド操作時の、Ubuntuの水平方向のスクロールをナチュラルスクロールに設定する方法について詳しく解説しています。
ナチュラルスクロールとは、トラックパッドで指を動かした方向にコンテンツが移動するようなスクロールのことをいいます。Macやスマホのスクロールはデフォルトでナチュラルスクロールの設定になっているため、かなり多くの方がこのスクロールに慣れ親しんでいる事でしょう。
Ubuntuにもナチュラルスクロールの設定はGUIで存在するのですが、何故かその設定画面では垂直の方向の設定しかすることができず…。
その設定でナチュラルスクロールの設定をすると、非常に混乱するスクロール設定になってしまうのです。
そこで今回は、Ubuntuのタッチパッドの水平方向のスクロールをナチュラルスクロールに設定する方法について詳しく解説しています。
この記事は以下の環境で確認されました。
今回はほとんどのLinuxディストリビューションでデフォルトでインストールされているxinputというコマンドラインツールを利用して設定していきます。
一応以下のコマンドでインストールされていることを確認してください。
$ xinput --version
xinput version 1.6.3
XI version on server: 2.3
もし、バージョンが表示されず、Command 'xinput' not found.のように表示された場合には以下のコマンドでインストールしてください。
$ sudo apt-get update -y
$ sudo apt-get install -y xinput
まずはタッチパッドに振られているidを確認します。
xinput listコマンドを使用すると、各デバイスの情報を一覧表示することができます。
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Asus Keyboard id=10 [slave pointer (2)]
⎜ ↳ ASUE1209:00 04F3:319F Mouse id=12 [slave pointer (2)]
⎜ ↳ ASUE1209:00 04F3:319F Touchpad id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Asus Wireless Radio Control id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ Asus Keyboard id=11 [slave keyboard (3)]
↳ Asus WMI hotkeys id=14 [slave keyboard (3)]
↳ Asus Keyboard id=15 [slave keyboard (3)]
ASUE1209:00 04F3:319F Touchpadがそれらしいという予測ができますね。
この列の表示情報からid=13であることがわかります。
次にこのデバイスに設定された設定値を確認しましょう。
xinput list-props {デバイスID}で一覧で表示できます。
$ xinput list-props 13
Device 'ASUE1209:00 04F3:319F Touchpad':
Device Enabled (184): 1
Coordinate Transformation Matrix (186): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (317): 1
Device Accel Constant Deceleration (318): 2.500000
Device Accel Adaptive Deceleration (319): 1.000000
Device Accel Velocity Scaling (320): 12.500000
Synaptics Edges (338): 159, 3831, 139, 2439
Synaptics Finger (339): 25, 30, 0
Synaptics Tap Time (340): 180
Synaptics Tap Move (341): 209
Synaptics Tap Durations (342): 180, 180, 100
Synaptics ClickPad (343): 1
Synaptics Middle Button Timeout (344): 0
Synaptics Two-Finger Pressure (345): 282
Synaptics Two-Finger Width (346): 7
Synaptics Scrolling Distance (347): -95, 95
Synaptics Edge Scrolling (348): 0, 0, 0
Synaptics Two-Finger Scrolling (349): 1, 1
Synaptics Move Speed (350): 1.000000, 1.750000, 0.042105, 0.000000
Synaptics Off (351): 0
Synaptics Locked Drags (352): 0
Synaptics Locked Drags Timeout (353): 5000
Synaptics Tap Action (354): 0, 0, 0, 0, 1, 3, 2
Synaptics Click Action (355): 1, 3, 2
Synaptics Circular Scrolling (356): 0
Synaptics Circular Scrolling Distance (357): 0.100000
Synaptics Circular Scrolling Trigger (358): 0
Synaptics Circular Pad (359): 0
Synaptics Palm Detection (360): 1
Synaptics Palm Dimensions (361): 10, 200
Synaptics Coasting Speed (362): 20.000000, 50.000000
Synaptics Pressure Motion (363): 30, 160
Synaptics Pressure Motion Factor (364): 1.000000, 1.000000
Synaptics Resolution Detect (365): 1
Synaptics Grab Event Device (366): 0
Synaptics Gestures (367): 1
Synaptics Capabilities (368): 1, 0, 0, 1, 1, 0, 0
Synaptics Pad Resolution (369): 31, 31
Synaptics Area (370): 0, 0, 0, 0
Synaptics Soft Button Areas (371): 0, 0, 0, 0, 0, 0, 0, 0
Synaptics Noise Cancellation (372): 23, 23
Device Product ID (310): 1267, 12703
Device Node (309): "/dev/input/event14"
多すぎ…。
grepでそれらしい情報だけ表示してみましょう。
今回の場合スクロールについての設定が確認したいので試しに『Scroll』という単語でフィルタしてみます。
$ xinput list-props 13 | grep Scroll
Synaptics Scrolling Distance (347): -95, 95
Synaptics Edge Scrolling (348): 0, 0, 0
Synaptics Two-Finger Scrolling (349): 1, 1
Synaptics Circular Scrolling (356): 0
Synaptics Circular Scrolling Distance (357): 0.100000
Synaptics Circular Scrolling Trigger (358): 0
いい感じにフィルタできました!
ここに表示されたSynaptics Scrolling Distanceを変更することでスクロール向きを変更することができます。
変更に必要なプロパティIDは()の中の値、つまり今回の場合347です。
では最後に設定を変更しましょう。
設定の変更はxinput set-prop {デバイスID} {プロパティID} {プロパティ値}というコマンドで行うことができます。
Synaptics Scrolling Distanceは2つ目の値が水平方向のスクロール距離を指定しているため、この値の正負を反転させましょう。
$ xinput set-prop 13 347 -95, -95
これで、スクロールを試してみてください!!
正しく設定できていれば水平方向のスクロール向きが変わったはずです!!
ただし、この設定はPCの再起動をするとリセットされてしまいます。
再起動のたびにこの設定を読み込ませるために、今回はホームディレクトリの.xsessionrcに先程のコマンドを書き込みます。
$ echo "xinput set-prop 13 347 -95 -95" > ~/.xsessionrc
.xsessionrcについてはdebian WikiのXsessionのページに詳しく書いてあるので、興味があれば見てみてください。