MacBookでTeslaが動く!……追加情報
MacBookというか、Intel MacでのTeslaのビルド&インストールですが、mixiの「親指シフト」コミュニティでakitamさんという方から以下のアドバイスをいただきました。わたくしの手順(とは言えないような単純な手順)ではうまく行かなかったので、ソースを若干修正してみたとのことです。転記して差し支えないとおっしゃってくださったので、こちらに転記しておきます。
(1) カーネルのライブラリのバージョンを合わせる。
kextのプロジェクトをビルドする時に、
Xcodeの「グループとファイル」にある◎ターゲットの下の◎Teslaをダブルクリックする。(Teslaが見えないときには◎ターゲットをクリック)
◎ブロジェクト"Tesla"のターゲット"Tesla"という一覧が出る。その左側のサマリーのInfo.plistのエントリーの詳細設定ビューをクリック
右にプロバティーリストが表示される。
プロバティリストのOSBundleLibrariesをクリックすると以下のプロパティと対応する値がでる。値をそれぞれ最新のものに変更する。
(ターミナルでkextstatを実行すると表示されます)
私のMacBook(10.4.7)では次の値です。
com.apple.iokit.IOHIDFamily 1.4.8
com.apple.kernel.bsd 7.9.9
com.apple.kernel.iokit 7.9.9
com.apple.kernel.libkern 7.9.9
com.apple.kernel.mach 7.9.9
(2) Undefined symbols(IOHIDSystem.stop(IOService))への対処
新しいバージョンでどのライブラリーにあるか不明でしたので、ヘッダーファイルを書き換えました。
スポットライトで(ヘッダーファイル)IOHIDSystem.hを探す。
kextのプロジェクトにコピーする。
(ヘッダーファイル内の)関数stopをコメントアウト
// virtual void stop(IOService * provider);
ちょっと乱暴だが次のinclude指定もコメントアウト
//#include "ev_keymap.h" /* For NX_NUM_SCANNED_SPECIALKEYS */
このヘッダファイル名を適当に変える(例えばIOHIDSystemFix.h)
Tesla.cppのヘッダーインクルードを先のファイルに変更する。
#define private public
//#include
#include "IOHIDSystemFix.h"
#undef private
-----
これでビルドすれば、とりあえず動くkextができます。
−−−−−
※このstop関数はMacOSX10.3.9.sdkのIOHIDSystem.hには存在せず、Mac10.4u.sdkに含まれています。
※IOHIDSystemのstopが含まれているライブラリーがあるのかもしれませんが探していません。
※とりあえず、stop()はTeslaのコードでは使われていないので、避けることで対処しました。
-----
他のインテルマックでも同様の手法で動くかもしれません。自己責任で挑戦してみてください。
| 固定リンク
コメント
「Macと親指シフト」のサイトからこちらの情報を知り、ようやく自分のMacBook ProでもTeslaによる親指シフト入力ができるようになりました。苦労しただけに感動が大きかったです。
ありがとうございました。
投稿: ICO | 2006.07.30 01:59