Ubuntu19.10を使用して、3本指スワイプに機能をもたせるまでの記録です。
達成したことは以下の通りです。
- Logicool T650 トラックパッドで使用するドライバを変更した
- 2本指スクロールのスクロール量を調整した
- 3本指スワイプに、デスクトップ移動の機能を割り当てた
使用するドライバを設定する
Ubuntu19.10を使用しています。
LinuxでTrackpadを使うには以下の3つのドライバがあります。
- Synaptic
- mtrack
- libinput
今どれが使われているか知るには、xinput
コマンドを使います。
xinput list
で認識しているデバイスの名前をしらべ、xinput list-prop <device name or id>
で表示できます。
$xinput list
⎡Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech Rechargeable Touchpad T650 id=12 [slave pointer (2)]
$xinput list-props 'Logitech Rechargeable Touchpad T650'
Device 'Logitech Rechargeable Touchpad T650':
Device Enabled (154): 1
Coordinate Transformation Matrix (156): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (286): 0
Device Accel Constant Deceleration (287): 1.000000
Device Accel Adaptive Deceleration (288): 1.000000
Device Accel Velocity Scaling (289): 25.000000
Trackpad Disable Input (290): 0
Trackpad Sensitivity (291): 1.000000
Synaptic、libinputの場合には、そのモジュールの名前の設定名があるため、判別できます。mtrackの場合には、Trackpad
と表示されます。
特定のドライバを有効化するには、ドライバをインストール後に/usr/share/X11/xorg.conf.d/
に初期設定が格納されるため、これを/etc/X11/xorg.conf.d/
にコピーします。
$ls /usr/share/X11/xorg.conf.d/
10-amdgpu.conf 10-quirks.conf 40-libinput.conf 51-synaptics-quirks.conf 70-wacom.conf
10-nvidia.conf 10-radeon.conf 50-mtrack.conf 70-synaptics.conf
$cp /usr/share/X11/xorg.conf.d/50-mtrack.conf /etc/X11/xorg.conf.d/
$ls /etc/X11/xorg.conf.d/
50-mtrack.conf
これで、ログインログアウトを行うと目的のドライバが有効化されます。
ドライバの設定を変えるためには、/etc/X11/xorg.conf.d/
のOption
の項目を書き換えるか、xinput set-props <device name> <prop> <value>
を使います。
confは永続化する目的に使用でき、xinput set-propsはアドホックに設定をすることに使うことができます。
ただし、confファイルと、xinput list-propsでの設定名は一致しません。
おおよそ同じ名前の設定名ですが、対応表はないため、それっぽいものを選ぶしかないようです。
Xorgのスクロール事情
現状Xorgのスクロールは、ボタン5、ボタン6として動作しています。
よって、スクロールは移動量ごとにボタン5、ボタン6を何回押したかどうかで実現されているようです。
Synapticsでは慣性スクロールが実現されていますが、
スクロールボタンを押す頻度を調整して実現されているようです。
libinputは、きちんとどのくらい移動したかを伝えていますが、
その仕様をまもるために、スクロール量を調整する仕様を持っていません。
現状GNOME3もスクロール量を取り扱っていないようです。
それぞれの特徴
Synaptics
Synapticsはすでにメンテナンスモードに入っており、今後機能がアップデートされる予定はないそうです。
しかし、唯一慣性スクロールをサポートしており、macOSになれた人には非常に使いやすく感じます。
ただし、3本指Swipeは動作しません。
設定項目の一覧はmanから確認できます。
操作してみて、カクカク動く感じがあり、慣性スクロールは気持ちよいですが、自由に使える感じはしませんでした。
mtrack
mtrackは、3本指スワイプ、4本指スワイプも機能として持っています。
2本指スクロールもクイックに動作します。
ただし現在はメンテナンスされていないようです。
設定項目はすべてこのgithubのREADMEにかかれています。
スクロール量や移動スピードも調整可能なため、古いですが非常に有効です。
libinput
現在も開発の続いているライブラリです。可能であればこちらを使うのが良いと思われます。
設定項目は以下に記載があります。
3本指スワイプはサポートされていませんが、libinput-gesturesをインストールすることで使うことができます。
前節の理由からスクロール時の移動量は設定することができません。
結局どれを使えばよいか。
libinput+libinput-gesturesを使って十分ならば、それで良いと思います。
libinputで、スクロールの量をチューニングしたい場合には、mtrackを使うことができます。
筆者は、2019年12月時点で、mtrackを使用しています。
以下が使用している設定ファイルです。
Section "InputClass"
MatchIsTouchpad "true"
Identifier "Multitouch Touchpad"
Driver "mtrack"
Option "ScrollDistance" "30"
Option "ScrollUpButton" "5"
Option "ScrollDownButton" "4"
Option "SwipeDistance" "200"
Option "TapDragEnable" "false"
EndSection
- ScrollDistance 30 2本指スクロールでのスクロール量を調整量
- ScrollUp/DownButton 5/4 入れ替えることで、ナチュラルスクロールに変更
- SwipeDistance 200 3本指スワイプの感度の閾値(初期値700)
- TapDragEnable false タップでドラッグする機能を無効化する
3本指スワイプに機能を割り振る
マウスのキーから、デスクトップの移動を行いたいと思います。
そのためには、以下の手順を取ります。
- mtrackでSwipeにマウスのボタンを割り振る
- xbindkeysで、マウスのボタンから、コマンドを実行できるようにする
- xdotoolsで、コマンドからキーボードのキー(Super+Mなど)を送る
- キー(Super+M)を、デスクトップ移動のキーボードショートカットに設定する
mtrackでは、3本指スワイプは8~11ボタンに割り振られています。
xbindkeysで、xdotoolsのコマンドを実行するには、以下のような~/.xbindkeysrcを作成します。
"xdotool key Super_R+m"
b:8+Release
"xdotool key Super_R+comma"
b:9+Release
"xdotool key Super_R+s"
b:10+Release
xbindkeysを常駐させるには、コマンドxbindkeys_autostart
を実行されるように組みます。
最後に、Gnomeのキーボードショートカットの設定で、Super+M、Super+,、Super+sに必要な機能を割り当てます。
Trackpadを使って、スクロール量を調整したり、3本指スワイプに機能を割り振ることができました。