Linux
thinkpad
manjaroLinux

Thinkpad X1 (5th)のLinux環境でタッチパッドの2/3本指操作を有効にする

Thinkpad X1(5th)にLinuxを導入した後に、タッチパッドの基本操作、2本指スクロール、3本指スワイプ等を使えるようにするための設定メモです。

とりあえずタップ等のタッチパッド基本操作、2本指スクロール、3本指スワイプによる仮想デスクトップ切り替えなどを行えるようになります。たまにタップクリックだけが反応しなくなり、Enterキー押下で治るようなバグもオマケでついてきますが、タッチパッドがまともに反応しなかったり触れただけで左クリック反応する状況に比べれば劇的にタッチパッド生活が改善しました。

NOTE: 色々と試行錯誤して設定したため、設定手順に漏れがあるかもしれません。もしうまくいかない場合はコメントで報告いただければ確認します。

Manjaro Linuxを導入する

Mint Linux 18.3ではタッチパッドデバイスを正常に認識することができなかったため、Manjoro Linux 17.1(デスクトップ環境は別途Cinnamonをインストール)を導入しました。ハードウェア自動検出機能を備えてるというためか、同じLinuxカーネルバージョン(4.14/4.15)でも正常にタッチパッドデバイスを認識できるようになります。

下記URLによれば、Linux4.14以上であればタッチパッド問題を解決できるとありますが、当時は何故かLinux Mint 18.3ではLinuxカーネルを4.14や4.15にして後述する設定を行っても問題は解決しませんでした。必要なモジュールがロードされていないのかもしれませんが、詳しく調査せずにManjaro Linuxに切り替えました。

https://wiki.archlinux.jp/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_5)

GRUBコンフィグにオプションを追加する

GRUBコンフィグ(/etc/default/grub)のGRUB_CMDLINE_LINUX_DEFAULTの設定値の末尾あたりにpsmouse.synaptics_intertouch=1を追加します。

# 設定の末尾に追加
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=UUID=6ee7ddbe-027a-47c0-94f3-959400e04fc7 psmouse.synaptics_intertouch=1"

コンフィグ設定後は以下のようにGRUBコンフィグを反映して再起動します。

sudo update-grub
sudo reboot

ちなみにThinkpadをLinux上で使うための他記事ではpsmouse.proto=impsの設定を追加していますが、この設定だと非常に原始的なタッチパッドとして動作するため注意してください。高度なタッチパッド操作はできませんし、タッチパッドに備わってる細やかなセンサー制御ができないためか少し触れただけで左クリックとして反応してしまったり非常に不便です。おそらくMacbookやThinkpad X1等の高性能タッチパッドを備えてるノートパソコンに慣れている人は耐えられないです。

GUIでタッチパッド設定を行う

GUI上の設定画面でタッチパッドの基本的な設定を行うことができます。設定は好みに合わせて設定すればOKです。ここまでの設定でタップ、2本指タップ、2本指スクロール等の基本的なタッチパッド操作は実現できます。

libinput-gesturesを導入

3本指スワイプを実現するためにはジェスチャ対応する必要があります。これを実現するためにまずはlibinput-gesturesをインストールして自動起動するように設定します。

yaourt -S libinput-gestures
libinput-gestures-setup autostart

導入完了後は、下記のlibinput-gesturesのコンフィグファイルを設定を記述します。システム全体とユーザ毎にコンフィグは分かれています。

  • /etc/libinput-gestures.conf -> (system wide default)
  • $HOME/.config/libinput-gestures.conf -> (optional per user)

私の場合はMacOSのように3本指で仮想デスクトップを切り替えを行いたかったため、以下の設定をコンフィグファイルに記述しました。なお、私のManjaro Linux環境ではCinnamonをデスクトップ環境として使用しているため、他のデスクトップ環境などの場合は異なるジェスチャ設定が必要になるかもしれません。ちなみにlibinput-gestures自体はピンチ操作等にも対応していますが、個人的には使用していないため設定は入れていません。

gesture swipe up    xdotool key ctrl+alt+Up
gesture swipe down  xdotool key ctrl+alt+Down
gesture swipe left  xdotool key ctrl+alt+Right
gesture swipe right xdotool key ctrl+alt+Left

libinput-gesturesの情報については下記URLあたりが参考になります。

https://wiki.archlinux.jp/index.php/Libinput#libinput-gestures
https://github.com/bulletmark/libinput-gestures

タップクリックだけたまに反応しなくなった時の対処方法

タップクリックが効かなくなったら、とりあえずEnterキーを押下しましょう。

どうやらカーソル移動時に稀にタッチパッドのイベントが正常に処理できず、その場合にタップクリックだけ効かなくなります。タッチパッドを押し込んでのクリックやその他の操作はできます。このような場合は、Enterキーを押下すると再びタップクリックが使えるようになります。ちなみにアルファベットのキーを押下しても治りません。