ページ

2009年6月27日土曜日

ホットキー変更対応(15) - 入力ルールを調整

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

キーの入力ルールを調整する。

システム環境設定では大体次のようになっていた。

・Shift + キーは受け付けない
・Command + キーは OK
・Option + キーは OK
・Control + キーは OK
・Shiftは他の Command, Option, Control との組み合わせなら OK
・Escapeキーは他の Command, Option, Control との組み合わせなら OK
・Returnキーは他の Command, Option, Control との組み合わせなら OK
・入力中に Escapeキーを押すとキャンセル

その他、Deleteは不可など。

独自にルールを決める必要も無いので、上記に従う様にした。

Deleteなどキー毎に使えるかどうかの判断は以前定義した構造体のパラメータで判断する。

static const struct {
UInt32 keycode;
NSString* description;
NSString* string;
BOOL is_hotkey;
}
@"Unkown" , NO },
{ kVK_ANSI_A , @"A" , @"A" , YES },
{ kVK_ANSI_S , @"S" , @"S" , YES },
:


最後の is_hotkeyがそれ。


それ以外のルールはロジックを組み込む。

TextView.m
-(void)keyDown:(NSEvent *)theEvent
:
if (!(modifier & (cmdKey | optionKey | controlKey))) {
if (key == kVK_Escape) {
[self redraw];
[self endEdit];
}
// abort
return;
}

if (![KeyCharMapper isHotKeyForKeyCode:key]) {
// abort
return;
}
: