Mac OS X YosemiteでXbox 360コントローラーが使えない問題

ざっくり言うと

  • Yosemiteでは360コントローラの非公式コントローラドライバが正常に動作しない
  • コントローラの抜き差しをすると最悪Mac自体が落ちる
  • この記事では対処法と現状の説明をします

問題の症状

Mac OS X上でXbox 360コントローラ(無線/有線共に)を使用するためには、 Tattiebogle.netのドライバを使用する必要があります。

Tattiebogle.net - Mac OS X driver

しかし、Yosemiteでkext signingというドライバ署名を必須としたデバイス管理が導入され、正常に動作しなくなってます。
私の環境では、突然認識しなくなったり、抜き差しするとMac自体が落ちるようになりました。
Tattiebogle.netの作者はどうやら対応してくれないらしく、有志が改良&署名をした新バージョンをリリースしたため、そちらを使うことで対処します。

対処法

1. 新バージョンのドライバをダウンロードする

Releases · d235j/360Controller · GitHub

上のページの、360ControllerInstall_0.14_unofficial.dmgをダウンロードする。

2. インストールする

dmgファイルをマウントするとpkgファイルが表示されるので、開いて案内に従ってインストールする。

それでも正常に動作しない場合は?

古いドライバを一度削除してから新ドライバをインストールする。

/System/Library/Extensions/360Controller.kext /System/Library/Extensions/Wireless360Controller.kext /System/Library/Extensions/WirelessGamingReceiver.kext /Library/PreferencesPanes/Pref360Control.prefPane /Library/StartupItems/360ControlDaemon(フォルダ) /var/db/receipts/com.mice.pkg.Xbox360controller.bom /var/db/receipts/com.mice.pkg.Xbox360controller.plist

上記のファイルをすべて削除する。
これらは隠しファイルかつライブラリフォルダ内にあるので、
表示されていない場合は以下の手順で設定を変更する。

Mac - Finderで隠しファイル・フォルダを表示する方法 - PC設定のカルマ
Mac - Finder のホームフォルダに「ライブラリ」フォルダを表示

現状

Steam版のGTA San Andreasを箱○コントローラでプレイするためにこの方法を試しました。
GTA SAではaxis 2,3がプレイヤーのカメラ視点移動に割り当てられていて、変更は不可能です。
しかし、上記ドライバではaxis 2が左トリガーに割り当てられていて、正常に動作しません。
しかも、トリガーは値の取り方がアナログスティックと異なるため、トリガーを引いていない時でも入力されてしまいます。
結果として、以下のように常に視点がグルグルする現象が発生します。

(日本酒飲みながらプレイしてたので普通に吐きました)

結局、現状としてゲーム側で軸の設定を変更できず、ドライバ側でも設定できないため、この手のゲームで箱○のコントローラを使うのは諦めることになります。
axis 2を割り当てるのはどうやらOS Xのドライバの仕様らしいので、コントローラ側ドライバのソースコードを読んでみたのですが、

switch(usage) {
    case 0x35:  // Right trigger
        j++;
    case 0x32:  // Left trigger
        j++;
    case 0x34:  // Right stick Y
        j++;
    case 0x33:  // Right stick X
        j++;
    case 0x31:  // Left stick Y
        j++;
    case 0x30:  // Left stick X
        axis[j] = cookie;
        break;
    default:
        break;
}

上からaxis 5, 4, 3...と割り当てるコードになっているので、左トリガーはaxis 4に設定されるはずだが、なぜかうまくいっていない。

GInput、GamePad Companion、Joystick Mapperのどれを使っても、結局トリガーの値を取りにいってしまってグルグルしてしまいます。
SteamがGTAのⅢ、VC、SAどれもゲームパッドに対応するように改善したので、このような現象が発生しているようですね。
そのままキーボード操作オンリーにしてくれればよかったんですが・・・

なので仕方なくParalells Desktop上でWindowsを使っています。
Windowsでは挿せばそのまま使えるし、非公式ドライバで軸の入れ替えもできる。
結局PS3コントローラでBluetooth接続が一番楽そうなので今度試してみたいです。