UbuntuデスクトップでMagic Trackpad 2を快適に使う

2019-03-03
Ubuntu
Magic Trackpad 2

環境

OS : Ubuntu 18.04 LTS

ひとまず、何も考えずにBluetoothペアリングさせるとSynaptic Touchpadとは認識されない。Synaptic Touchpadというのは、二本指スクロールとか、タップクリックとかのいわゆるスマートなTouchpad。

カーソルは動かせるしクリックは出来るけど、その他は何も出来ない使えないTouchpadになってしまいます。

Magic Trackpad 2を取り巻く現状

現状を正しく認識することがとても大事なので、調べた内容を一つずつ書きます。このコンテキストを知識として持った上で環境を整えれば、今後の変化にもついていけるはず。

1. ドライバーについて

Linux用のMagic Trackpad 2ドライバーは有志の方が作ってくれています。

https://github.com/robotrovsky/Linux-Magic-Trackpad-2-Driver

そして、嬉しいことにKernel 4.20以降のバージョンではデフォルトで入っています。なので、まずはKernelのバージョンを4.20に上げるのが素直な対応です。

こんな感じで4.20系にしておきましょう。

1
2
$ uname -r
4.20.13-042013-generic

2. xserver-xorg-input-synapticsについて

上記のMagic Trackpad 2ドライバーは、libinputというライブラリーを使うのですが、すでにdistributionに含まれているxserver-xorg-input-synapticsというドライバーがあります。もし、Magic Trackpad 2がこっちのドライバーを掴んでしまうと、上手く動作しません。

なので、下記コマンドで入力デバイスの詳細を表示して確認します。

これで一覧を出します。下記は例ですが、idが表示されるのでMagic TrackPad 2のidをひかえます。

1
2
3
4
5
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=12 [slave pointer (2)]
⎜ ↳ TPPS/2 Elan TrackPoint id=13 [slave pointer (2)]

入力デバイスの詳細を表示します。下はX1 CarbonのTouchPadの例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$ xinput list-props 12
Device 'SynPS/2 Synaptics TouchPad':
Device Enabled (153): 1
Coordinate Transformation Matrix (155): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Tapping Enabled (288): 1
libinput Tapping Enabled Default (289): 0
libinput Tapping Drag Enabled (290): 1
libinput Tapping Drag Enabled Default (291): 1
libinput Tapping Drag Lock Enabled (292): 0
libinput Tapping Drag Lock Enabled Default (293): 0
libinput Tapping Button Mapping Enabled (294): 1, 0
libinput Tapping Button Mapping Default (295): 1, 0
libinput Natural Scrolling Enabled (296): 1
libinput Natural Scrolling Enabled Default (297): 0
libinput Disable While Typing Enabled (298): 0
libinput Disable While Typing Enabled Default (299): 1
libinput Scroll Methods Available (300): 1, 1, 0
libinput Scroll Method Enabled (301): 1, 0, 0
libinput Scroll Method Enabled Default (302): 1, 0, 0
libinput Click Methods Available (303): 1, 1
libinput Click Method Enabled (304): 0, 1
libinput Click Method Enabled Default (305): 1, 0
libinput Middle Emulation Enabled (306): 0
libinput Middle Emulation Enabled Default (307): 0
libinput Accel Speed (308): 1.000000
libinput Accel Speed Default (309): 0.000000
libinput Left Handed Enabled (310): 0
libinput Left Handed Enabled Default (311): 0
libinput Send Events Modes Available (273): 1, 1
libinput Send Events Mode Enabled (274): 0, 0
libinput Send Events Mode Enabled Default (275): 0, 0
Device Node (276): "/dev/input/event5"
Device Product ID (277): 2, 7
libinput Drag Lock Buttons (312): <no items>
libinput Horizontal Scroll Enabled (313): 1

表示されたデバイス詳細にlibinputとあれば、libinputを使えています。synapticXXXXXみたいな感じの表示が沢山書いてあったらsynapticのドライバーを使ってしまっています。もう少しマシな確認方法を見つけたかったのですが、まあコレで分かります。

もし、synapticだった場合は、思い切ってアンインストールします。まあ、問題が出たら元に戻せばいいさの精神です。

1
sudo apt remove xserver-xorg-input-synaptics

3. libinputのバージョンについて

Kernelを4.20にアップデートして、synapticドライバーをアンインストールしても、Magic TrackPad 2は思ったように動いてくれません。正確に言うと、動作はするのですが、かなり圧力をかけてタッチしないと動きません。

これは、TouchPadのsensitivity(敏感さ)の設定らしいのですが、libinputのデフォルトの状態だとMagic TrackPad 2は相当重たい感じになります。はっきり言って使い物にならないです。

このSensitivityの設定についてですが、Ubuntu18.04LTSにstableでインストールされているlibinputのバージョン1.10系で、公式サイトの手順通りに試したのですが、上手く行かなかったです。そのため、libinputのバージョン1.12系にアップデートしました。libinputのバージョンは下記のコマンドでチェック出来ます。※libinput-toolsのインストールが必要です。

1
2
$ libinput --version
1.10.4

この記事を書いている2019/03/03現在、1.12.1-1がstableですので、それをインストールします。

https://launchpad.net/ubuntu/+source/libinput

サイトにアクセスして、下記の4つのdebをダウンロードします。お使いの環境に合わせてダウンロードするファイルは変えてください。X1 Carbonであれば、AMD64でOK。

1
2
3
4
libinput10_1.12.1-1_amd64.deb
libinput-bin_1.12.1-1_amd64.deb
libinput-dev_1.12.1-1_amd64.deb
libinput-tools_1.12.1-1_amd64.deb

インストールが終わったら、rebootしてバージョンを確認します。

1
2
$ libinput --version
1.12.1

4. quirk

libinputの1.12系は、設定ファイルを適切な場所に配置することで、libinputの設定を上書きすることが出来ます。細かいデバイスごとの差異をこれで吸収しようという意図のようです。なお、公式サイトにはquirkのやり方は将来変更されるかもしれないと書いてあるので、libinputのバージョンごとにやり方が細かく変わって来そうです。

1.12系の場合は、下記のファイルを設置すればOKです。

1
2
3
4
5
$ cat /etc/libinput/local-overrides.quirks
[Touchpad touch override]
MatchUdevType=touchpad
MatchName=*Magic Trackpad 2
AttrPressureRange=4:0

内容については、Magic Trackpad 2のドライバーを作成した方が、README.mdに書いてくれているものです。

https://github.com/robotrovsky/Linux-Magic-Trackpad-2-Driver

quirkは「癖、ねじれ」とかいう意味だそうで、まさしくデバイスごとの癖を直すためのファイルですね。

libinputのquirk設定については公式サイトに確認方法も含めてよく書いてあるので、試してみると面白いです。感圧の数値とかも見ることができます。

https://wayland.freedesktop.org/libinput/doc/1.12.4/touchpad-pressure.html

まとめ

以上の設定を完了すると、Ubuntu 18.04 LTSでMagic Trackpad 2がヌルヌル動いてくれます。今回の設定作業の最中に、libinputをアップデートしたり削除したりしている内にUbuntuの入力装置が全部動かなくなるという状態に陥りましたが、復旧できました。その手順については、次のエントリーにて…