作業前に留意してください
ここで紹介する方法には、マルチユーザに向かない、設定が煩雑であるという欠点があります。
本設定にはroot権限での作業が要求されるため、問題が生じるとシステム全体の障害に至ることもあり得ます。本文書に基づいた作業によるいかなる結果についても当方は責任を負いません。自己の責任で実施、対処して下さい。説明を完全に理解できない場合やトラブルの対処に必要な知識を十分に持ち合わせない場合は以下の作業を実施しないで下さい。
「システム環境設定」だけでできること、できないこと
「システム環境設定」の「キーボードメニュー」の「Roman」タイプのキーボード「Australian」はASCII配列相当で定義されており、これを選択することで希望する配列に近づけることができます。しかしこの設定ではJIS配列キーボードで入力できない記号(バッククオート「`」とチルダ「~」)があり、プログラムを組むような人には不十分です。
日本語のLocalized.rsrc
「システム環境設定」の設定で「言語」を「日本語」としてある場合は、
/System/Library/Frameworks/Carbon.framework/Frameworks/\ HIToolbox.framework/Resources/Japanese.lproj/Localized.rsrc
というファイルが言語依存リソースとなっています。このファイル中にキーボードのソフトウェアマッピング情報 KCHR が含まれており、これを書き換えることで 任意のキーマッピングを実現できます。
作業のための準備
リソースファイルを編集するための準備をしておきます。
- Terminal でのコマンド操作の一部にはroot権限が必要です。rootアカウントでログインして作業を行うか、適宜 sudo コマンドを 使って対処してください。
- 開発者キットが必要です。/Developer/Tools/Rez, /Developer/Tools/Derez を使用します。
- ResEdit などのリソースエディタが必要です。
- 編集作業のミスでキーボードの入力を受け付けなくなるといった問題が生じる 可能性がありますので、シングルユーザモードでの起動方法を確認しておくことをお勧めします。
- 障害に備えてバックアップなどの措置を事前に済ませておくことをお勧めします。
作業の方針
キーボード「Australian」を若干修正することで上述の不具合を修正します。「システム環境設定」の「言語」を「日本語」、「キーボードメニュー」 のキーボード「Australian」を選択した場合に有効になる設定です。
今回は問題となっているバッククオート「`」とチルダ「~」の記号を、JIS配列 キーボード上の円マーク「\」のキー($5D)に割り付けることにします。 このキーは「Australian」のオリジナルの設定では何も割り付けられていません。
作業手順
1. 「システム環境設定」を使って、「言語」で「日本語」、「キーボードメニュー」で 「Australian」を選択し、TextEdit や Terminal などのアプリケーションで概ね ASCII配列の入力が可能であることを確かめます。もしこの状態で満足ならば 以下の作業を実施しないでください。
2. 日本語の言語依存リソースのバックアップを作成します。
# cd /System/Library/Frameworks/Carbon.framework/Frameworks/\ HIToolbox.framework/Resources/Japanese.lproj/ # cp Localized.rsrc Localized.rsrc.org
3. 作業ディレクトリ(仮に $WORKDIR とする)に言語依存リソースをコピーし、 作業ディレクトリへ移動します。
# cp Localized.rsrc.org $WORKDIR/ # cd $WORKDIR/
4. ResEditで編集できるようにリソースファイルを変換します。
# /Developer/Tools/Derez Localized.rsrc.org -useDF > Localized.r # /Developer/Tools/Rez Localized.r -o work
5. ResEditを起動し、上で作成した work を open します。複数のタイプが表示されるので その中から「KCHR」を開き、さらにその中の「Australian」を開きます。「Australian」の マッピングテーブルを編集し、JIS配列キーボード上の円マーク「\」のキー($5D)に バッククオート「`」とチルダ「~」を割り当てます。
KCHRを開く |
Australianを開く |
キーを割り当てる |
今回の例で割り当て対象とする円マーク「\」のプリントされたキーのコードは $5D となっています。$5D はキーボードの配列図には表示されませんが、 マッピングテーブル内の赤丸で印を付けた箇所に存在しています。この $5D に対して 左上の表にあるバッククオート「`」をドラッグ&ドロップで設定します(Table 0)。 次に Shift キーを押したままチルダ「~」を $5D へドラッグ&ドロップします(Table 1)。 同様の設定作業を Table 7 までそれぞれ行います。なお、Table 0~7 は次のような キーコンビネーションを意味します。
- Table 0: コンビネーションなし、あるいは Command キー(+Shiftキー)とのコンビネーション
- Table 1: Shift キー、あるいは Caps Lock キー+ Shift キーとのコンビネーション
- Table 2: Caps Lock キーとのコンビネーション
- Table 3: Option キーとのコンビネーション
- Table 4: Shift キー+ Option キーとのコンビネーション
- Table 5: Caps Lock キー+ Option キーとのコンビネーション
- Table 6: Option キー+ Command キーとのコンビネーション
- Table 7: Control キー(+他の修飾キー)とのコンビネーション
6. ResEditでの編集形式からLocalized.rsrcの形式へリソースファイルを再度変換します。
# /Developer/Tools/Derez work > work.r # /Developer/Tools/Rez work.r -o Localized.rsrc -useDF
7. 編集したリソースファイルを本来の場所に書き戻します。
# cp Localized.rsrc /System/Library/Frameworks/Carbon.framework/\ Frameworks/HIToolbox.framework/Resources/Japanese.lproj/
8. 一旦ログアウトし、再度ログインすると設定した内容が反映されます。