【コラム】
いよいよアテネ五輪が開幕、今回はメダルをいくつ持ち帰れるか、ハラハラし通しの日々が当分続きそう。iPod miniはシルバーが一番人気だそうだけれど……五輪は是非ともゴールドでお願いしたいところ。がんばれ、日本!!
さて、今回はCocoaアプリにおけるキーバインドについて。CocoaアプリでEmacsのキーバインドの一部を使用できることは、当コラム第17回「TextEditの秘密」で紹介済だが、今度はもう少し深く掘り下げ、そのキーバインドを変更する方法について説明したい。
今回紹介する機能はCocoaアプリが対象となるため、最初にバンドル形式のアプリケーションに含まれるバイナリ部分(***.app/Contents/MacOS/@@@の「@@@」)がCocoaフレームワークにリンクしているかどうかを確認する必要がある。otoolコマンドに「-L」オプションを付けて実行すると、対象のバイナリが使用するライブラリ/フレームワークが一覧されるので、その中に「Cocoa.framework」と表示されればOKだ。
より正確に言うと、テキスト編集機能を持つCocoaアプリは、Application Kitに含まれる「NSTextView」というクラスを利用してキー入力などの機能を実現している。Preview.appなどのテキスト編集機能を持たないアプリケーションには縁のない話なので、念のため。
NSTextViewでは、Controlなどの特殊キーを押すと「/System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict」(システム標準)、「~/Library/KeyBindings/DefaultKeyBinding.dict」(ユーザ別)の順にキーバインドの情報が検索される。このファイルのどちらかでキーバインドを定義すれば今回の目的を達成できるわけだが、通常は後者を利用すればいいだろう。
システム標準では、Controlキー(記号「^」)と組み合わされたキーバインドとして下表の内容が定義されている。この表を参考に自分好みの設定を~/Library/KeyBindings/DefaultKeyBinding.dictで定義すれば、TextEditやSafariといったNSTextViewを使用するアプリケーションで有効になる、という寸法だ。
Cocoaアプリで使用可能なキーバインド(Ctrlキーを併用するもののみ抜粋)
| キー | 初期値 | 機能 |
|---|---|---|
| ^a | moveToBeginningOfParagraph: | 行頭へ移動 |
| ^b | moveBackward: | 1文字戻る |
| ^d | deleteForward: | カーソル右側の1文字を削除 |
| ^e | moveToEndOfParagraph: | 行末へ移動 |
| ^f | moveForward: | 1文字進む |
| ^h | deleteBackward: | カーソル左側の1文字を削除 |
| ^k | deleteToEndOfParagraph: | 行を削除してバッファに登録 |
| ^l | centerSelectionInVisibleArea: | 再描画 |
| ^n | moveDown: | 1行下へ移動 |
| ^o | insertNewlineIgnoringFieldEditor: | カーソル位置で改行 |
| ^p | moveUp: | 1行上へ移動 |
| ^t | transpose: | カーソル前後の1文字を入れ替える |
| ^y | yank: | バッファ上の文字列をカーソル位置へペースト(ヤンク) |
| ^v | pageDown: | 1ページ分下方を表示 |
OS Xだけですべてが完結すればいいが、会社や学校ではWindowsというユーザも少なくないはず。気付かぬうちに、コピー(C-c)やペースト(C-v)といった"Windowsの流儀"がクセになってしまったユーザがいても不思議ではない。というわけで、Windowsで利用されるショートカットのうち代表的なものをキーバインドのサンプルとして定義してみた。以下のリストを~/Library/KeyBindings/DefaultKeyBinding.dictとして保存すれば、以降起動されるCocoaアプリ(NSTextViewを使用するもの)でC-cやC-vが有効になるはずだ。
| 【特別企画】標準で4GHz動作! メーカー公認のCPU+GPUダブルオーバークロックマシン登場 [08:30 2/10] |
| 新世代PCを開拓する「Windows on ARM」、MSが概要を説明 [08:07 2/10] |
| iPad 3の強化点はディスプレイ・バッテリ・GPUか - 海外報道 [23:04 2/9] |
| iTunes Matchが生み出す「Magic Money」とは? [22:47 2/9] |
| アスク、システムドライブを2.5インチSATA HDD/SSDに複製するUSBケーブル [18:50 2/9] |
|
【コラム】独占画像の壁紙付コラム 第2回 リアル流血描写が話題のRPGを映画化!禁断の血しぶき増量画像も入手 [09:06 2/10] エンタメ |
|
TVアニメ『ファイ・ブレイン ~神のパズル』、第2シリーズの新キャスト決定 [09:00 2/10] ホビー |
|
【レポート】新型「コンビニATM」入れ替え作業をミタ!! - 東京23区で4月末までに1700台! [09:00 2/10] ライフ |
|
【特別企画】標準で4GHz動作! メーカー公認のCPU+GPUダブルオーバークロックマシン登場 [08:30 2/10] パソコン |
|
【連載】Wordはなぜ思い通りにならないのか? 第25回 テンプレートの作成 [08:30 2/10] ビジネスPC |