前回修飾キーまでは表示することができた。後は通常のキーを表示するのだが、イベント判別用にキーに割り当てられているコードと、画面表示用に割り当てられるキャラクターコードが異なっている。これをなんらか変換してやる必要がある。
以前紹介したソースコードを見ると変換用のテーブルを言語とに 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,
:
:
さて今回はどうするか。