aboutsummaryrefslogtreecommitdiffstats
path: root/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'Framework')
-rw-r--r--Framework/MASKeyCodes.h19
-rw-r--r--Framework/MASShortcut.h10
-rw-r--r--Framework/MASShortcut.m82
-rw-r--r--Framework/MASShortcutView.h2
-rw-r--r--Framework/MASShortcutView.m4
-rw-r--r--Framework/Prefix.pch1
6 files changed, 63 insertions, 55 deletions
diff --git a/Framework/MASKeyCodes.h b/Framework/MASKeyCodes.h
index 69b2a97..9fb5b02 100644
--- a/Framework/MASKeyCodes.h
+++ b/Framework/MASKeyCodes.h
@@ -21,3 +21,22 @@ enum {
kMASShortcutGlyphNorthwestArrow = 0x2196,
kMASShortcutGlyphSoutheastArrow = 0x2198,
} MASShortcutGlyph;
+
+NS_INLINE NSString* NSStringFromMASKeyCode(unsigned short ch)
+{
+ return [NSString stringWithFormat:@"%C", ch];
+}
+
+NS_INLINE NSUInteger MASPickCocoaModifiers(NSUInteger flags)
+{
+ return (flags & (NSControlKeyMask | NSShiftKeyMask | NSAlternateKeyMask | NSCommandKeyMask));
+}
+
+NS_INLINE UInt32 MASCarbonModifiersFromCocoaModifiers(NSUInteger cocoaFlags)
+{
+ return
+ (cocoaFlags & NSCommandKeyMask ? cmdKey : 0)
+ | (cocoaFlags & NSAlternateKeyMask ? optionKey : 0)
+ | (cocoaFlags & NSControlKeyMask ? controlKey : 0)
+ | (cocoaFlags & NSShiftKeyMask ? shiftKey : 0);
+}
diff --git a/Framework/MASShortcut.h b/Framework/MASShortcut.h
index f1e489c..b7ed55c 100644
--- a/Framework/MASShortcut.h
+++ b/Framework/MASShortcut.h
@@ -1,14 +1,4 @@
#import "MASKeyCodes.h"
-#import <AppKit/AppKit.h>
-
-#define MASShortcutChar(char) [NSString stringWithFormat:@"%C", (unsigned short)(char)]
-#define MASShortcutClear(flags) (flags & (NSControlKeyMask | NSShiftKeyMask | NSAlternateKeyMask | NSCommandKeyMask))
-#define MASShortcutCarbonFlags(cocoaFlags) (\
- (cocoaFlags & NSCommandKeyMask ? cmdKey : 0) | \
- (cocoaFlags & NSAlternateKeyMask ? optionKey : 0) | \
- (cocoaFlags & NSControlKeyMask ? controlKey : 0) | \
- (cocoaFlags & NSShiftKeyMask ? shiftKey : 0))
-
@interface MASShortcut : NSObject <NSSecureCoding>
diff --git a/Framework/MASShortcut.m b/Framework/MASShortcut.m
index ccc2035..3e1e498 100644
--- a/Framework/MASShortcut.m
+++ b/Framework/MASShortcut.m
@@ -40,7 +40,7 @@ NSString *const MASShortcutModifierFlags = @"ModifierFlags";
self = [super init];
if (self) {
_keyCode = code;
- _modifierFlags = MASShortcutClear(flags);
+ _modifierFlags = MASPickCocoaModifiers(flags);
}
return self;
}
@@ -70,7 +70,7 @@ NSString *const MASShortcutModifierFlags = @"ModifierFlags";
- (void)setModifierFlags:(NSUInteger)value
{
- _modifierFlags = MASShortcutClear(value);
+ _modifierFlags = MASPickCocoaModifiers(value);
}
- (UInt32)carbonKeyCode
@@ -80,7 +80,7 @@ NSString *const MASShortcutModifierFlags = @"ModifierFlags";
- (UInt32)carbonFlags
{
- return MASShortcutCarbonFlags(self.modifierFlags);
+ return MASCarbonModifiersFromCocoaModifiers(self.modifierFlags);
}
- (NSString *)description
@@ -93,27 +93,27 @@ NSString *const MASShortcutModifierFlags = @"ModifierFlags";
NSString *keyCodeString = self.keyCodeString;
if (keyCodeString.length > 1) {
switch (self.keyCode) {
- case kVK_F1: return MASShortcutChar(0xF704);
- case kVK_F2: return MASShortcutChar(0xF705);
- case kVK_F3: return MASShortcutChar(0xF706);
- case kVK_F4: return MASShortcutChar(0xF707);
- case kVK_F5: return MASShortcutChar(0xF708);
- case kVK_F6: return MASShortcutChar(0xF709);
- case kVK_F7: return MASShortcutChar(0xF70a);
- case kVK_F8: return MASShortcutChar(0xF70b);
- case kVK_F9: return MASShortcutChar(0xF70c);
- case kVK_F10: return MASShortcutChar(0xF70d);
- case kVK_F11: return MASShortcutChar(0xF70e);
- case kVK_F12: return MASShortcutChar(0xF70f);
+ case kVK_F1: return NSStringFromMASKeyCode(0xF704);
+ case kVK_F2: return NSStringFromMASKeyCode(0xF705);
+ case kVK_F3: return NSStringFromMASKeyCode(0xF706);
+ case kVK_F4: return NSStringFromMASKeyCode(0xF707);
+ case kVK_F5: return NSStringFromMASKeyCode(0xF708);
+ case kVK_F6: return NSStringFromMASKeyCode(0xF709);
+ case kVK_F7: return NSStringFromMASKeyCode(0xF70a);
+ case kVK_F8: return NSStringFromMASKeyCode(0xF70b);
+ case kVK_F9: return NSStringFromMASKeyCode(0xF70c);
+ case kVK_F10: return NSStringFromMASKeyCode(0xF70d);
+ case kVK_F11: return NSStringFromMASKeyCode(0xF70e);
+ case kVK_F12: return NSStringFromMASKeyCode(0xF70f);
// From this point down I am guessing F13 etc come sequentially, I don't have a keyboard to test.
- case kVK_F13: return MASShortcutChar(0xF710);
- case kVK_F14: return MASShortcutChar(0xF711);
- case kVK_F15: return MASShortcutChar(0xF712);
- case kVK_F16: return MASShortcutChar(0xF713);
- case kVK_F17: return MASShortcutChar(0xF714);
- case kVK_F18: return MASShortcutChar(0xF715);
- case kVK_F19: return MASShortcutChar(0xF716);
- case kVK_Space: return MASShortcutChar(0x20);
+ case kVK_F13: return NSStringFromMASKeyCode(0xF710);
+ case kVK_F14: return NSStringFromMASKeyCode(0xF711);
+ case kVK_F15: return NSStringFromMASKeyCode(0xF712);
+ case kVK_F16: return NSStringFromMASKeyCode(0xF713);
+ case kVK_F17: return NSStringFromMASKeyCode(0xF714);
+ case kVK_F18: return NSStringFromMASKeyCode(0xF715);
+ case kVK_F19: return NSStringFromMASKeyCode(0xF716);
+ case kVK_Space: return NSStringFromMASKeyCode(0x20);
default: return @"";
}
}
@@ -145,18 +145,18 @@ NSString *const MASShortcutModifierFlags = @"ModifierFlags";
case kVK_F18: return @"F18";
case kVK_F19: return @"F19";
case kVK_Space: return NSLocalizedString(@"Space", @"Shortcut glyph name for SPACE key");
- case kVK_Escape: return MASShortcutChar(kMASShortcutGlyphEscape);
- case kVK_Delete: return MASShortcutChar(kMASShortcutGlyphDeleteLeft);
- case kVK_ForwardDelete: return MASShortcutChar(kMASShortcutGlyphDeleteRight);
- case kVK_LeftArrow: return MASShortcutChar(kMASShortcutGlyphLeftArrow);
- case kVK_RightArrow: return MASShortcutChar(kMASShortcutGlyphRightArrow);
- case kVK_UpArrow: return MASShortcutChar(kMASShortcutGlyphUpArrow);
- case kVK_DownArrow: return MASShortcutChar(kMASShortcutGlyphDownArrow);
- case kVK_Help: return MASShortcutChar(kMASShortcutGlyphHelp);
- case kVK_PageUp: return MASShortcutChar(kMASShortcutGlyphPageUp);
- case kVK_PageDown: return MASShortcutChar(kMASShortcutGlyphPageDown);
- case kVK_Tab: return MASShortcutChar(kMASShortcutGlyphTabRight);
- case kVK_Return: return MASShortcutChar(kMASShortcutGlyphReturnR2L);
+ case kVK_Escape: return NSStringFromMASKeyCode(kMASShortcutGlyphEscape);
+ case kVK_Delete: return NSStringFromMASKeyCode(kMASShortcutGlyphDeleteLeft);
+ case kVK_ForwardDelete: return NSStringFromMASKeyCode(kMASShortcutGlyphDeleteRight);
+ case kVK_LeftArrow: return NSStringFromMASKeyCode(kMASShortcutGlyphLeftArrow);
+ case kVK_RightArrow: return NSStringFromMASKeyCode(kMASShortcutGlyphRightArrow);
+ case kVK_UpArrow: return NSStringFromMASKeyCode(kMASShortcutGlyphUpArrow);
+ case kVK_DownArrow: return NSStringFromMASKeyCode(kMASShortcutGlyphDownArrow);
+ case kVK_Help: return NSStringFromMASKeyCode(kMASShortcutGlyphHelp);
+ case kVK_PageUp: return NSStringFromMASKeyCode(kMASShortcutGlyphPageUp);
+ case kVK_PageDown: return NSStringFromMASKeyCode(kMASShortcutGlyphPageDown);
+ case kVK_Tab: return NSStringFromMASKeyCode(kMASShortcutGlyphTabRight);
+ case kVK_Return: return NSStringFromMASKeyCode(kMASShortcutGlyphReturnR2L);
// Keypad
case kVK_ANSI_Keypad0: return @"0";
@@ -172,15 +172,15 @@ NSString *const MASShortcutModifierFlags = @"ModifierFlags";
case kVK_ANSI_KeypadDecimal: return @".";
case kVK_ANSI_KeypadMultiply: return @"*";
case kVK_ANSI_KeypadPlus: return @"+";
- case kVK_ANSI_KeypadClear: return MASShortcutChar(kMASShortcutGlyphPadClear);
+ case kVK_ANSI_KeypadClear: return NSStringFromMASKeyCode(kMASShortcutGlyphPadClear);
case kVK_ANSI_KeypadDivide: return @"/";
- case kVK_ANSI_KeypadEnter: return MASShortcutChar(kMASShortcutGlyphReturn);
+ case kVK_ANSI_KeypadEnter: return NSStringFromMASKeyCode(kMASShortcutGlyphReturn);
case kVK_ANSI_KeypadMinus: return @"–";
case kVK_ANSI_KeypadEquals: return @"=";
// Hardcode
- case 119: return MASShortcutChar(kMASShortcutGlyphSoutheastArrow);
- case 115: return MASShortcutChar(kMASShortcutGlyphNorthwestArrow);
+ case 119: return NSStringFromMASKeyCode(kMASShortcutGlyphSoutheastArrow);
+ case 115: return NSStringFromMASKeyCode(kMASShortcutGlyphNorthwestArrow);
}
// Everything else should be printable so look it up in the current keyboard
@@ -294,13 +294,13 @@ BOOL MASShortcutAllowsAnyHotkeyWithOptionModifier = NO;
for (NSMenuItem *menuItem in menu.itemArray) {
if (menuItem.hasSubmenu && [self isKeyEquivalent:keyEquivalent flags:flags takenInMenu:menuItem.submenu error:outError]) return YES;
- BOOL equalFlags = (MASShortcutClear(menuItem.keyEquivalentModifierMask) == flags);
+ BOOL equalFlags = (MASPickCocoaModifiers(menuItem.keyEquivalentModifierMask) == flags);
BOOL equalHotkeyLowercase = [menuItem.keyEquivalent.lowercaseString isEqualToString:keyEquivalent];
// Check if the cases are different, we know ours is lower and that shift is included in our modifiers
// If theirs is capitol, we need to add shift to their modifiers
if (equalHotkeyLowercase && ![menuItem.keyEquivalent isEqualToString:keyEquivalent]) {
- equalFlags = (MASShortcutClear(menuItem.keyEquivalentModifierMask | NSShiftKeyMask) == flags);
+ equalFlags = (MASPickCocoaModifiers(menuItem.keyEquivalentModifierMask | NSShiftKeyMask) == flags);
}
if (equalFlags && equalHotkeyLowercase) {
diff --git a/Framework/MASShortcutView.h b/Framework/MASShortcutView.h
index c8a46bb..9f94bf5 100644
--- a/Framework/MASShortcutView.h
+++ b/Framework/MASShortcutView.h
@@ -1,5 +1,3 @@
-#import <AppKit/AppKit.h>
-
@class MASShortcut;
typedef enum {
diff --git a/Framework/MASShortcutView.m b/Framework/MASShortcutView.m
index dd75729..0212271 100644
--- a/Framework/MASShortcutView.m
+++ b/Framework/MASShortcutView.m
@@ -192,7 +192,7 @@
- (void)drawRect:(CGRect)dirtyRect
{
if (self.shortcutValue) {
- [self drawInRect:self.bounds withTitle:MASShortcutChar(self.recording ? kMASShortcutGlyphEscape : kMASShortcutGlyphDeleteLeft)
+ [self drawInRect:self.bounds withTitle:NSStringFromMASKeyCode(self.recording ? kMASShortcutGlyphEscape : kMASShortcutGlyphDeleteLeft)
alignment:NSRightTextAlignment state:NSOffState];
CGRect shortcutRect;
@@ -209,7 +209,7 @@
else {
if (self.recording)
{
- [self drawInRect:self.bounds withTitle:MASShortcutChar(kMASShortcutGlyphEscape) alignment:NSRightTextAlignment state:NSOffState];
+ [self drawInRect:self.bounds withTitle:NSStringFromMASKeyCode(kMASShortcutGlyphEscape) alignment:NSRightTextAlignment state:NSOffState];
CGRect shortcutRect;
[self getShortcutRect:&shortcutRect hintRect:NULL];
diff --git a/Framework/Prefix.pch b/Framework/Prefix.pch
new file mode 100644
index 0000000..7f2c544
--- /dev/null
+++ b/Framework/Prefix.pch
@@ -0,0 +1 @@
+#import <AppKit/AppKit.h>