MacでASFRecorder

OS XでADB2ボタンマウス



初期G3マシンやG2マシン+XPostFactoでOS Xを動かせばADBマウスも使えます。
しかし2ボタンマウスはメーカーのドライバがないと1ボタンマウスとして扱われてしまいます。
OS 9ならTheMouse2Bと言うコントロールパネルで右ボタンも使えるようになりますが、探した限りOS X用のものはありません。
しかしUSBマウスなら特別なドライバなしで右ボタンもつかえるので右ボタンの処理自体はOS Xのカーネルレベルで対応してそうです。
またDarwinはオープンソースなのでアップルからADBマウスドライバのソースがダウンロードできます。
ということでとってきたソースをほんのちょっといじくって2ボタン対応にする方法を簡単に説明します。

1. ソースを落としてくる。
一つのアーカイブとしては存在してないようなのでcvsでとってくるのが手っ取り早いと思います。
cvsの使い方は詳しく知らないのですがとりあえず私がやった方法は、Terminal上で適当なフォルダに移動し、
cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od login
と入力。パスワードを聞かれたらanoncvsと入力。次に、
cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od co src/AppleADBMouse
でsrc以下にソースが取得される。最後に
cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od logout
でログアウトする。
でした。

2. ソースの変更。
AppleADBMouse.cppの中の186行目と222行目の
_buttonCount = 1;
となっているところを
_buttonCount = 2;
に変更します。これは見てわかる通りボタンの数を強制的に2個と認識するようにしてます。
そして150行目の
if ((data[0] & 0x80) == 0) buttonState |= 1;
となっているところの下に
if ((data[1] & 0x80) == 0) buttonState |= 2;
と付け加えます。
上の行は左ボタンが押された時に認識するコードで、新しく追加した行は右ボタンが押された時に認識するコードです。
この3つの変更点だけで2ボタンマウス用のドライバとして働きます。
たったこれだけのことなのになんでアップルはやってくれないんだろう.....
ただこのままだと標準のドライバを置き換えなければならなくなるので、私は.cppと.h、Info.plistの中とファイル名のAppleADBMouse
と言う文字を全部AppleADB2BMouseに置換しました。
ついでに後ろの方にあるAppleADBMouseType4に関するところはトラックパッド用の関数なので私は必要ないから削除しました。
更に、純正ドライバと共存させる時今作った方が優先されるようにInfo.plistのIOKitPersonalitiesの中にあるIOProbeScoreの値を
初めより大きめに設定しました。
下のアップルのドキュメントによればベンダーネームなどがマッチするドライバが最優先され、マッチするものがなければIOProbeScore
の値を元に適当に計算した数の大きい方が優先されるようです。(私の解釈が正しければ)
http://developer.apple.com/documentation/DeviceDrivers/Conceptual/MassStorage/04_Matching/chapter_4_section_2.html

3. コンパイル&インストールする。
ProjectBuilderでAppleADB2BMouse.pbprojを開いてCommand+Bするだけです。
buildフォルダの中にAppleADB2BMouse.kextが出来ているはずです。
あとはTerminalでroot権限で/System/Library/Extensionsの中にコピーして再起動すればOKです。(ドライバ名を変えてなかったら
オリジナルのバックアップをとっとくべきです。)
アンインストールは今入れたドライバを削除するだけで良いはずですが一応Extensions.kextcacheとExtensions.mkextも捨てときましょう。
自作するなら万が一マウスが上手く働かない時のためにシングルユーザーモードで修復する方法も覚えておいた方がいいでしょう。

ということでコンパイル済みのインストーラ付きバイナリ
AppleADB2BMouse.dmg.gz
と改造したソース
AppleADB2BMouse-Source.dmg.gz
を置いときます。

このドライバはOS X10.2.8上でNeXTのADB2ボタンマウスとSANWA SUPLLYのADB2ボタンマウス(MA-401MACG3)について試しました。
多分10.1や10.3でも動くと思いますが試してはいません。
LogicoolのADB3ボタンマウスも似たような方法で行けると思います。
MacAllyのADB2ボタンマウスは標準のプロトコルとは違うようなので恐らく上のドライバは効かないと思いますが
http://www.kroptech.com/osxadb/MacAlly.html
でそれ用のドライバを公開しています。
同じサイトのマック起動時にADBマウスがついてなくても使えるようにするドライバ(ADB切り替え機がある時便利)の作成手順
を大いに参考にしました。
http://www.kroptech.com/osxadb/




戻る

[PR]三井住友海上きらめき生命:医療保険のご案内と資料請求はこちらから