電卓片手に

Linux で Apple Magic Trackpad 使う

投稿日:

Apple Wireless Keyboard に関しては 前回の投稿 を参照。

Linux で Magic Trackpad 使うには少し工夫が必要になる。

接続

Ubuntu や Mint など多くのデスクトップ環境に使われている Gnome, Gnome フォークだとは、まずここで詰まる。

Gnome 系で最初から用意されている Bluetooth 設定画面は、Magic Trackpad に使う時にバグがあるらしく使い物にならない。 (Mint 13 Cinnamon, Ubuntu 12.04 で確認)

変わりのソフトウェアを使う:

$ apt-get install blueman

インジケーターに2つ Bluetooth アイコンが並んでしまいますが、 接続のセットアップが終わったら blueman の方のインジケーターは消してしまって 問題無い。

# もしかして: utouch も必要かも

ジェスチャの設定

Magic Trackpad に限らず、トラックパットのドライバは、evdev か synaptic のどちらかを 選ぶことになる。

ただ、evdev だとうまく動かなかったので、synaptics を選びました。

指定方法は、環境によって違うみたいだけど、Mint や Ubuntu だとこう書く:

$ cat /etc/X11/xorg.conf.d/70-magic-trackpad.conf
Section "InputClass"
  Identifier "Apple Magic Trackpad"
  #Driver "evdev"
  Driver "synaptics"
  # lsinput で確認して "vender:product"、だいたい変更する必要ないはず
  MatchUSBID "05ac:030e"

  # 以下 synaptic の設定(要: man synaptics)
  ...
EndSection

細かい設定は、↑のファイルで設定するか、標準でついてくるマウス設定画面で 設定できます。

さらにジェスチャの設定

上記2つのドライバだと簡単なジェスチャしか設定できない。evdev だと一本指、 synaptics だと2-3本指。

今回は、2本指までのジェスチャを synaptic に任せ、3本指以上は ginn に任せました。 (touchegg というのもあるようです。)

ただこの ginn に関するドキュメントが少なすぎる・・・サンプル XML とか /usr/share/ginn/wishes.xml くらいしか参考にしていません。

とりあえず現状はこんな感じで落ち着きました:

<ginn>
  <global>
    <!-- 3 本指タップ: 中クリック -->
    <wish gesture="Tap" fingers="3">
      <action name="action1" when="update">
        <trigger prop="tap time" min="20" max="400"/>
        <button>2</button>
      </action>
    </wish>

    <!-- 4 本指上スワイプ: mac os の expose みたいな表示にする -->
    <wish gesture="Drag" fingers="4">
      <action name="action1" when="update">
        <trigger prop="delta y" max="-700" min="-2000"/>
        <key modifier1="Alt_L" modifier2="Control_L">Down</key>
      </action>
    </wish>

    <!-- 4 本指下スワイプ: デスクトップ表示 -->
    <wish gesture="Drag" fingers="4">
      <action name="action1" when="update">
        <trigger prop="delta y" min="700" max="2000"/>
        <key modifier1="Super_L">D</key>
      </action>
    </wish>
  </global>

  <applications>

    <!-- Google Chrome -->
    <application name="google-chrome">
      <!-- 三本指右スワイプ: 進む -->
      <wish gesture="Drag" fingers="3">
        <action name="action1" when="update">
          <trigger prop="delta x" min="700" max="2000"/>
          <key modifier1="Alt_L">Right</key>
        </action>
      </wish>
      <!-- 三本指左スワイプ: 戻る -->
      <wish gesture="Drag" fingers="3">
        <action name="action1" when="update">
          <trigger prop="delta x" max="-700" min="-2000"/>
          <key modifier1="Alt_L">Left</key>
        </action>
      </wish>
      <!-- 三本指上スワイプ: 消したタブを復活 -->
      <wish gesture="Drag" fingers="3">
        <action name="action1" when="update">
          <trigger prop="delta y" max="-700" min="-2000"/>
          <key modifier1="Control_L" modifier2="Shift_L">T</key>
        </action>
      </wish>
      <!-- 三本指下スワイプ: タブ削除 -->
      <wish gesture="Drag" fingers="3">
        <action name="action1" when="update">
          <trigger prop="delta y" min="700" max="2000"/>
          <key modifier1="Control_L">W</key>
        </action>
      </wish>
    </application>
  </applications>
</ginn>

これらを使う上で注意したいのは、最近の Ubuntu に標準で入ってくる Unity という デスクトップ環境(?)と ginn との相性があまりよくないという点です。

Unity はどうやら、マルチタッチジェスチャーのイベントの大部分を奪ってしまい、 ginn までそのイベントが届かないようです。

# そのくせ設定項目も無いし、大したことも出来ない。。。それを訴えてもこんな感じだし

なので、Unity を使ってかつ ginn を使うならば、Unity のソースコードから、 マルチタッチジェスチャーイベントを奪ってる部分をコメントアウトして、 ビルド・インストールする。という方法を取る他無いようです。残念な感じですね。

おわり

他にいい方法・ソフトなどあれば教えてください。。。