Ubuntu 20.04でMagic Trackpadのマルチタッチジェスチャーを使う

久しぶりにデスクトップをUbuntuにしてみたところ、Magic Trackpadのジェスチャーの設定に苦戦したのでメモ。

環境

  • Ubuntu 20.04
  • X11
  • GNOME
  • Magic Trackpad (2じゃない)

設定

普通にペアリングしてタッチパッドの設定から以下の動作は設定できるようになる。

  • スクロール方向
  • 左右クリック
  • 2本指スクロール

基本的にはこれでも十分使えるのだが、自分の場合は3本指スワイプで戻る・進む動作をさせたかったので方法を調べてみた。 Ubuntu wikiではginnというツールが紹介されている。 またいろいろとググっているとtoucheggというツールも見つかる。 どちらも試してみたが自分の環境ではどちらも期待通りに動かなかった。

ドライバまわりの話

自分の中でLinuxでタッチパッド周りのドライバといえばSynapticsだったが現在はSynapticsは開発されておらず、 代わりにlibinputというドライバが使われるようになっているらしい。

実際にMagic Trackpadにはlibinputが使われている模様。

$ xinput list | grep -i trackpad
⎜   ↳ Magic Trackpad                            id=10   [slave  pointer  (2)]
$ xinput list-props 10
Device 'Magic Trackpad':
        Device Enabled (168):   1
        Coordinate Transformation Matrix (170): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Tapping Enabled (303): 1
        libinput Tapping Enabled Default (304): 0
        libinput Tapping Drag Enabled (305):    1
        libinput Tapping Drag Enabled Default (306):    1
        libinput Tapping Drag Lock Enabled (307):       0
        libinput Tapping Drag Lock Enabled Default (308):       0
        libinput Tapping Button Mapping Enabled (309):  1, 0
        libinput Tapping Button Mapping Default (310):  1, 0
        libinput Natural Scrolling Enabled (311):       0
        libinput Natural Scrolling Enabled Default (312):       0
        libinput Scroll Methods Available (313):        1, 1, 0
        libinput Scroll Method Enabled (314):   1, 0, 0
        libinput Scroll Method Enabled Default (315):   1, 0, 0
        libinput Click Methods Available (316): 1, 1
        libinput Click Method Enabled (317):    0, 1
        libinput Click Method Enabled Default (318):    0, 1
        libinput Middle Emulation Enabled (319):        0
        libinput Middle Emulation Enabled Default (320):        0
        libinput Accel Speed (321):     0.551471
        libinput Accel Speed Default (322):     0.000000
        libinput Left Handed Enabled (323):     0
        libinput Left Handed Enabled Default (324):     0
        libinput Send Events Modes Available (288):     1, 0
        libinput Send Events Mode Enabled (289):        0, 0
        libinput Send Events Mode Enabled Default (290):        0, 0
        Device Node (291):      "/dev/input/event5"
        Device Product ID (292):        1452, 782
        libinput Drag Lock Buttons (325):       <no items>
        libinput Horizontal Scroll Enabled (326):       1

ginnもtoucheggもsynaptics用に作られているからlibinputの環境では動かないということだろうか? ともかく、libinputの場合にマルチタッチジェスチャーをするためのツールはArch wikiが詳しい。 説明を読んだ感じだとGnomeExtendedGesturesがよさそうだが、Ubuntuにはパッケージがないうえ、GitHubを見るとWaylandが必要とのことだったのでlibinput-gesturesを選択した。

libinput-gestures

libinput-gesturesもパッケージはないのでGitHubからダウンロードしてくる。 インストール方法もREADME.mdに記載の通り。

ひとまず設定ファイルは以下のようにした。

  • 3本指左右スワイプで戻る・進む
  • 4本指左右スワイプでワークスペース切替
  • 3本指または4本指上下スワイプですべてのウィンドウを表示
$ cat .config/libinput-gestures.conf
gesture swipe left 3 xdotool key alt+Left
gesture swipe right 3 xdotool key alt+Right

gesture swipe left 4 xdotool key super+Page_Up
gesture swipe right 4 xdotool key super+Page_Down

gesture swipe up 3 xdotool key alt+F1
gesture swipe down 3 xdotool key alt+F1
gesture swipe up 4 xdotool key alt+F1
gesture swipe down 4 xdotool key alt+F1

libinput-gestures -dでジェスチャーを認識しているか確認できる。 libinput-gestures-setup startで起動、libinput-gestures-setup autostartで自動起動設定

もっと凝ったジェスチャーも設定できそうだがひとまずこれで使ってみることにする。

参考

関連記事

comments powered by Disqus