【コラム】

OS X ハッキング!

104 Cocoaアプリのキーバインドにこだわる(2)

    海上忍  [2004/08/30]

    なんと16個の金メダル! やったぜ、日本!! ということで、OS Xユーザの注目も集めたはずのアテネオリンピックは無事その幕を閉じた。そして我々の次なるイベントは……もちろん、アテネから北西へ約2千kmのパリで開催される「Apple Expo 2004」。開幕に向けていろいろと噂が飛び交っているが、待望の新製品は?

    さて、今回も前回に続きCocoaアプリにおけるキーバインドのカスタマイズについて。前回は"~/Library/KeyBindings/DefaultKeyBinding.dict"の書き方に終始してしまったので、今回はフリーソフトウェアを使うなど異なるアプローチでCocoaアプリの操作性向上を図ってみよう。

    これは便利! 単語の補完機能

    Cocoa APIにはスペルチェック機能が用意されているため、Cocoaアプリでは[編集]→[スペル]→[スペル...]を実行すれば綴りに問題のある単語を検出できる。しかし、記憶が曖昧な綴りを補正してくれるわけではなく、「Japanese」を目指して「Japa」と入力した時点でスペルチェックを行っても、「Java」とか「Japan」という修正候補が表示されるばかりで、目的の「Japanese」は出てこない。

    このような事態を解決してくれるのが、Cocoa APIの単語補完機能。~/Library/KeyBindings/DefaultKeyBinding.dictに以下の行を書き加えたあとCocoaアプリを起動し、「Japa」と入力した直後に[Option]-[/]とタイプしてみよう。今度は「Japan」や「Japanese」など、前方が一致する単語のリストが表示されるはずだ。

    "~/"="complete:"

    Cocoaアプリでインクリメンタルサーチを

    CocoaアプリがEmacs風のキーバインドに対応していることは前回述べたとおり。C-aを押せばカーソルは行頭に移動し、C-kと押せばカーソル以降の文字列がバッファに登録される、などEmacsに慣れ親しんだユーザにとってはありがたい機能となっている。しかし、インクリメンタルサーチ(入力した文字をただちに検索語として使用する機能)を使えないことは惜しまれる。

    そのインクリメンタルサーチを可能にするプラグインが、Michael McCracken氏の開発した「I-Search Plugin for NSTextView」だ。書庫に含まれる「IncrementalSearchInputManager」フォルダを~/Library/InputManagersディレクトリ(存在しなければ手動で作成)に、キーバインド定義ファイル「DefaultKeyBinding.dict」を~/Library/KeyBindingsディレクトリにコピーすればOK。すでにDefaultKeyBinding.dictを作成済の場合には、書き足す形でキーバインドを定義しても構わない。

    準備が完了したあと、TextEditなどのCocoaアプリを起動し、C-s(後方検索ならばC-r)とタイプしてみよう。ウインドウ下部に「I-Search」と表示されたダイアログボックスが現れ、Emacsとほぼ同じ方法でインクリメンタルサーチができるようになったはずだ。

    CocoaアプリでOperaライクなマウスジェスチャーを

    C-sやC-rが"手クセ"になっているユーザはともかく、多くのOS Xユーザにとって前掲のインクリメンタルサーチはありがたみの少ない機能かもしれない。しかし、NSTextViewと同じCocoa APIに含まれるNSInputManagerクラスの機能を応用した「Cocoa Gestures」はどうだろう?

    Cocoa Gesturesは、Webブラウザの「Opera」に実装されたことで有名になったマウスジェスチャーをCocoaアプリで実現する。~/Library/KeyBindings/DefaultKeyBinding.dictを利用したカスタマイズ法が"キーボード志向"だとすれば、こちらは"マウス志向"とでも言えるだろうか。操作をマスターするには多少の慣れが必要だが、Safariでマウス片手にぼんやりとWebブラウジングしたいときなど、なかなか便利に使えるはずだ。

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン