ページ

2009年6月21日日曜日

ホットキー変更対応(10) - キー入力値と表示文字の変換表を作る

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

結局、キー入力値と表示文字(文字列)の対応表を作る事にした。
キー値は Event.h の値を使うことにする。これは現在のホットキー実装が Carbonを使っているから。

まずは Cの構造体でソースへ埋め込むことにする。
こんな感じ。

static const struct {
UInt32 keycode;
NSString* description;
NSString* string;
BOOL is_hotkey;
}
keymap[] = {
{ kVK_ANSI_A , @"A" , @"A" , YES },
{ kVK_ANSI_S , @"S" , @"S" , YES },
{ kVK_ANSI_D , @"D" , @"D" , YES },
{ kVK_ANSI_F , @"F" , @"F" , YES },
:


最初のkeycodeは Event.h で定義されているキー値。続く descriptionはデバッグ用の説明文字列。3番目は画面表示用の文字列。そして最後はホットキー利用の可否を表すフラグ。

定義されているキーはすべて使えるわけではなく、例えばエスケープキーなどは使えない。これを判断するために is_hotkey を設けてある。

- - - -
さて、これを使って入力キー値を表示させようとするが NSTextFiledが keyDown: を受け取れないことを思い出した。これは困った。さてどうするか。