ページ

2009年6月17日水曜日

ホットキー変更対応(6) - キーを表示する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

前回修飾キーまでは表示することができた。後は通常のキーを表示するのだが、イベント判別用にキーに割り当てられているコードと、画面表示用に割り当てられるキャラクターコードが異なっている。これをなんらか変換してやる必要がある。

以前紹介したソースコードを見ると変換用のテーブルを言語とに plist で持っていた。
下記は japanese.lproj 下の PTKeyCodes.plist。他に English.lproj や Frentch.lproj などが用意されていた。


なるほど。これならキー表現をローカライズして提供できる。

なおこのキーの割当(0 => 'A')は Events.h (Carbon)の中で定義されている。
Events.h

enum {
kVK_ANSI_A = 0x00,
kVK_ANSI_S = 0x01,
kVK_ANSI_D = 0x02,
kVK_ANSI_F = 0x03,
kVK_ANSI_H = 0x04,
:
:


さて今回はどうするか。