ホットキーも長くなった。今実装に入っている。先日の設計には無かったがキー情報を保持するクラスがあると便利なので用意した。
こんな感じ。
Hotkey.h
@interface Hotkey : NSObject {
// Hotkey attrs
UInt32 _keyid; //TODO: id
UInt32 _modifier;
UInt32 _code;
EventHotKeyRef _ref;
// Handler attrs
id _target;
SEL _action;
// keydown:(Hotkey*)hotkey;
}
@property UInt32 keyid;
@property UInt32 modifier;
@property UInt32 code;
@property EventHotKeyRef ref;
@property (retain) id target;
@property SEL action;
Hotkey.m
@implementation Hotkey
@synthesize keyid = _keyid;
@synthesize modifier = _modifier;
@synthesize code = _code;
@synthesize ref = _ref;
@synthesize target = _target;
@synthesize action = _action;
- (BOOL)isEqual:(id)anObject
{
if (anObject == self) {
return YES;
}
if (!anObject || ![anObject isKindOfClass:[self class]]) {
return NO;
}
if (self.keyid != self.keyid) {
return NO;
}
return YES;
}
※未完成でまだテストしていない
今のところ実装はオブジェクトの同値性をチェックする isEqualのみ。これは [NSArray containsObject] の中で使われる。
- - - -
キー値と表示文字用に HotkeyCharMapper なるクラスを用意するつもりだったが、このクラスの責務を考えると統合しても良さそう。