ダイアモンドカーソルを知らずしてなにがブラインドタッチかー!と叫びたい私のようなMacユーザにお勧めのユーティリティに濱田宏貴さん作のDiamondKeyというのがあります。
これはMac OS Xにダイアモンドカーソル機能を追加するユーティリティです。
ダイアモンドカーソルというのはcontrolキーとE、X、S、D、それぞれのキーとのコンビネーションでカーソルキーの上下左右と同等の働きをさせる機能で、これにより文書入力時の負担を軽減する事ができます。
実はこの大変素晴らしいユーティリティーがMac OS Xのバージョン10.3以降、使えなくなってしまっていたのです…。
私はプログラムに関しては素人同然ですし、ましてやこんなローレベルで動くカーネルエクステンションなど手のつけようがないと諦めておったのですが、ワラをもつかむ気持ちでWebを検索してみたらzarame.com/zideさんのこのような記事を見つけました。
Mac OS X 10.3に対応しているKappaという同種のユーティリティのソースコードをベースに、DiamondKeyのソースコードを参考にして手を加えたものをビルドし直してみたらできたとの事!
この情報に元気づけられて、使った事もないXcodeで自分も挑戦してみたら…できたーっ!!イヤッフー!!!
ああ、これでやっと以前のストレスのない文書入力が戻ってきました。おわり。
前置き長くなりましたが、これで終わったら石が飛んできそうなので少し具体的な解説です。
基本的にはzarame.com/zideさんの記事の手順を踏めばよいわけですが、Kappaのソースコードにどのように手を加えるかといいますと、ODHIDHack.cppを開き、
この行の後に
#undef OD_DEBUG
以下の命令を追加
// #define OD_DIAMONDでダイヤモンドカーソルオン #define OD_DIAMOND
また、この行の前に
#ifdef OD_ENTER_COMMAND
以下の命令を追加します
#ifdef OD_DIAMOND
case 14: /* Control+E -> Up */
if((flags & 0x40001) != 0) {
flags ^= 0x40001;
flags |= 0x200000;
key = 126;
}
break;
case 7: /* Control+X -> Down */
if((flags & 0x40001) != 0) {
flags ^= 0x40001;
flags |= 0x200000;
key = 125;
}
break;
case 1: /* Control+S -> Left */
if((flags & 0x40001) != 0) {
flags ^= 0x40001;
flags |= 0x200000;
key = 123;
}
break;
case 2: /* Control+D -> Right */
if((flags & 0x40001) != 0) {
flags ^= 0x40001;
flags |= 0x200000;
key = 124;
}
break;
case 15: /* Control+R -> PageUp */
if((flags & 0x40001) != 0) {
flags ^= 0x40001;
key = 116;
}
break;
case 8: /* Control+C -> PageDown */
if((flags & 0x40001) != 0) {
flags ^= 0x40001;
key = 121;
}
break;
case 4: /* Control+H -> Delete */
if((flags & 0x40001) != 0) {
flags ^= 0x40001;
key = 51;
}
break;
case 46: /* Control+M -> Enter */
if((flags & 0x40001) != 0) {
flags ^= 0x40001;
key = 36;
}
break;
#endif
これらは濱田宏貴さん作のDiamondKeyのソースコードに少しだけ手を加えたものです。
Control+MによるEnterキー入力も加えています。
パーミッションを間違えないように
そして手を加えたファイルを含むソースコードのセットをビルドしてできたKappa.kextをあらかじめインストーラでインストールしておいた/Library/StartupItems/Kappa/Kappa.kextと入れ替えます。
そして重要なのがその後、kappa.kext のパーミッションをパッケージの中の書類も含め全てインストールしたkappa.kextと同じに設定する事です。これを怠ると動作しません。
私はTerminal使えませんのでFinderのインスペクタから手動で全て画像のように設定していきました。
自分もよく解っていないのですが、環境によってこれではダメな場合もあるかもしれません。インストーラによりインストールされたkappa.kextのパーミッションを確認してみてください。
後は再起動するだけで、もうログイン操作からダイアモンドカーソルを使い放題です!
ちょっと気になる点としてはFinderでファイル選択にダイアモンドカーソルを使おうとしたら、ControlキーによるContextual Menuが優先されてしまって使用できないというケースがありました。
完全にカーソルと同様というわけにはいかないかもしれませんが、特に問題と思えるほどの現象は見つかっておりません。
開発に携わった全ての方に感謝しつつ、永久に使用し続けたいユーティリティです。
願わくばインストーラ付きで正式にリリースして欲しい今日この頃ですが…。何かワケありなんでしょうか?
DiamondKeyの作者である濱田宏貴さんより、許可をいただけましたのでインストーラ形式での提供をいたします。
上記手順により制作したインストーラとソースコードのセットです。
DiamondKey Mac OS X 10.3(Panther)対応版
初めまして、園部と申します。Kappaをご利用いただきありがとうございます。
インストーラ(pkgファイル)を作るための設定ファイルを
http://www8.ocn.ne.jp/~sonoisa/Kappa/MakeKappaPackage.zip
置きましたので、よければお使いください。簡単に作れますよ。
インストーラの作成手順は以下のとおりです。
1. /Library/StartupItemsの中にKappaのみがある状態にする。
(もし他のフォルダもあると、それらも一緒にインストールするインストーラができてしまいます。)
2. ダウンロードしたMakeKappaPackage.zipを解凍する。
3. 解凍してできたフォルダMakeKappaPackage内のKappa.pmspをPackageMakerで開く。
(PackageMakerは/Developer/Applications/Utilitiesにあります。)
4. Kappa.pmspウィンドウのResourcesタブに切り替え、Resources項目のChoose...ボタンを押し、MakeKappaPackage/Resourcesを選択する。
5. FileメニューのCreate Package項目を選択してインストーラを作成する。
ではでは。
Posted by: 園部勲 at 2004.11.14
パーミッションの変更をFinderでされていますが、もしTerminalでするとしたら
sudo chown -R root:wheel /Library/StartupItems/Kappa/Kappa.kext
ですね。
Posted by: 園部勲 at 2004.11.14
ああっ。Kappaの作者サマ!初めましてです。
インストーラの作成手順の詳細を丁寧に教えていただき、恐縮です。
今、Developer Toolsが使える環境でないので試せないのですけど、これなら私にも作れそうですね〜。
なんとなく、GNUなんだからオマエがリリースしろ(笑)と言われている気もしますが、これはやはり濱田さんに出して頂きたいところです。リリース間近ですとHPに書かれた後、しばらく音沙汰がないのは気になりますが…。
ちなみに園部さんは濱田さんに何らかのコンタクトをとられた事があるのでしょうか?
お二方の名前で是非正式リリースするべきだと思いますよー。
Posted by: TITO at 2004.11.14
TITOさん今晩は。
> なんとなく、GNUなんだからオマエがリリースしろ(笑)と言われている気もしますが、...
バレました? ^^
> ちなみに園部さんは濱田さんに何らかのコンタクトをとられた事があるのでしょうか?
濱田さんとコンタクトを取ったことはないと思います。(記憶に自信がないですけど…)
> お二方の名前で是非正式リリースするべきだと思いますよー。
Kappaはやっつけ仕事ですので私の名前は必要ありません。
といいますか、今はOgreKitの制作の方に力を入れているためKappaのサポートに手が回りにくい状況ですので、名前抜きの方がサポートの手間が減って助かります。
濱田さんに一度ご連絡を取られて、リリースに時間が掛かるようでしたらTITOさんが代わりにリリースされるというのも一つの選択肢だと思います。Mac OS X 10.4の姿が見え始めたところですし。
Posted by: 園部勲 at 2004.11.14
おかげさまでなんとかインストーラを作る事ができました。(^_^)
やはり機能上から、ファイル名はDiamondKeyに変更させていただきましたです。
濱田さんにもメールしてみましたので、これをどうするかはそのお返事次第ですねー。ドキドキ。
OgreKitの記事を拝見しましたけど、ちょっと私にはよく分かりませんでした(^o^;
しかし、アプリケーションの日本語の為の重要な仕事だという事は分かります。頑張ってくださいです!
Posted by: TITO at 2004.11.15
はじめまして、ハマダ(濱田宏貴)です。なんかトンデモナイ時間に起きてしまい、ボヘッとサーフしてたらこちらを見つけてしまいました。
10.3対応diamondkeyは自分のところではKappaを参考に早々に対応させていたのですが、さすがにそのままではソースを公開できない&あれだけ熱くダイアモンドカーソルについて語っていたのに自分がemacs系になってしまったことなどから放置しちゃってました(emacs系は10.3標準なのでdiamondkeyも「英数キー→`/~キー&かなキー→commandキー」版を使っていたり……もはやdiamondkeyの名前の意味無し(^^;)。
10.4間近なのでアレですが、もしその気がおありであれば10.3対応版についてはTITOさんのほうでご提供いただければと幸いです(メールをいただいたそうですが、ライター用のアドレスには200件/日くらいのメールが来てましてフォローできてなかったかもしれません、すみません)。今だとDoubleCommandの日本語キーボード対応版みたいなほうが面白いかもしれませんが……。
Posted by: ハマダ at 2005.03.16
はじめましてー!コメントありがとうございます。
Emacsですか〜。個人的には記憶しにくい操作だと思い込んでいた為に、縁のなかったものなのですが、それはともかくとして10.3標準だったのですね!初めて知りました…。
今、かなりぎこちない手つきで試しているのですが、なるほどText Edit部では大概使えるようですね。Previous、Next、Backward、Forward…。
Unixに入ってはEmacsに従うべきなのかもしれませんね。IMEも含めてまじめに練習してみようかなあ…。
10.3対応diamondkeyに関しましては、提供許可をいただいたことですので、近日発表しようと思います。
当方にわざわざメールにてリクエスト下さった方もいらっしゃる位なので、まだ需要はあると思いますので〜。
濱田さまにはDoubleCommandの日本語キーボード対応版といわず、すべてのキーをカスタマイズできちゃうPreferencePanesなどのようなものを是非!作ってほしいです〜(^o^)
Posted by: TITO at 2005.03.20