enum {
kVK_RightCommand = kVK_Command - 1,
+ kVK_Insert = 0x72,
+ kVK_Power = 0x7f,
+ kVK_ApplicationMenu = 0x6e,
kVK_MAX = 0xFFFF,
};
const CGKeyCode NJKeyInputFieldEmpty = kVK_MAX;
+@interface NJKeyInputField () <NSTextFieldDelegate>
+@end
+
@implementation NJKeyInputField {
NSTextField *field;
NSImageView *warning;
- (void)clear {
self.keyCode = NJKeyInputFieldEmpty;
- [self.delegate keyInputFieldDidClear:self];
+ [self.delegate keyInputFieldDidClear:self];
[self resignIfFirstResponder];
}
return self.keyCode != NJKeyInputFieldEmpty;
}
-+ (NSString *)stringForKeyCode:(CGKeyCode)keyCode {
++ (NSString *)displayNameForKeyCode:(CGKeyCode)keyCode {
switch (keyCode) {
case kVK_F1: return @"F1";
case kVK_F2: return @"F2";
return NSLocalizedString(@"Key Pad ,", @"numeric pad key");
case kVK_JIS_Eisu: return @"英数";
case kVK_JIS_Kana: return @"かな";
-
+
+ case kVK_Power: return @"⌽";
+ case kVK_VolumeUp: return @"🔊";
+ case kVK_VolumeDown: return @"🔉";
+
+ case kVK_Insert:
+ return NSLocalizedString(@"Insert", "keyboard key");
+ case kVK_ApplicationMenu:
+ return NSLocalizedString(@"Menu", "keyboard key");
case kVK_MAX: // NJKeyInputFieldEmpty
return @"";
- (void)setKeyCode:(CGKeyCode)keyCode {
_keyCode = keyCode;
- field.stringValue = [NJKeyInputField stringForKeyCode:keyCode];
+ field.stringValue = [NJKeyInputField displayNameForKeyCode:keyCode];
}
- (void)keyDown:(NSEvent *)event {
warning.hidden = YES;
char *error = NULL;
const char *s = field.stringValue.UTF8String;
- long code = strtol(s, &error, 16);
+ short code = (short)strtol(s, &error, 16);
if (!*error && isValidKeyCode(code) && field.stringValue.length) {
self.keyCode = code;