diff --git a/PTHotKey-Info.plist b/PTHotKey-Info.plist index a90bc5da..6fbff80f 100644 --- a/PTHotKey-Info.plist +++ b/PTHotKey-Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.kulakov.PTHotKey + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType diff --git a/PTHotKey/PTHotKey+ShortcutRecorder.m b/PTHotKey/PTHotKey+ShortcutRecorder.m index e466469a..2e5ab9da 100644 --- a/PTHotKey/PTHotKey+ShortcutRecorder.m +++ b/PTHotKey/PTHotKey+ShortcutRecorder.m @@ -7,7 +7,7 @@ // #import "PTHotKey+ShortcutRecorder.h" -#import "SRRecorderControl.h" +#import @implementation PTHotKey (ShortcutRecorder) diff --git a/PTHotKey/PTHotKeyCenter.m b/PTHotKey/PTHotKeyCenter.m index 43d12bb8..b9de5d80 100644 --- a/PTHotKey/PTHotKeyCenter.m +++ b/PTHotKey/PTHotKeyCenter.m @@ -212,7 +212,7 @@ - (void)sendEvent: (NSEvent*)event short subType; EventHotKeyRef carbonHotKey; - if( [event type] == NSSystemDefined ) + if( [event type] == NSEventTypeSystemDefined ) { subType = [event subtype]; diff --git a/PTHotKey/PTKeyCombo.m b/PTHotKey/PTKeyCombo.m index 0f4831b5..08603084 100644 --- a/PTHotKey/PTKeyCombo.m +++ b/PTHotKey/PTKeyCombo.m @@ -49,7 +49,7 @@ - (id)initWithKeyCode: (NSInteger)keyCode modifiers: (NSUInteger)modifiers case kVK_F18: case kVK_F19: case kVK_F20: - mModifiers = modifiers | NSFunctionKeyMask; + mModifiers = modifiers | NSEventModifierFlagFunction; break; default: mModifiers = modifiers; @@ -234,10 +234,10 @@ - (NSUInteger)modifierMask static NSUInteger modToChar[4][2] = { - { cmdKey, NSCommandKeyMask }, - { optionKey, NSAlternateKeyMask }, - { controlKey, NSControlKeyMask }, - { shiftKey, NSShiftKeyMask } + { cmdKey, NSEventModifierFlagCommand }, + { optionKey, NSEventModifierFlagOption }, + { controlKey, NSEventModifierFlagControl }, + { shiftKey, NSEventModifierFlagShift } }; NSUInteger i, ret = 0; @@ -264,7 +264,7 @@ - (NSString*)description } else { - desc = NSLocalizedString( @"(None)", @"Hot Keys: Key Combo text for 'empty' combo" ); + desc = @"(None)"; } return desc; diff --git a/PTKeyCodes.plist b/PTKeyCodes.plist new file mode 100644 index 00000000..86589160 --- /dev/null +++ b/PTKeyCodes.plist @@ -0,0 +1,96 @@ + + + + + padKeyString + Pad + padKeys + + 65 + 67 + 69 + 75 + 78 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 91 + 92 + + unmappedKeys + + 100 + F8 + 101 + F9 + 103 + F11 + 105 + F13 + 107 + F14 + 109 + F10 + 111 + F12 + 113 + F15 + 114 + Ins + 115 + Home + 116 + Page Up + 117 + Del + 118 + F4 + 119 + End + 120 + F2 + 121 + Page Down + 122 + F1 + 123 + Left Arrow + 124 + Right Arrow + 125 + Down Arrow + 126 + Up Arrow + 36 + Return + 48 + Tab + 49 + Space + 51 + Backspace + 53 + ESC + 71 + Clear + 76 + Pad Enter + 96 + F5 + 97 + F6 + 98 + F7 + 99 + F3 + + version + 1 + + diff --git a/Resources/ca.lproj/ShortcutRecorder.strings b/Resources/ca.lproj/ShortcutRecorder.strings deleted file mode 100644 index 6cd82204..00000000 Binary files a/Resources/ca.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/cs.lproj/ShortcutRecorder.strings b/Resources/cs.lproj/ShortcutRecorder.strings deleted file mode 100644 index 5202df6b..00000000 Binary files a/Resources/cs.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/da.lproj/ShortcutRecorder.strings b/Resources/da.lproj/ShortcutRecorder.strings deleted file mode 100644 index db3986a9..00000000 Binary files a/Resources/da.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/de.lproj/ShortcutRecorder.strings b/Resources/de.lproj/ShortcutRecorder.strings deleted file mode 100644 index ee3c980a..00000000 Binary files a/Resources/de.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/el.lproj/ShortcutRecorder.strings b/Resources/el.lproj/ShortcutRecorder.strings deleted file mode 100644 index dc8c8665..00000000 Binary files a/Resources/el.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/en.lproj/ShortcutRecorder.strings b/Resources/en.lproj/ShortcutRecorder.strings deleted file mode 100644 index 641e730c..00000000 Binary files a/Resources/en.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/es-MX.lproj/ShortcutRecorder.strings b/Resources/es-MX.lproj/ShortcutRecorder.strings deleted file mode 100644 index 6412e1ef..00000000 Binary files a/Resources/es-MX.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/es.lproj/ShortcutRecorder.strings b/Resources/es.lproj/ShortcutRecorder.strings deleted file mode 100644 index 81e155aa..00000000 Binary files a/Resources/es.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/fr.lproj/ShortcutRecorder.strings b/Resources/fr.lproj/ShortcutRecorder.strings deleted file mode 100644 index 918d17c0..00000000 Binary files a/Resources/fr.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/it.lproj/ShortcutRecorder.strings b/Resources/it.lproj/ShortcutRecorder.strings deleted file mode 100644 index 708c410b..00000000 Binary files a/Resources/it.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/ja.lproj/ShortcutRecorder.strings b/Resources/ja.lproj/ShortcutRecorder.strings deleted file mode 100644 index d5251711..00000000 Binary files a/Resources/ja.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/ko.lproj/ShortcutRecorder.strings b/Resources/ko.lproj/ShortcutRecorder.strings deleted file mode 100644 index a9b13144..00000000 Binary files a/Resources/ko.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/nb.lproj/ShortcutRecorder.strings b/Resources/nb.lproj/ShortcutRecorder.strings deleted file mode 100644 index ab390424..00000000 Binary files a/Resources/nb.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/nl.lproj/ShortcutRecorder.strings b/Resources/nl.lproj/ShortcutRecorder.strings deleted file mode 100644 index 369c0971..00000000 Binary files a/Resources/nl.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/pl.lproj/ShortcutRecorder.strings b/Resources/pl.lproj/ShortcutRecorder.strings deleted file mode 100644 index 8ace441d..00000000 Binary files a/Resources/pl.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/pt-BR.lproj/ShortcutRecorder.strings b/Resources/pt-BR.lproj/ShortcutRecorder.strings deleted file mode 100644 index 1da231a2..00000000 Binary files a/Resources/pt-BR.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/pt.lproj/ShortcutRecorder.strings b/Resources/pt.lproj/ShortcutRecorder.strings deleted file mode 100644 index 38bf326c..00000000 Binary files a/Resources/pt.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/ro.lproj/ShortcutRecorder.strings b/Resources/ro.lproj/ShortcutRecorder.strings deleted file mode 100644 index 16c56963..00000000 Binary files a/Resources/ro.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/ru.lproj/ShortcutRecorder.strings b/Resources/ru.lproj/ShortcutRecorder.strings deleted file mode 100644 index 1a9abbf1..00000000 Binary files a/Resources/ru.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-blue-highlighted-left.png b/Resources/shortcut-recorder-bezel-blue-highlighted-left.png deleted file mode 100644 index eaadfb53..00000000 Binary files a/Resources/shortcut-recorder-bezel-blue-highlighted-left.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-blue-highlighted-left@2x.png b/Resources/shortcut-recorder-bezel-blue-highlighted-left@2x.png deleted file mode 100644 index 885f1460..00000000 Binary files a/Resources/shortcut-recorder-bezel-blue-highlighted-left@2x.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-blue-highlighted-middle.png b/Resources/shortcut-recorder-bezel-blue-highlighted-middle.png deleted file mode 100644 index 73f9a564..00000000 Binary files a/Resources/shortcut-recorder-bezel-blue-highlighted-middle.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-blue-highlighted-middle@2x.png b/Resources/shortcut-recorder-bezel-blue-highlighted-middle@2x.png deleted file mode 100644 index 89eeb2c3..00000000 Binary files a/Resources/shortcut-recorder-bezel-blue-highlighted-middle@2x.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-blue-highlighted-right.png b/Resources/shortcut-recorder-bezel-blue-highlighted-right.png deleted file mode 100644 index 7bf420a5..00000000 Binary files a/Resources/shortcut-recorder-bezel-blue-highlighted-right.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-blue-highlighted-right@2x.png b/Resources/shortcut-recorder-bezel-blue-highlighted-right@2x.png deleted file mode 100644 index 0cf0f266..00000000 Binary files a/Resources/shortcut-recorder-bezel-blue-highlighted-right@2x.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-editing-left.png b/Resources/shortcut-recorder-bezel-editing-left.png deleted file mode 100644 index 93034786..00000000 Binary files a/Resources/shortcut-recorder-bezel-editing-left.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-editing-left@2x.png b/Resources/shortcut-recorder-bezel-editing-left@2x.png deleted file mode 100644 index 3b328398..00000000 Binary files a/Resources/shortcut-recorder-bezel-editing-left@2x.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-editing-middle.png b/Resources/shortcut-recorder-bezel-editing-middle.png deleted file mode 100644 index 63a91f2c..00000000 Binary files a/Resources/shortcut-recorder-bezel-editing-middle.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-editing-middle@2x.png b/Resources/shortcut-recorder-bezel-editing-middle@2x.png deleted file mode 100644 index 5c79fa6d..00000000 Binary files a/Resources/shortcut-recorder-bezel-editing-middle@2x.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-editing-right.png b/Resources/shortcut-recorder-bezel-editing-right.png deleted file mode 100644 index f725ae24..00000000 Binary files a/Resources/shortcut-recorder-bezel-editing-right.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-editing-right@2x.png b/Resources/shortcut-recorder-bezel-editing-right@2x.png deleted file mode 100644 index a70597d9..00000000 Binary files a/Resources/shortcut-recorder-bezel-editing-right@2x.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-left.png b/Resources/shortcut-recorder-bezel-graphite-highlight-mask-left.png deleted file mode 100644 index eaadfb53..00000000 Binary files a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-left.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-left@2x.png b/Resources/shortcut-recorder-bezel-graphite-highlight-mask-left@2x.png deleted file mode 100644 index 885f1460..00000000 Binary files a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-left@2x.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-middle.png b/Resources/shortcut-recorder-bezel-graphite-highlight-mask-middle.png deleted file mode 100644 index 73f9a564..00000000 Binary files a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-middle.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-middle@2x.png b/Resources/shortcut-recorder-bezel-graphite-highlight-mask-middle@2x.png deleted file mode 100644 index 89eeb2c3..00000000 Binary files a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-middle@2x.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-right.png b/Resources/shortcut-recorder-bezel-graphite-highlight-mask-right.png deleted file mode 100644 index 7bf420a5..00000000 Binary files a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-right.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-right@2x.png b/Resources/shortcut-recorder-bezel-graphite-highlight-mask-right@2x.png deleted file mode 100644 index 0cf0f266..00000000 Binary files a/Resources/shortcut-recorder-bezel-graphite-highlight-mask-right@2x.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-left.png b/Resources/shortcut-recorder-bezel-left.png deleted file mode 100644 index cc85dae3..00000000 Binary files a/Resources/shortcut-recorder-bezel-left.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-left@2x.png b/Resources/shortcut-recorder-bezel-left@2x.png deleted file mode 100644 index b06b7c35..00000000 Binary files a/Resources/shortcut-recorder-bezel-left@2x.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-middle.png b/Resources/shortcut-recorder-bezel-middle.png deleted file mode 100644 index 55d236a3..00000000 Binary files a/Resources/shortcut-recorder-bezel-middle.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-middle@2x.png b/Resources/shortcut-recorder-bezel-middle@2x.png deleted file mode 100644 index 8d7c2c24..00000000 Binary files a/Resources/shortcut-recorder-bezel-middle@2x.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-right.png b/Resources/shortcut-recorder-bezel-right.png deleted file mode 100644 index 5414d0e9..00000000 Binary files a/Resources/shortcut-recorder-bezel-right.png and /dev/null differ diff --git a/Resources/shortcut-recorder-bezel-right@2x.png b/Resources/shortcut-recorder-bezel-right@2x.png deleted file mode 100644 index c9b63ef5..00000000 Binary files a/Resources/shortcut-recorder-bezel-right@2x.png and /dev/null differ diff --git a/Resources/sk.lproj/ShortcutRecorder.strings b/Resources/sk.lproj/ShortcutRecorder.strings deleted file mode 100644 index c38cac38..00000000 Binary files a/Resources/sk.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/sv.lproj/ShortcutRecorder.strings b/Resources/sv.lproj/ShortcutRecorder.strings deleted file mode 100644 index 50f85f98..00000000 Binary files a/Resources/sv.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/th.lproj/ShortcutRecorder.strings b/Resources/th.lproj/ShortcutRecorder.strings deleted file mode 100644 index 2d78c1dd..00000000 Binary files a/Resources/th.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/zh-Hans.lproj/ShortcutRecorder.strings b/Resources/zh-Hans.lproj/ShortcutRecorder.strings deleted file mode 100644 index e71821d2..00000000 Binary files a/Resources/zh-Hans.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/Resources/zh-Hant.lproj/ShortcutRecorder.strings b/Resources/zh-Hant.lproj/ShortcutRecorder.strings deleted file mode 100644 index 0d544374..00000000 Binary files a/Resources/zh-Hant.lproj/ShortcutRecorder.strings and /dev/null differ diff --git a/SRCommon.h b/SRCommon.h index 6a0eeecd..a2919cf2 100644 --- a/SRCommon.h +++ b/SRCommon.h @@ -20,13 +20,18 @@ /*! @brief Mask representing subset of Cocoa modifier flags suitable for shortcuts. */ -static const NSUInteger SRCocoaModifierFlagsMask = NSCommandKeyMask | NSAlternateKeyMask | NSShiftKeyMask | NSControlKeyMask; +static const NSUInteger SRCocoaModifierFlagsMask = NSEventModifierFlagCommand | NSEventModifierFlagOption | NSEventModifierFlagShift | NSEventModifierFlagControl; /*! @brief Mask representing subset of Carbon modifier flags suitable for shortcuts. */ static const NSUInteger SRCarbonModifierFlagsMask = cmdKey | optionKey | shiftKey | controlKey; +/*! + @brief Bundle identifier for ShortcutRecorder library +*/ +static NSString* SRBundleIdentifier = @"com.kulakov.ShortcutRecorder"; + /*! @brief Converts carbon modifier flags to cocoa. @@ -36,16 +41,16 @@ FOUNDATION_STATIC_INLINE NSUInteger SRCarbonToCocoaFlags(UInt32 aCarbonFlags) NSUInteger cocoaFlags = 0; if (aCarbonFlags & cmdKey) - cocoaFlags |= NSCommandKeyMask; + cocoaFlags |= NSEventModifierFlagCommand; if (aCarbonFlags & optionKey) - cocoaFlags |= NSAlternateKeyMask; + cocoaFlags |= NSEventModifierFlagOption; if (aCarbonFlags & controlKey) - cocoaFlags |= NSControlKeyMask; + cocoaFlags |= NSEventModifierFlagControl; if (aCarbonFlags & shiftKey) - cocoaFlags |= NSShiftKeyMask; + cocoaFlags |= NSEventModifierFlagShift; return cocoaFlags; } @@ -57,16 +62,16 @@ FOUNDATION_STATIC_INLINE UInt32 SRCocoaToCarbonFlags(NSUInteger aCocoaFlags) { UInt32 carbonFlags = 0; - if (aCocoaFlags & NSCommandKeyMask) + if (aCocoaFlags & NSEventModifierFlagCommand) carbonFlags |= cmdKey; - if (aCocoaFlags & NSAlternateKeyMask) + if (aCocoaFlags & NSEventModifierFlagOption) carbonFlags |= optionKey; - if (aCocoaFlags & NSControlKeyMask) + if (aCocoaFlags & NSEventModifierFlagControl) carbonFlags |= controlKey; - if (aCocoaFlags & NSShiftKeyMask) + if (aCocoaFlags & NSEventModifierFlagShift) carbonFlags |= shiftKey; return carbonFlags; @@ -77,10 +82,18 @@ FOUNDATION_STATIC_INLINE UInt32 SRCocoaToCarbonFlags(NSUInteger aCocoaFlags) */ FOUNDATION_STATIC_INLINE NSString *SRLoc(NSString *aKey) { +#ifdef SRLib + NSString* result = NSLocalizedStringFromTable(aKey, + @"ShortcutRecorder", + nil); + NSCParameterAssert(result); + return result; +#else return NSLocalizedStringFromTableInBundle(aKey, @"ShortcutRecorder", [NSBundle bundleWithIdentifier:@"com.kulakov.ShortcutRecorder"], nil); +#endif } @@ -89,12 +102,18 @@ FOUNDATION_STATIC_INLINE NSString *SRLoc(NSString *aKey) */ FOUNDATION_STATIC_INLINE NSImage *SRImage(NSString *anImageName) { +#ifdef SRLib + NSImage* image = [[NSBundle mainBundle] imageForResource:anImageName]; + NSCParameterAssert(image); + return image; +#else NSBundle *b = [NSBundle bundleWithIdentifier:@"com.kulakov.ShortcutRecorder"]; if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_6) return [[NSImage alloc] initByReferencingURL:[b URLForImageResource:anImageName]]; else return [b imageForResource:anImageName]; +#endif } diff --git a/SRCommon.m b/SRCommon.m index 237d4f07..126fdfc1 100644 --- a/SRCommon.m +++ b/SRCommon.m @@ -25,12 +25,24 @@ if (![t isKeyCodeSpecial:aKeyCode]) c = [c uppercaseString]; - return [NSString stringWithFormat:@"%@%@%@%@%@", - (aModifierFlags & NSCommandKeyMask ? SRLoc(@"Command-") : @""), - (aModifierFlags & NSAlternateKeyMask ? SRLoc(@"Option-") : @""), - (aModifierFlags & NSControlKeyMask ? SRLoc(@"Control-") : @""), - (aModifierFlags & NSShiftKeyMask ? SRLoc(@"Shift-") : @""), - c]; + return [NSString stringWithFormat:@"%@%@%@%@%@", + (aModifierFlags & NSEventModifierFlagCommand ? NSLocalizedStringFromTableInBundle(@"Command-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil) : @""), + (aModifierFlags & NSEventModifierFlagOption ? NSLocalizedStringFromTableInBundle(@"Option-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil) : @""), + (aModifierFlags & NSEventModifierFlagControl ? NSLocalizedStringFromTableInBundle(@"Control-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil) : @""), + (aModifierFlags & NSEventModifierFlagShift ? NSLocalizedStringFromTableInBundle(@"Shift-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil) : @""), + c]; } @@ -43,9 +55,21 @@ c = [c uppercaseString]; return [NSString stringWithFormat:@"%@%@%@%@%@", - (aModifierFlags & NSCommandKeyMask ? SRLoc(@"Command-") : @""), - (aModifierFlags & NSAlternateKeyMask ? SRLoc(@"Option-") : @""), - (aModifierFlags & NSControlKeyMask ? SRLoc(@"Control-") : @""), - (aModifierFlags & NSShiftKeyMask ? SRLoc(@"Shift-") : @""), + (aModifierFlags & NSEventModifierFlagCommand ? NSLocalizedStringFromTableInBundle(@"Command-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil) : @""), + (aModifierFlags & NSEventModifierFlagOption ? NSLocalizedStringFromTableInBundle(@"Option-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil) : @""), + (aModifierFlags & NSEventModifierFlagControl ? NSLocalizedStringFromTableInBundle(@"Control-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil) : @""), + (aModifierFlags & NSEventModifierFlagShift ? NSLocalizedStringFromTableInBundle(@"Shift-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil) : @""), c]; } diff --git a/SRKeyCodeTransformer.h b/SRKeyCodeTransformer.h index a1e4724e..0b72979a 100644 --- a/SRKeyCodeTransformer.h +++ b/SRKeyCodeTransformer.h @@ -100,7 +100,7 @@ @brief These constants represents unicode characters for key codes that do not have appropriate constants in Carbon or Cocoa. */ -NS_ENUM(unichar, SRKeyCodeGlyph) +typedef NS_ENUM(unichar, SRKeyCodeGlyph) { SRKeyCodeGlyphRight = 0x21E5, SRKeyCodeGlyphReturn = 0x2305, diff --git a/SRKeyCodeTransformer.m b/SRKeyCodeTransformer.m index 24d95eba..4a79db04 100644 --- a/SRKeyCodeTransformer.m +++ b/SRKeyCodeTransformer.m @@ -169,7 +169,10 @@ + (NSDictionary *)specialKeyCodesToPlainStringsMapping @(kVK_F18): @"F18", @(kVK_F19): @"F19", @(kVK_F20): @"F20", - @(kVK_Space): SRLoc(@"Space"), + @(kVK_Space): NSLocalizedStringFromTableInBundle(@"Space", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil), @(kVK_Delete): _SRUnicharToString(SRKeyCodeGlyphDeleteLeft), @(kVK_ForwardDelete): _SRUnicharToString(SRKeyCodeGlyphDeleteRight), @(kVK_ANSI_KeypadClear): _SRUnicharToString(SRKeyCodeGlyphPadClear), @@ -278,7 +281,7 @@ - (NSString *)transformedValue:(NSNumber *)aValue withModifierFlags:(NSNumber *) if (self.usesASCIICapableKeyboardInputSource) { - TISInputSourceRef tisSource = TISCopyCurrentASCIICapableKeyboardInputSource(); + TISInputSourceRef tisSource = TISCopyCurrentASCIICapableKeyboardLayoutInputSource(); if (!tisSource) return @""; diff --git a/SRModifierFlagsTransformer.m b/SRModifierFlagsTransformer.m index 4e4720d0..bd874e53 100644 --- a/SRModifierFlagsTransformer.m +++ b/SRModifierFlagsTransformer.m @@ -77,17 +77,29 @@ - (NSString *)transformedValue:(NSNumber *)aValue NSUInteger modifierFlags = [aValue unsignedIntegerValue]; NSMutableString *s = [NSMutableString string]; - if (modifierFlags & NSControlKeyMask) - [s appendString:SRLoc(@"Control-")]; - - if (modifierFlags & NSAlternateKeyMask) - [s appendString:SRLoc(@"Option-")]; - - if (modifierFlags & NSShiftKeyMask) - [s appendString:SRLoc(@"Shift-")]; - - if (modifierFlags & NSCommandKeyMask) - [s appendString:SRLoc(@"Command-")]; + if (modifierFlags & NSEventModifierFlagControl) + [s appendString:NSLocalizedStringFromTableInBundle(@"Control-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil)]; + + if (modifierFlags & NSEventModifierFlagOption) + [s appendString:NSLocalizedStringFromTableInBundle(@"Option-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil)]; + + if (modifierFlags & NSEventModifierFlagShift) + [s appendString:NSLocalizedStringFromTableInBundle(@"Shift-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil)]; + + if (modifierFlags & NSEventModifierFlagCommand) + [s appendString:NSLocalizedStringFromTableInBundle(@"Command-", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil)]; if (s.length > 0) [s deleteCharactersInRange:NSMakeRange(s.length - 1, 1)]; @@ -98,10 +110,10 @@ - (NSString *)transformedValue:(NSNumber *)aValue { NSUInteger f = [aValue unsignedIntegerValue]; return [NSString stringWithFormat:@"%@%@%@%@", - (f & NSControlKeyMask ? @"⌃" : @""), - (f & NSAlternateKeyMask ? @"⌥" : @""), - (f & NSShiftKeyMask ? @"⇧" : @""), - (f & NSCommandKeyMask ? @"⌘" : @"")]; + (f & NSEventModifierFlagControl ? @"⌃" : @""), + (f & NSEventModifierFlagOption ? @"⌥" : @""), + (f & NSEventModifierFlagShift ? @"⇧" : @""), + (f & NSEventModifierFlagCommand ? @"⌘" : @"")]; } } diff --git a/SRRecorderControl.h b/SRRecorderControl.h index e1d4727a..1898a4b1 100755 --- a/SRRecorderControl.h +++ b/SRRecorderControl.h @@ -13,7 +13,7 @@ // Ilya Kulakov #import -#import +#import "SRCommon.h" /*! @@ -132,6 +132,12 @@ extern NSString *const SRShortcutCharactersIgnoringModifiers; */ @property (nonatomic, copy) NSDictionary *objectValue; +@property (nonatomic, copy) NSColor* labelColor; + +@property BOOL borderlessButton; + +@property float fontSize; + /*! @brief Configures recording behavior of the control. diff --git a/SRRecorderControl.m b/SRRecorderControl.m index 72ed69fd..8d7accb0 100755 --- a/SRRecorderControl.m +++ b/SRRecorderControl.m @@ -35,7 +35,7 @@ static const CGFloat _SRRecorderControlBottomShadowHeightInPixels = 1.0; -static const CGFloat _SRRecorderControlBaselineOffset = 5.0; +//static const CGFloat _SRRecorderControlBaselineOffset = 5.0; // Clear Button Layout Constants @@ -64,7 +64,7 @@ static const NSSize _SRRecorderControlSnapBackButtonSize = {.width = _SRRecorderControlSnapBackButtonWidth, .height = _SRRecorderControlSnapBackButtonHeight}; -static NSImage *_SRImages[16]; +static NSImage *_SRImages[4]; static NSUInteger _SRValueObservationContext; @@ -113,6 +113,8 @@ @implementation SRRecorderControl NSToolTipTag _snapBackButtonToolTipTag; NSMutableDictionary *_bindingInfo; + + BOOL _shouldDrawBackground; } - (instancetype)initWithFrame:(NSRect)aFrameRect @@ -130,6 +132,7 @@ - (instancetype)initWithFrame:(NSRect)aFrameRect _mouseTrackingButtonTag = _SRRecorderControlInvalidButtonTag; _snapBackButtonToolTipTag = NSIntegerMax; _bindingInfo = [NSMutableDictionary dictionary]; + _fontSize = 12.0; if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6) { @@ -146,7 +149,11 @@ - (instancetype)initWithFrame:(NSRect)aFrameRect forOrientation:NSLayoutConstraintOrientationVertical]; } - [self setToolTip:SRLoc(@"Click to record shortcut")]; + NSString* sgwaesf = NSLocalizedStringFromTableInBundle(@"+ Shortcut", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil); + [self setToolTip:sgwaesf]; [self updateTrackingAreas]; } @@ -226,10 +233,13 @@ - (BOOL)beginRecording _isRecording = YES; [self didChangeValueForKey:@"isRecording"]; - [self updateTrackingAreas]; - [self setToolTip:SRLoc(@"Type shortcut")]; - NSAccessibilityPostNotification(self, NSAccessibilityTitleChangedNotification); - return YES; + [self updateTrackingAreas]; + [self setToolTip:NSLocalizedStringFromTableInBundle(@"Type shortcut", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil)]; + NSAccessibilityPostNotification(self, NSAccessibilityTitleChangedNotification); + return YES; } - (void)endRecording @@ -271,8 +281,11 @@ - (void)endRecordingWithObjectValue:(NSDictionary *)anObjectValue self.objectValue = anObjectValue; [self updateTrackingAreas]; - [self setToolTip:SRLoc(@"Click to record shortcut")]; - [self setNeedsDisplay:YES]; + [self setToolTip:NSLocalizedStringFromTableInBundle(@"+ Shortcut", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil)]; + [self setNeedsDisplay:YES]; NSAccessibilityPostNotification(self, NSAccessibilityTitleChangedNotification); if (self.window.firstResponder == self && ![self canBecomeKeyView]) @@ -378,39 +391,51 @@ - (NSString *)label label = [[SRModifierFlagsTransformer sharedTransformer] transformedValue:@(modifierFlags)]; else label = self.stringValue; - - if (![label length]) - label = label = SRLoc(@"Type shortcut"); + + if (![label length]) + label = NSLocalizedStringFromTableInBundle(@"Type shortcut", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil); } else { - label = self.stringValue; - - if (![label length]) - label = SRLoc(@"Click to record shortcut"); + label = self.stringValue; + + if (![label length]) + label = NSLocalizedStringFromTableInBundle(@"+ Shortcut", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil); } - - return label; + + return label; } - (NSString *)accessibilityLabel { - NSString *label = nil; - - if (self.isRecording) - { - NSUInteger modifierFlags = [NSEvent modifierFlags] & self.allowedModifierFlags; - label = [[SRModifierFlagsTransformer sharedPlainTransformer] transformedValue:@(modifierFlags)]; - - if (![label length]) - label = SRLoc(@"Type shortcut"); - } + NSString *label = nil; + + if (self.isRecording) + { + NSUInteger modifierFlags = [NSEvent modifierFlags] & self.allowedModifierFlags; + label = [[SRModifierFlagsTransformer sharedPlainTransformer] transformedValue:@(modifierFlags)]; + + if (![label length]) + label = NSLocalizedStringFromTableInBundle(@"Type shortcut", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil); + } else { label = self.accessibilityStringValue; if (![label length]) - label = SRLoc(@"Click to record shortcut"); + label = NSLocalizedStringFromTableInBundle(@"+ Shortcut", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil); } return label; @@ -465,17 +490,24 @@ - (NSDictionary *)normalLabelAttributes { static dispatch_once_t OnceToken; static NSDictionary *NormalAttributes = nil; + static NSMutableParagraphStyle *p = nil; dispatch_once(&OnceToken, ^{ - NSMutableParagraphStyle *p = [[NSMutableParagraphStyle alloc] init]; - p.alignment = NSCenterTextAlignment; + p = [[NSMutableParagraphStyle alloc] init]; + p.alignment = NSTextAlignmentCenter; p.lineBreakMode = NSLineBreakByTruncatingTail; p.baseWritingDirection = NSWritingDirectionLeftToRight; - NormalAttributes = @{ - NSParagraphStyleAttributeName: [p copy], - NSFontAttributeName: [NSFont labelFontOfSize:[NSFont systemFontSize]], - NSForegroundColorAttributeName: [NSColor controlTextColor] - }; }); + + if ( !self.labelColor ) + { + _labelColor = [NSColor controlTextColor]; + } + + NormalAttributes = @{ + NSParagraphStyleAttributeName: p, + NSFontAttributeName: [NSFont labelFontOfSize:self.fontSize], + NSForegroundColorAttributeName:_labelColor + }; return NormalAttributes; } @@ -485,12 +517,12 @@ - (NSDictionary *)recordingLabelAttributes static NSDictionary *RecordingAttributes = nil; dispatch_once(&OnceToken, ^{ NSMutableParagraphStyle *p = [[NSMutableParagraphStyle alloc] init]; - p.alignment = NSCenterTextAlignment; + p.alignment = NSTextAlignmentCenter; p.lineBreakMode = NSLineBreakByTruncatingTail; p.baseWritingDirection = NSWritingDirectionLeftToRight; RecordingAttributes = @{ NSParagraphStyleAttributeName: [p copy], - NSFontAttributeName: [NSFont labelFontOfSize:[NSFont systemFontSize]], + NSFontAttributeName: [NSFont labelFontOfSize:self.fontSize], NSForegroundColorAttributeName: [NSColor disabledControlTextColor] }; }); @@ -506,57 +538,15 @@ - (void)drawBackground:(NSRect)aDirtyRect NSRect frame = self.bounds; frame.size.height = _SRRecorderControlHeight; - - if (self.isRecording) - { - NSDrawThreePartImage(frame, - _SRImages[3], - _SRImages[4], - _SRImages[5], - NO, - NSCompositeSourceOver, - 1.0, - self.isFlipped); - } - else - { - if (self.isMainButtonHighlighted) - { - if ([NSColor currentControlTint] == NSBlueControlTint) - { - NSDrawThreePartImage(frame, - _SRImages[0], - _SRImages[1], - _SRImages[2], - NO, - NSCompositeSourceOver, - 1.0, - self.isFlipped); - } - else - { - NSDrawThreePartImage(frame, - _SRImages[6], - _SRImages[7], - _SRImages[8], - NO, - NSCompositeSourceOver, - 1.0, - self.isFlipped); - } - } - else - { - NSDrawThreePartImage(frame, - _SRImages[9], - _SRImages[10], - _SRImages[11], - NO, - NSCompositeSourceOver, - 1.0, - self.isFlipped); - } - } + CGFloat corner = frame.size.height / 2; + frame = NSInsetRect(frame, 1, 1); + + NSBezierPath* path = [NSBezierPath bezierPathWithRoundedRect:frame xRadius:corner yRadius:corner]; + path.lineWidth = 1; + [[NSColor controlColor] setFill]; + [[NSColor grayColor] setStroke]; + [path fill]; + [path stroke]; [NSGraphicsContext restoreGraphicsState]; } @@ -601,16 +591,16 @@ - (void)drawSnapBackButton:(NSRect)aDirtyRect if (self.isSnapBackButtonHighlighted) { - [_SRImages[14] drawInRect:imageRect + [_SRImages[2] drawInRect:imageRect fromRect:NSZeroRect - operation:NSCompositeSourceOver + operation:NSCompositingOperationSourceOver fraction:1.0]; } else { - [_SRImages[15] drawInRect:imageRect + [_SRImages[3] drawInRect:imageRect fromRect:NSZeroRect - operation:NSCompositeSourceOver + operation:NSCompositingOperationSourceOver fraction:1.0]; } @@ -638,16 +628,16 @@ - (void)drawClearButton:(NSRect)aDirtyRect if (self.isClearButtonHighlighted) { - [_SRImages[12] drawInRect:imageRect + [_SRImages[0] drawInRect:imageRect fromRect:NSZeroRect - operation:NSCompositeSourceOver + operation:NSCompositingOperationSourceOver fraction:1.0]; } else { - [_SRImages[13] drawInRect:imageRect + [_SRImages[1] drawInRect:imageRect fromRect:NSZeroRect - operation:NSCompositeSourceOver + operation:NSCompositingOperationSourceOver fraction:1.0]; } @@ -851,7 +841,10 @@ - (void)unbind:(NSString *)aBinding - (NSString *)view:(NSView *)aView stringForToolTip:(NSToolTipTag)aTag point:(NSPoint)aPoint userData:(void *)aData { if (aTag == _snapBackButtonToolTipTag) - return SRLoc(@"Use old shortcut"); + return NSLocalizedStringFromTableInBundle(@"Use old shortcut", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil); else return [super view:aView stringForToolTip:aTag point:aPoint userData:aData]; } @@ -875,28 +868,20 @@ - (void)viewWillDraw static dispatch_once_t OnceToken; dispatch_once(&OnceToken, ^{ - _SRImages[0] = SRImage(@"shortcut-recorder-bezel-blue-highlighted-left"); - _SRImages[1] = SRImage(@"shortcut-recorder-bezel-blue-highlighted-middle"); - _SRImages[2] = SRImage(@"shortcut-recorder-bezel-blue-highlighted-right"); - _SRImages[3] = SRImage(@"shortcut-recorder-bezel-editing-left"); - _SRImages[4] = SRImage(@"shortcut-recorder-bezel-editing-middle"); - _SRImages[5] = SRImage(@"shortcut-recorder-bezel-editing-right"); - _SRImages[6] = SRImage(@"shortcut-recorder-bezel-graphite-highlight-mask-left"); - _SRImages[7] = SRImage(@"shortcut-recorder-bezel-graphite-highlight-mask-middle"); - _SRImages[8] = SRImage(@"shortcut-recorder-bezel-graphite-highlight-mask-right"); - _SRImages[9] = SRImage(@"shortcut-recorder-bezel-left"); - _SRImages[10] = SRImage(@"shortcut-recorder-bezel-middle"); - _SRImages[11] = SRImage(@"shortcut-recorder-bezel-right"); - _SRImages[12] = SRImage(@"shortcut-recorder-clear-highlighted"); - _SRImages[13] = SRImage(@"shortcut-recorder-clear"); - _SRImages[14] = SRImage(@"shortcut-recorder-snapback-highlighted"); - _SRImages[15] = SRImage(@"shortcut-recorder-snapback"); + _SRImages[0] = SRImage(@"shortcut-recorder-clear-highlighted"); + _SRImages[1] = SRImage(@"shortcut-recorder-clear"); + _SRImages[2] = SRImage(@"shortcut-recorder-snapback-highlighted"); + _SRImages[3] = SRImage(@"shortcut-recorder-snapback"); }); } - (void)drawRect:(NSRect)aDirtyRect { - [self drawBackground:aDirtyRect]; + if (_shouldDrawBackground || !_borderlessButton) + { + [self drawBackground:aDirtyRect]; + } + [self drawInterior:aDirtyRect]; if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_6) @@ -946,14 +931,20 @@ - (CGFloat)baselineOffsetFromBottom - (NSSize)intrinsicContentSize { - return NSMakeSize(NSWidth([self rectForLabel:SRLoc(@"Click to record shortcut") withAttributes:self.normalLabelAttributes]) + _SRRecorderControlShapeXRadius + _SRRecorderControlShapeXRadius, + return NSMakeSize(NSWidth([self rectForLabel:NSLocalizedStringFromTableInBundle(@"+ Shortcut", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil) withAttributes:self.normalLabelAttributes]) + _SRRecorderControlShapeXRadius + _SRRecorderControlShapeXRadius, _SRRecorderControlHeight); } - (void)updateTrackingAreas { - static const NSUInteger TrackingOptions = NSTrackingMouseEnteredAndExited | NSTrackingActiveWhenFirstResponder | NSTrackingEnabledDuringMouseDrag; - + NSUInteger TrackingOptions = NSTrackingMouseEnteredAndExited | NSTrackingActiveWhenFirstResponder | NSTrackingEnabledDuringMouseDrag; + + if (_borderlessButton) + TrackingOptions = NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways | NSTrackingEnabledDuringMouseDrag; + if (_mainButtonTrackingArea) [self removeTrackingArea:_mainButtonTrackingArea]; @@ -1087,8 +1078,11 @@ - (void)mouseDown:(NSEvent *)anEvent _mouseTrackingButtonTag = _SRRecorderControlMainButtonTag; [self setNeedsDisplay:YES]; } - - [super mouseDown:anEvent]; + else + { + [super mouseDown:anEvent]; + } + } - (void)mouseUp:(NSEvent *)anEvent @@ -1129,6 +1123,12 @@ - (void)mouseUp:(NSEvent *)anEvent - (void)mouseEntered:(NSEvent *)anEvent { + if (_borderlessButton) + { + _shouldDrawBackground = YES; + [self setNeedsDisplay:YES]; + } + if ((_mouseTrackingButtonTag == _SRRecorderControlMainButtonTag && anEvent.trackingArea == _mainButtonTrackingArea) || (_mouseTrackingButtonTag == _SRRecorderControlSnapBackButtonTag && anEvent.trackingArea == _snapBackButtonTrackingArea) || (_mouseTrackingButtonTag == _SRRecorderControlClearButtonTag && anEvent.trackingArea == _clearButtonTrackingArea)) @@ -1141,6 +1141,12 @@ - (void)mouseEntered:(NSEvent *)anEvent - (void)mouseExited:(NSEvent *)anEvent { + if (_borderlessButton) + { + _shouldDrawBackground = NO; + [self setNeedsDisplay:YES]; + } + if ((_mouseTrackingButtonTag == _SRRecorderControlMainButtonTag && anEvent.trackingArea == _mainButtonTrackingArea) || (_mouseTrackingButtonTag == _SRRecorderControlSnapBackButtonTag && anEvent.trackingArea == _snapBackButtonTrackingArea) || (_mouseTrackingButtonTag == _SRRecorderControlClearButtonTag && anEvent.trackingArea == _clearButtonTrackingArea)) diff --git a/SRValidator.m b/SRValidator.m index a9431ace..91623860 100644 --- a/SRValidator.m +++ b/SRValidator.m @@ -83,11 +83,17 @@ - (BOOL)isKeyCode:(unsigned short)aKeyCode andFlagTakenInDelegate:(NSUInteger)aF NSString *shortcut = isASCIIOnly ? SRReadableASCIIStringForCocoaModifierFlagsAndKeyCode(aFlags, aKeyCode) : SRReadableStringForCocoaModifierFlagsAndKeyCode(aFlags, aKeyCode); NSString *failureReason = [NSString stringWithFormat: - SRLoc(@"The key combination \"%@\" can't be used!"), + NSLocalizedStringFromTableInBundle(@"The key combination \"%@\" can't be used!", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil), shortcut]; - NSString *description = [NSString stringWithFormat: - SRLoc(@"The key combination \"%@\" can't be used because %@."), - shortcut, + NSString *description = [NSString stringWithFormat: + NSLocalizedStringFromTableInBundle(@"The key combination \"%@\" can't be used because %@.", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil), + shortcut, [delegateReason length] ? delegateReason : @"it's already used"]; NSDictionary *userInfo = @{ NSLocalizedFailureReasonErrorKey : failureReason, @@ -137,10 +143,16 @@ - (BOOL)isKeyCode:(unsigned short)aKeyCode andFlagsTakenInSystemShortcuts:(NSUIn NSString *shortcut = isASCIIOnly ? SRReadableASCIIStringForCocoaModifierFlagsAndKeyCode(aFlags, aKeyCode) : SRReadableStringForCocoaModifierFlagsAndKeyCode(aFlags, aKeyCode); NSString *failureReason = [NSString stringWithFormat: - SRLoc(@"The key combination \"%@\" can't be used!"), + NSLocalizedStringFromTableInBundle(@"The key combination \"%@\" can't be used!", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil), shortcut]; - NSString *description = [NSString stringWithFormat: - SRLoc(@"The key combination \"%@\" can't be used because it's already used by a system-wide keyboard shortcut. If you really want to use this key combination, most shortcuts can be changed in the Keyboard panel in System Preferences."), + NSString *description = [NSString stringWithFormat: + NSLocalizedStringFromTableInBundle(@"The key combination \"%@\" can't be used because it's already used by a system-wide keyboard shortcut. If you really want to use this key combination, most shortcuts can be changed in the Keyboard panel in System Preferences.", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil), shortcut]; NSDictionary *userInfo = @{ NSLocalizedFailureReasonErrorKey: failureReason, @@ -164,11 +176,11 @@ - (BOOL)isKeyCode:(unsigned short)aKeyCode andFlags:(NSUInteger)aFlags takenInMe NSString *keyCodeCurrentLayoutRepresentation = [[SRKeyCodeTransformer sharedTransformer] transformedValue:@(aKeyCode)]; // Shift flag may be set implicitly in key equivalent. - NSUInteger flagsWithoutShift = aFlags & ~NSShiftKeyMask; + NSUInteger flagsWithoutShift = aFlags & ~NSEventModifierFlagShift; NSString *keyCodeASCIIShiftedRepresentation = [[SRKeyCodeTransformer sharedASCIITransformer] transformedValue:@(aKeyCode) - withModifierFlags:@(NSShiftKeyMask)]; + withModifierFlags:@(NSEventModifierFlagShift)]; NSString *keyCodeCurrentLayoutShiftedRepresentation = [[SRKeyCodeTransformer sharedTransformer] transformedValue:@(aKeyCode) - withModifierFlags:@(NSShiftKeyMask)]; + withModifierFlags:@(NSEventModifierFlagShift)]; for (NSMenuItem *menuItem in [aMenu itemArray]) { @@ -184,8 +196,8 @@ - (BOOL)isKeyCode:(unsigned short)aKeyCode andFlags:(NSUInteger)aFlags takenInMe if ((keyEquivalentModifierMask == aFlags && [keyEquivalent isEqualToString:keyCodeASCIIRepresentation]) || (keyEquivalentModifierMask == aFlags && [keyEquivalent isEqualToString:keyCodeCurrentLayoutRepresentation]) || - (aFlags & NSShiftKeyMask && keyEquivalentModifierMask == flagsWithoutShift && [keyEquivalent isEqualToString:keyCodeASCIIShiftedRepresentation]) || - (aFlags & NSShiftKeyMask && keyEquivalentModifierMask == flagsWithoutShift && [keyEquivalent isEqualToString:keyCodeCurrentLayoutShiftedRepresentation])) + (aFlags & NSEventModifierFlagShift && keyEquivalentModifierMask == flagsWithoutShift && [keyEquivalent isEqualToString:keyCodeASCIIShiftedRepresentation]) || + (aFlags & NSEventModifierFlagShift && keyEquivalentModifierMask == flagsWithoutShift && [keyEquivalent isEqualToString:keyCodeCurrentLayoutShiftedRepresentation])) { if (outError) { @@ -196,10 +208,16 @@ - (BOOL)isKeyCode:(unsigned short)aKeyCode andFlags:(NSUInteger)aFlags takenInMe NSString *shortcut = isASCIIOnly ? SRReadableASCIIStringForCocoaModifierFlagsAndKeyCode(aFlags, aKeyCode) : SRReadableStringForCocoaModifierFlagsAndKeyCode(aFlags, aKeyCode); NSString *failureReason = [NSString stringWithFormat: - SRLoc(@"The key combination \"%@\" can't be used!"), + NSLocalizedStringFromTableInBundle(@"The key combination \"%@\" can't be used!", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil), shortcut]; - NSString *description = [NSString stringWithFormat: - SRLoc(@"The key combination \"%@\" can't be used because it's already used by the menu item \"%@\"."), + NSString *description = [NSString stringWithFormat: + NSLocalizedStringFromTableInBundle(@"The key combination \"%@\" can't be used because it's already used by the menu item \"%@\".", + @"ShortcutRecorder", + [NSBundle bundleWithIdentifier:SRBundleIdentifier], + nil), shortcut, menuItem.SR_path]; NSDictionary *userInfo = @{ diff --git a/ShortcutRecorder-Info.plist b/ShortcutRecorder-Info.plist index 00d50fbc..640c17dd 100644 --- a/ShortcutRecorder-Info.plist +++ b/ShortcutRecorder-Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ShortcutRecorder CFBundleIdentifier - com.kulakov.ShortcutRecorder + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType diff --git a/ShortcutRecorder.h b/ShortcutRecorder.h index decaf222..8394a7bf 100644 --- a/ShortcutRecorder.h +++ b/ShortcutRecorder.h @@ -9,6 +9,18 @@ // Jesper // Ilya Kulakov +#ifdef SRLib + +#import "SRCommon.h" +#import "SRKeyCodeTransformer.h" +#import "SRModifierFlagsTransformer.h" +#import "SRKeyEquivalentTransformer.h" +#import "SRKeyEquivalentModifierMaskTransformer.h" +#import "SRValidator.h" +#import "SRRecorderControl.h" + +#else // framework + #import #import #import @@ -16,3 +28,5 @@ #import #import #import + +#endif \ No newline at end of file diff --git a/ShortcutRecorder.xcodeproj/project.pbxproj b/ShortcutRecorder.xcodeproj/project.pbxproj index a0aa26df..e063bcc1 100644 --- a/ShortcutRecorder.xcodeproj/project.pbxproj +++ b/ShortcutRecorder.xcodeproj/project.pbxproj @@ -7,6 +7,9 @@ objects = { /* Begin PBXBuildFile section */ + 1F36E9F12D271542009D2336 /* ShortcutRecorder.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 939837800DA42965007F53F3 /* ShortcutRecorder.framework */; }; + 5A85A3561E82EFFE00089565 /* PTKeyCodes.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5A85A3551E82EFFE00089565 /* PTKeyCodes.plist */; }; + 5A85A3571E82F00F00089565 /* PTKeyCodes.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5A85A3551E82EFFE00089565 /* PTKeyCodes.plist */; }; 939837950DA429EC007F53F3 /* SRRecorderControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B8E29C109CDB9360085E9ED /* SRRecorderControl.m */; }; 939837980DA429EC007F53F3 /* SRKeyCodeTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 74C3670D0A246B4900B69171 /* SRKeyCodeTransformer.m */; }; 939837990DA429EC007F53F3 /* SRValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 74C3670F0A246B4900B69171 /* SRValidator.m */; }; @@ -16,30 +19,14 @@ 9398393E0DA4350B007F53F3 /* SRKeyCodeTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C3670C0A246B4900B69171 /* SRKeyCodeTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9398393F0DA4350B007F53F3 /* SRValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C3670E0A246B4900B69171 /* SRValidator.h */; settings = {ATTRIBUTES = (Public, ); }; }; 939839400DA4350B007F53F3 /* SRCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C367100A246B4900B69171 /* SRCommon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E225E4671679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-left.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4471679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-left.png */; }; - E225E4681679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-left@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4481679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-left@2x.png */; }; - E225E4691679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-middle.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4491679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-middle.png */; }; - E225E46A1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-middle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E44A1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-middle@2x.png */; }; - E225E46B1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-right.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E44B1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-right.png */; }; - E225E46C1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-right@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E44C1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-right@2x.png */; }; - E225E46D1679E30E00A00529 /* shortcut-recorder-bezel-editing-left.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E44D1679E30E00A00529 /* shortcut-recorder-bezel-editing-left.png */; }; - E225E46E1679E30E00A00529 /* shortcut-recorder-bezel-editing-left@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E44E1679E30E00A00529 /* shortcut-recorder-bezel-editing-left@2x.png */; }; - E225E46F1679E30E00A00529 /* shortcut-recorder-bezel-editing-middle.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E44F1679E30E00A00529 /* shortcut-recorder-bezel-editing-middle.png */; }; - E225E4701679E30E00A00529 /* shortcut-recorder-bezel-editing-middle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4501679E30E00A00529 /* shortcut-recorder-bezel-editing-middle@2x.png */; }; - E225E4711679E30E00A00529 /* shortcut-recorder-bezel-editing-right.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4511679E30E00A00529 /* shortcut-recorder-bezel-editing-right.png */; }; - E225E4721679E30E00A00529 /* shortcut-recorder-bezel-editing-right@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4521679E30E00A00529 /* shortcut-recorder-bezel-editing-right@2x.png */; }; - E225E4731679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-left.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4531679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-left.png */; }; - E225E4741679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-left@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4541679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-left@2x.png */; }; - E225E4751679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-middle.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4551679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-middle.png */; }; - E225E4761679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-middle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4561679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-middle@2x.png */; }; - E225E4771679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-right.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4571679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-right.png */; }; - E225E4781679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-right@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4581679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-right@2x.png */; }; - E225E4791679E30E00A00529 /* shortcut-recorder-bezel-left.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4591679E30E00A00529 /* shortcut-recorder-bezel-left.png */; }; - E225E47A1679E30E00A00529 /* shortcut-recorder-bezel-left@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E45A1679E30E00A00529 /* shortcut-recorder-bezel-left@2x.png */; }; - E225E47B1679E30E00A00529 /* shortcut-recorder-bezel-middle.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E45B1679E30E00A00529 /* shortcut-recorder-bezel-middle.png */; }; - E225E47C1679E30E00A00529 /* shortcut-recorder-bezel-middle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E45C1679E30E00A00529 /* shortcut-recorder-bezel-middle@2x.png */; }; - E225E47D1679E30E00A00529 /* shortcut-recorder-bezel-right.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E45D1679E30E00A00529 /* shortcut-recorder-bezel-right.png */; }; - E225E47E1679E30E00A00529 /* shortcut-recorder-bezel-right@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E45E1679E30E00A00529 /* shortcut-recorder-bezel-right@2x.png */; }; + B8789A5117C516FF00385549 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8789A5017C516FF00385549 /* Cocoa.framework */; }; + B8789A5F17C517FE00385549 /* SRKeyCodeTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 74C3670D0A246B4900B69171 /* SRKeyCodeTransformer.m */; }; + B8789A6017C517FE00385549 /* SRModifierFlagsTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = E28113AC167B8A9D001E118E /* SRModifierFlagsTransformer.m */; }; + B8789A6117C517FE00385549 /* SRKeyEquivalentTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = E2BE924C16ABEFE400827E8C /* SRKeyEquivalentTransformer.m */; }; + B8789A6217C517FE00385549 /* SRKeyEquivalentModifierMaskTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = E2BE925116ABF84200827E8C /* SRKeyEquivalentModifierMaskTransformer.m */; }; + B8789A6317C517FE00385549 /* SRRecorderControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B8E29C109CDB9360085E9ED /* SRRecorderControl.m */; }; + B8789A6417C517FE00385549 /* SRValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 74C3670F0A246B4900B69171 /* SRValidator.m */; }; + B8789A6517C517FE00385549 /* SRCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = 74C367110A246B4900B69171 /* SRCommon.m */; }; E225E47F1679E30E00A00529 /* shortcut-recorder-clear-highlighted.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E45F1679E30E00A00529 /* shortcut-recorder-clear-highlighted.png */; }; E225E4801679E30E00A00529 /* shortcut-recorder-clear-highlighted@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4601679E30E00A00529 /* shortcut-recorder-clear-highlighted@2x.png */; }; E225E4811679E30E00A00529 /* shortcut-recorder-clear.png in Resources */ = {isa = PBXBuildFile; fileRef = E225E4611679E30E00A00529 /* shortcut-recorder-clear.png */; }; @@ -71,6 +58,16 @@ E2BE927D16AC052600827E8C /* PTHotKey+ShortcutRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = E279508F131A7498008AE1DA /* PTHotKey+ShortcutRecorder.m */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 1F36E9F32D271542009D2336 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9398377F0DA42965007F53F3; + remoteInfo = ShortcutRecorder.framework; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ 0B8E29C009CDB9360085E9ED /* SRRecorderControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SRRecorderControl.h; sourceTree = ""; }; 0B8E29C109CDB9360085E9ED /* SRRecorderControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SRRecorderControl.m; sourceTree = ""; }; @@ -81,6 +78,7 @@ 0B8E2A0709CDBADE0085E9ED /* PTKeyCombo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTKeyCombo.h; sourceTree = ""; }; 0B8E2A0809CDBADE0085E9ED /* PTKeyCombo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PTKeyCombo.m; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* ShortcutRecorder_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShortcutRecorder_Prefix.pch; sourceTree = ""; }; + 5A85A3551E82EFFE00089565 /* PTKeyCodes.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = PTKeyCodes.plist; sourceTree = SOURCE_ROOT; }; 74C3670C0A246B4900B69171 /* SRKeyCodeTransformer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SRKeyCodeTransformer.h; sourceTree = ""; }; 74C3670D0A246B4900B69171 /* SRKeyCodeTransformer.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SRKeyCodeTransformer.m; sourceTree = ""; }; 74C3670E0A246B4900B69171 /* SRValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SRValidator.h; sourceTree = ""; }; @@ -91,30 +89,14 @@ 939837B50DA42DFB007F53F3 /* ShortcutRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShortcutRecorder.h; sourceTree = SOURCE_ROOT; }; A1125B75104C8AF3005C6F7B /* PTKeyCodeTranslator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTKeyCodeTranslator.h; sourceTree = ""; }; A1125B76104C8AF3005C6F7B /* PTKeyCodeTranslator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PTKeyCodeTranslator.m; sourceTree = ""; }; - E225E4471679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-left.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-blue-highlighted-left.png"; sourceTree = ""; }; - E225E4481679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-left@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-blue-highlighted-left@2x.png"; sourceTree = ""; }; - E225E4491679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-middle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-blue-highlighted-middle.png"; sourceTree = ""; }; - E225E44A1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-middle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-blue-highlighted-middle@2x.png"; sourceTree = ""; }; - E225E44B1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-right.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-blue-highlighted-right.png"; sourceTree = ""; }; - E225E44C1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-right@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-blue-highlighted-right@2x.png"; sourceTree = ""; }; - E225E44D1679E30E00A00529 /* shortcut-recorder-bezel-editing-left.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-editing-left.png"; sourceTree = ""; }; - E225E44E1679E30E00A00529 /* shortcut-recorder-bezel-editing-left@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-editing-left@2x.png"; sourceTree = ""; }; - E225E44F1679E30E00A00529 /* shortcut-recorder-bezel-editing-middle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-editing-middle.png"; sourceTree = ""; }; - E225E4501679E30E00A00529 /* shortcut-recorder-bezel-editing-middle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-editing-middle@2x.png"; sourceTree = ""; }; - E225E4511679E30E00A00529 /* shortcut-recorder-bezel-editing-right.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-editing-right.png"; sourceTree = ""; }; - E225E4521679E30E00A00529 /* shortcut-recorder-bezel-editing-right@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-editing-right@2x.png"; sourceTree = ""; }; - E225E4531679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-left.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-graphite-highlight-mask-left.png"; sourceTree = ""; }; - E225E4541679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-left@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-graphite-highlight-mask-left@2x.png"; sourceTree = ""; }; - E225E4551679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-middle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-graphite-highlight-mask-middle.png"; sourceTree = ""; }; - E225E4561679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-middle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-graphite-highlight-mask-middle@2x.png"; sourceTree = ""; }; - E225E4571679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-right.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-graphite-highlight-mask-right.png"; sourceTree = ""; }; - E225E4581679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-right@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-graphite-highlight-mask-right@2x.png"; sourceTree = ""; }; - E225E4591679E30E00A00529 /* shortcut-recorder-bezel-left.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-left.png"; sourceTree = ""; }; - E225E45A1679E30E00A00529 /* shortcut-recorder-bezel-left@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-left@2x.png"; sourceTree = ""; }; - E225E45B1679E30E00A00529 /* shortcut-recorder-bezel-middle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-middle.png"; sourceTree = ""; }; - E225E45C1679E30E00A00529 /* shortcut-recorder-bezel-middle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-middle@2x.png"; sourceTree = ""; }; - E225E45D1679E30E00A00529 /* shortcut-recorder-bezel-right.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-right.png"; sourceTree = ""; }; - E225E45E1679E30E00A00529 /* shortcut-recorder-bezel-right@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-bezel-right@2x.png"; sourceTree = ""; }; + A285CEE22433CB9300B55C19 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/ShortcutRecorder.strings; sourceTree = ""; }; + A285CEE32433CBA400B55C19 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/ShortcutRecorder.strings; sourceTree = ""; }; + A2B433A6220335DA008B362B /* zh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = zh; path = zh.lproj/ShortcutRecorder.strings; sourceTree = ""; }; + B8789A4E17C516FF00385549 /* libShortcutRecorder.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libShortcutRecorder.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B8789A5017C516FF00385549 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + B8789A5317C516FF00385549 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + B8789A5417C516FF00385549 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + B8789A5517C516FF00385549 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; E225E45F1679E30E00A00529 /* shortcut-recorder-clear-highlighted.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-clear-highlighted.png"; sourceTree = ""; }; E225E4601679E30E00A00529 /* shortcut-recorder-clear-highlighted@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-clear-highlighted@2x.png"; sourceTree = ""; }; E225E4611679E30E00A00529 /* shortcut-recorder-clear.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shortcut-recorder-clear.png"; sourceTree = ""; }; @@ -126,29 +108,10 @@ E273122E1349EC9000A84433 /* PTHotKey.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PTHotKey.framework; sourceTree = BUILT_PRODUCTS_DIR; }; E273122F1349EC9000A84433 /* PTHotKey-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "PTHotKey-Info.plist"; sourceTree = SOURCE_ROOT; }; E273124B1349EE6500A84433 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; - E2741AC41673C79F00A139BD /* en */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741AC61673C7A400A139BD /* de */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741AC71673C7A600A139BD /* el */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741AC81673C7A800A139BD /* fr */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741AC91673C7AA00A139BD /* it */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741ACA1673C7AC00A139BD /* ja */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741ACB1673C7AD00A139BD /* ko */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741ACC1673C7AF00A139BD /* nb */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741ACD1673C7B200A139BD /* nl */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741ACE1673C7B300A139BD /* pl */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741ACF1673C7B500A139BD /* pt-BR */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/ShortcutRecorder.strings"; sourceTree = ""; }; - E2741AD01673C7B600A139BD /* ro */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741AD11673C7B800A139BD /* ru */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741AD21673C7BB00A139BD /* sk */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741AD31673C7BC00A139BD /* sv */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741AD41673C7BD00A139BD /* th */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = th; path = th.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741AD51673C7BF00A139BD /* zh-Hans */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/ShortcutRecorder.strings"; sourceTree = ""; }; - E2741AD61673C7C000A139BD /* es */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741AD71673C7C200A139BD /* es-MX */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = "es-MX"; path = "es-MX.lproj/ShortcutRecorder.strings"; sourceTree = ""; }; - E2741AD81673C7C300A139BD /* ca */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741AD91673C7C600A139BD /* cs */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741ADA1673C7C800A139BD /* pt */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/ShortcutRecorder.strings; sourceTree = ""; }; - E2741ADB1673C7CA00A139BD /* zh-Hant */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/ShortcutRecorder.strings"; sourceTree = ""; }; + E2741AC41673C79F00A139BD /* en */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/ShortcutRecorder.strings; sourceTree = ""; }; + E2741AC61673C7A400A139BD /* de */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/ShortcutRecorder.strings; sourceTree = ""; }; + E2741AC81673C7A800A139BD /* fr */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ShortcutRecorder.strings; sourceTree = ""; }; + E2741ACA1673C7AC00A139BD /* ja */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/ShortcutRecorder.strings; sourceTree = ""; }; E2741ADE1673C83800A139BD /* LICENSE.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; E2741AE01673C90B00A139BD /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; E2741AE81673CCBA00A139BD /* ShortcutRecorder-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "ShortcutRecorder-Info.plist"; sourceTree = ""; }; @@ -172,10 +135,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B8789A4B17C516FF00385549 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B8789A5117C516FF00385549 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E273122C1349EC9000A84433 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1F36E9F12D271542009D2336 /* ShortcutRecorder.framework in Frameworks */, E273124C1349EE6500A84433 /* Carbon.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -211,8 +183,17 @@ children = ( 939837800DA42965007F53F3 /* ShortcutRecorder.framework */, E273122E1349EC9000A84433 /* PTHotKey.framework */, + B8789A4E17C516FF00385549 /* libShortcutRecorder.a */, ); name = Products; + path = ..; + sourceTree = ""; + }; + 1F36E9F02D271542009D2336 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; sourceTree = ""; }; 29B97314FDCFA39411CA2CEA /* ShortcutRecorder */ = { @@ -223,7 +204,8 @@ E2741AE71673CC3D00A139BD /* PTHotKey */, 080E96DDFE201D6D7F000001 /* ShortcutRecorder */, 29B97317FDCFA39411CA2CEA /* Resources */, - 19C28FACFE9D520D11CA2CBB /* Products */, + E2741AC31673C79F00A139BD /* ShortcutRecorder.strings */, + 1F36E9F02D271542009D2336 /* Frameworks */, ); name = ShortcutRecorder; sourceTree = ""; @@ -231,30 +213,8 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - E225E4471679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-left.png */, - E225E4481679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-left@2x.png */, - E225E4491679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-middle.png */, - E225E44A1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-middle@2x.png */, - E225E44B1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-right.png */, - E225E44C1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-right@2x.png */, - E225E44D1679E30E00A00529 /* shortcut-recorder-bezel-editing-left.png */, - E225E44E1679E30E00A00529 /* shortcut-recorder-bezel-editing-left@2x.png */, - E225E44F1679E30E00A00529 /* shortcut-recorder-bezel-editing-middle.png */, - E225E4501679E30E00A00529 /* shortcut-recorder-bezel-editing-middle@2x.png */, - E225E4511679E30E00A00529 /* shortcut-recorder-bezel-editing-right.png */, - E225E4521679E30E00A00529 /* shortcut-recorder-bezel-editing-right@2x.png */, - E225E4531679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-left.png */, - E225E4541679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-left@2x.png */, - E225E4551679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-middle.png */, - E225E4561679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-middle@2x.png */, - E225E4571679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-right.png */, - E225E4581679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-right@2x.png */, - E225E4591679E30E00A00529 /* shortcut-recorder-bezel-left.png */, - E225E45A1679E30E00A00529 /* shortcut-recorder-bezel-left@2x.png */, - E225E45B1679E30E00A00529 /* shortcut-recorder-bezel-middle.png */, - E225E45C1679E30E00A00529 /* shortcut-recorder-bezel-middle@2x.png */, - E225E45D1679E30E00A00529 /* shortcut-recorder-bezel-right.png */, - E225E45E1679E30E00A00529 /* shortcut-recorder-bezel-right@2x.png */, + 19C28FACFE9D520D11CA2CBB /* Products */, + B8789A4F17C516FF00385549 /* Frameworks */, E225E45F1679E30E00A00529 /* shortcut-recorder-clear-highlighted.png */, E225E4601679E30E00A00529 /* shortcut-recorder-clear-highlighted@2x.png */, E225E4611679E30E00A00529 /* shortcut-recorder-clear.png */, @@ -264,11 +224,30 @@ E225E4651679E30E00A00529 /* shortcut-recorder-snapback.png */, E225E4661679E30E00A00529 /* shortcut-recorder-snapback@2x.png */, E2741ADE1673C83800A139BD /* LICENSE.txt */, - E2741AC31673C79F00A139BD /* ShortcutRecorder.strings */, ); path = Resources; sourceTree = SOURCE_ROOT; }; + B8789A4F17C516FF00385549 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B8789A5017C516FF00385549 /* Cocoa.framework */, + B8789A5217C516FF00385549 /* Other Frameworks */, + ); + name = Frameworks; + path = ..; + sourceTree = ""; + }; + B8789A5217C516FF00385549 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + B8789A5317C516FF00385549 /* AppKit.framework */, + B8789A5417C516FF00385549 /* CoreData.framework */, + B8789A5517C516FF00385549 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; BA10595B1689CEB000A3DDF5 /* Supporting Files */ = { isa = PBXGroup; children = ( @@ -281,6 +260,7 @@ BA10595C1689CEBF00A3DDF5 /* Supporting Files */ = { isa = PBXGroup; children = ( + 5A85A3551E82EFFE00089565 /* PTKeyCodes.plist */, E273122F1349EC9000A84433 /* PTHotKey-Info.plist */, ); name = "Supporting Files"; @@ -322,6 +302,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B8789A4C17C516FF00385549 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; E27312291349EC9000A84433 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -355,6 +342,23 @@ productReference = 939837800DA42965007F53F3 /* ShortcutRecorder.framework */; productType = "com.apple.product-type.framework"; }; + B8789A4D17C516FF00385549 /* ShortcutRecorderLib */ = { + isa = PBXNativeTarget; + buildConfigurationList = B8789A5E17C516FF00385549 /* Build configuration list for PBXNativeTarget "ShortcutRecorderLib" */; + buildPhases = ( + B8789A4A17C516FF00385549 /* Sources */, + B8789A4B17C516FF00385549 /* Frameworks */, + B8789A4C17C516FF00385549 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ShortcutRecorderLib; + productName = ShortcutRecorderLib; + productReference = B8789A4E17C516FF00385549 /* libShortcutRecorder.a */; + productType = "com.apple.product-type.library.static"; + }; E273122D1349EC9000A84433 /* PTHotKey.framework */ = { isa = PBXNativeTarget; buildConfigurationList = E27312381349EC9000A84433 /* Build configuration list for PBXNativeTarget "PTHotKey.framework" */; @@ -362,10 +366,12 @@ E273122B1349EC9000A84433 /* Sources */, E273122C1349EC9000A84433 /* Frameworks */, E27312291349EC9000A84433 /* Headers */, + A51A2CA51C9734CE007E9BF4 /* Resources */, ); buildRules = ( ); dependencies = ( + 1F36E9F42D271542009D2336 /* PBXTargetDependency */, ); name = PTHotKey.framework; productName = PTHotKey; @@ -378,43 +384,21 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0460; + LastUpgradeCheck = 1240; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "ShortcutRecorder" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, - sv, - Dutch, - ru, + zh, de, - el, en, fr, - it, ja, - ko, - nb, - nl, - pl, - "pt-BR", - ro, - sk, - th, - "zh-Hans", + Base, es, - "es-MX", - ca, - cs, - da, pt, - "zh-Hant", - infoplist.strings, ); mainGroup = 29B97314FDCFA39411CA2CEA /* ShortcutRecorder */; projectDirPath = ""; @@ -422,41 +406,27 @@ targets = ( 9398377F0DA42965007F53F3 /* ShortcutRecorder.framework */, E273122D1349EC9000A84433 /* PTHotKey.framework */, + B8789A4D17C516FF00385549 /* ShortcutRecorderLib */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + A51A2CA51C9734CE007E9BF4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5A85A3571E82F00F00089565 /* PTKeyCodes.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E2BADF0A134F13CD00F65E14 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( E2741AC51673C79F00A139BD /* ShortcutRecorder.strings in Resources */, E2741ADF1673C83800A139BD /* LICENSE.txt in Resources */, - E225E4671679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-left.png in Resources */, - E225E4681679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-left@2x.png in Resources */, - E225E4691679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-middle.png in Resources */, - E225E46A1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-middle@2x.png in Resources */, - E225E46B1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-right.png in Resources */, - E225E46C1679E30E00A00529 /* shortcut-recorder-bezel-blue-highlighted-right@2x.png in Resources */, - E225E46D1679E30E00A00529 /* shortcut-recorder-bezel-editing-left.png in Resources */, - E225E46E1679E30E00A00529 /* shortcut-recorder-bezel-editing-left@2x.png in Resources */, - E225E46F1679E30E00A00529 /* shortcut-recorder-bezel-editing-middle.png in Resources */, - E225E4701679E30E00A00529 /* shortcut-recorder-bezel-editing-middle@2x.png in Resources */, - E225E4711679E30E00A00529 /* shortcut-recorder-bezel-editing-right.png in Resources */, - E225E4721679E30E00A00529 /* shortcut-recorder-bezel-editing-right@2x.png in Resources */, - E225E4731679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-left.png in Resources */, - E225E4741679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-left@2x.png in Resources */, - E225E4751679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-middle.png in Resources */, - E225E4761679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-middle@2x.png in Resources */, - E225E4771679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-right.png in Resources */, - E225E4781679E30E00A00529 /* shortcut-recorder-bezel-graphite-highlight-mask-right@2x.png in Resources */, - E225E4791679E30E00A00529 /* shortcut-recorder-bezel-left.png in Resources */, - E225E47A1679E30E00A00529 /* shortcut-recorder-bezel-left@2x.png in Resources */, - E225E47B1679E30E00A00529 /* shortcut-recorder-bezel-middle.png in Resources */, - E225E47C1679E30E00A00529 /* shortcut-recorder-bezel-middle@2x.png in Resources */, - E225E47D1679E30E00A00529 /* shortcut-recorder-bezel-right.png in Resources */, - E225E47E1679E30E00A00529 /* shortcut-recorder-bezel-right@2x.png in Resources */, + 5A85A3561E82EFFE00089565 /* PTKeyCodes.plist in Resources */, E225E47F1679E30E00A00529 /* shortcut-recorder-clear-highlighted.png in Resources */, E225E4801679E30E00A00529 /* shortcut-recorder-clear-highlighted@2x.png in Resources */, E225E4811679E30E00A00529 /* shortcut-recorder-clear.png in Resources */, @@ -485,6 +455,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B8789A4A17C516FF00385549 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B8789A5F17C517FE00385549 /* SRKeyCodeTransformer.m in Sources */, + B8789A6017C517FE00385549 /* SRModifierFlagsTransformer.m in Sources */, + B8789A6117C517FE00385549 /* SRKeyEquivalentTransformer.m in Sources */, + B8789A6217C517FE00385549 /* SRKeyEquivalentModifierMaskTransformer.m in Sources */, + B8789A6317C517FE00385549 /* SRRecorderControl.m in Sources */, + B8789A6417C517FE00385549 /* SRValidator.m in Sources */, + B8789A6517C517FE00385549 /* SRCommon.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E273122B1349EC9000A84433 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -499,33 +483,25 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 1F36E9F42D271542009D2336 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9398377F0DA42965007F53F3 /* ShortcutRecorder.framework */; + targetProxy = 1F36E9F32D271542009D2336 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ E2741AC31673C79F00A139BD /* ShortcutRecorder.strings */ = { isa = PBXVariantGroup; children = ( E2741AC41673C79F00A139BD /* en */, E2741AC61673C7A400A139BD /* de */, - E2741AC71673C7A600A139BD /* el */, E2741AC81673C7A800A139BD /* fr */, - E2741AC91673C7AA00A139BD /* it */, E2741ACA1673C7AC00A139BD /* ja */, - E2741ACB1673C7AD00A139BD /* ko */, - E2741ACC1673C7AF00A139BD /* nb */, - E2741ACD1673C7B200A139BD /* nl */, - E2741ACE1673C7B300A139BD /* pl */, - E2741ACF1673C7B500A139BD /* pt-BR */, - E2741AD01673C7B600A139BD /* ro */, - E2741AD11673C7B800A139BD /* ru */, - E2741AD21673C7BB00A139BD /* sk */, - E2741AD31673C7BC00A139BD /* sv */, - E2741AD41673C7BD00A139BD /* th */, - E2741AD51673C7BF00A139BD /* zh-Hans */, - E2741AD61673C7C000A139BD /* es */, - E2741AD71673C7C200A139BD /* es-MX */, - E2741AD81673C7C300A139BD /* ca */, - E2741AD91673C7C600A139BD /* cs */, - E2741ADA1673C7C800A139BD /* pt */, - E2741ADB1673C7CA00A139BD /* zh-Hant */, + A2B433A6220335DA008B362B /* zh */, + A285CEE22433CB9300B55C19 /* es */, + A285CEE32433CBA400B55C19 /* pt */, ); name = ShortcutRecorder.strings; sourceTree = ""; @@ -537,6 +513,8 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_OBJC_ARC = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = ""; COMBINE_HIDPI_IMAGES = YES; DYLIB_COMPATIBILITY_VERSION = 2.0; DYLIB_CURRENT_VERSION = 2.5.1; @@ -546,7 +524,10 @@ GCC_PREFIX_HEADER = ShortcutRecorder_Prefix.pch; INFOPLIST_FILE = "ShortcutRecorder-Info.plist"; INSTALL_PATH = "@rpath"; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.kulakov.ShortcutRecorder; PRODUCT_NAME = ShortcutRecorder; + PROVISIONING_PROFILE = ""; }; name = Debug; }; @@ -554,6 +535,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_OBJC_ARC = YES; + CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; DYLIB_COMPATIBILITY_VERSION = 2.0; DYLIB_CURRENT_VERSION = 2.5.1; @@ -562,6 +544,63 @@ GCC_PREFIX_HEADER = ShortcutRecorder_Prefix.pch; INFOPLIST_FILE = "ShortcutRecorder-Info.plist"; INSTALL_PATH = "@rpath"; + PRODUCT_BUNDLE_IDENTIFIER = com.kulakov.ShortcutRecorder; + PRODUCT_NAME = ShortcutRecorder; + PROVISIONING_PROFILE = ""; + }; + name = Release; + }; + B8789A5C17C516FF00385549 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COMBINE_HIDPI_IMAGES = YES; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "SRLib=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = ShortcutRecorder; + }; + name = Debug; + }; + B8789A5D17C516FF00385549 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = ""; + GCC_PREPROCESSOR_DEFINITIONS = "SRLib=1"; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_NAME = ShortcutRecorder; }; name = Release; @@ -569,20 +608,46 @@ C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = NO; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = NO; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_X86_VECTOR_INSTRUCTIONS = ssse3; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + GCC_TREAT_WARNINGS_AS_ERRORS = YES; GCC_VERSION = ""; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.6; + MACOSX_DEPLOYMENT_TARGET = 10.12; + ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; SKIP_INSTALL = YES; + USE_HEADERMAP = NO; WARNING_CFLAGS = "-Wall"; }; name = Debug; @@ -590,19 +655,43 @@ C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = NO; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = NO; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_X86_VECTOR_INSTRUCTIONS = ssse3; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_TREAT_WARNINGS_AS_ERRORS = YES; GCC_VERSION = ""; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.6; + MACOSX_DEPLOYMENT_TARGET = 10.12; SDKROOT = macosx; SKIP_INSTALL = YES; + USE_HEADERMAP = NO; WARNING_CFLAGS = "-Wall"; }; name = Release; @@ -611,6 +700,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1.1.1; @@ -626,6 +716,7 @@ "-framework", AppKit, ); + PRODUCT_BUNDLE_IDENTIFIER = com.kulakov.PTHotKey; PRODUCT_NAME = PTHotKey; }; name = Debug; @@ -634,6 +725,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1.1.1; @@ -647,6 +739,7 @@ "-framework", AppKit, ); + PRODUCT_BUNDLE_IDENTIFIER = com.kulakov.PTHotKey; PRODUCT_NAME = PTHotKey; }; name = Release; @@ -663,6 +756,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + B8789A5E17C516FF00385549 /* Build configuration list for PBXNativeTarget "ShortcutRecorderLib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B8789A5C17C516FF00385549 /* Debug */, + B8789A5D17C516FF00385549 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; C01FCF4E08A954540054247B /* Build configuration list for PBXProject "ShortcutRecorder" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/de.lproj/ShortcutRecorder.strings b/de.lproj/ShortcutRecorder.strings new file mode 100644 index 00000000..21e1cbf1 --- /dev/null +++ b/de.lproj/ShortcutRecorder.strings @@ -0,0 +1,36 @@ +/* No comment provided by engineer. */ +"+ Shortcut" = "+ Tastenkombination"; + +/* No comment provided by engineer. */ +"Command-" = "Cmd-"; + +/* No comment provided by engineer. */ +"Control-" = "Ctrl-"; + +/* No comment provided by engineer. */ +"Option-" = "Wahltaste-"; + +/* No comment provided by engineer. */ +"Shift-" = "Umschalttaste-"; + +/* No comment provided by engineer. */ +"Space" = "Leertaste"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because %@." = "Die Tastenkombination „%1$@“ kann aus folgendem Grund nicht verwendet werden: %2$@."; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by a system-wide keyboard shortcut. If you really want to use this key combination, most shortcuts can be changed in the Keyboard panel in System Preferences." = "Die Tastenkombination „%@“ kann nicht verwendet werden, weil sie bereits mit einem systemweit gültigen Tastaturbefehl belegt ist. Wenn Sie trotzdem diese Tastenkombination verwenden wollen, können Sie die die meisten Tastaturbefehle in den Systemeinstellungen unter „Tastatur“ ändern."; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by the menu item \"%@\"." = "Die Tastenkombination „%1$@“ kann nicht verwendet werden, weil sie bereits mit dem Menüeintrag „%2$@“ belegt ist."; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used!" = "Die Tastenkombination „%@“ kann nicht verwendet werden."; + +/* No comment provided by engineer. */ +"Type shortcut" = "Kurztasten eingeben"; + +/* No comment provided by engineer. */ +"Use old shortcut" = "Alte Tastenkombination verwenden"; + diff --git a/en.lproj/ShortcutRecorder.strings b/en.lproj/ShortcutRecorder.strings new file mode 100644 index 00000000..bdd010da --- /dev/null +++ b/en.lproj/ShortcutRecorder.strings @@ -0,0 +1,13 @@ +"Space" = "Space"; +"Use old shortcut" = "Use previous shortcut"; +"Type shortcut" = "Type shortcut"; +"+ Shortcut" = "+ Shortcut"; +"Pad %@" = "Pad %@"; +"The key combination “%@” can't be used!" = "The key combination “%@” can't be used!"; +"The key combination “%@” can't be used because %@." = "The key combination “%@” can't be used because %@."; +"The key combination “%@” can't be used because it's already used by a system-wide keyboard shortcut. If you really want to use this key combination, most shortcuts can be changed in the Keyboard panel in System Preferences." = "The key combination “%@” can't be used because it's already used by a system-wide keyboard shortcut. If you really want to use this key combination, most shortcuts can be changed in the Keyboard panel in System Preferences."; +"The key combination “%@” can't be used because it's already used by the menu item “%@”." = "The key combination “%@” can't be used because it's already used by the menu item “%@”."; +"Command-" = "Command-"; +"Option-" = "Option-"; +"Shift-" = "Shift-"; +"Control-" = "Control-"; diff --git a/es.lproj/ShortcutRecorder.strings b/es.lproj/ShortcutRecorder.strings new file mode 100644 index 00000000..744f5ea3 --- /dev/null +++ b/es.lproj/ShortcutRecorder.strings @@ -0,0 +1,36 @@ +/* No comment provided by engineer. */ +"+ Shortcut" = "+ Acceso directo"; + +/* No comment provided by engineer. */ +"Command-" = "Comando-"; + +/* No comment provided by engineer. */ +"Control-" = "Control-"; + +/* No comment provided by engineer. */ +"Option-" = "Opción-"; + +/* No comment provided by engineer. */ +"Shift-" = "Mayús-"; + +/* No comment provided by engineer. */ +"Space" = "Espacio"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because %@." = "La combinación de teclas \"%1$@\" no se puede utilizar porque %2$@."; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by a system-wide keyboard shortcut. If you really want to use this key combination, most shortcuts can be changed in the Keyboard panel in System Preferences." = "La combinación de teclas \"%@\" no se puede utilizar porque ya la está usando un acceso directo de teclado del sistema. Si realmente quieres usar esta combinación de teclas, es posible modificar la mayoría de accesos directos en el panel Teclado, en Preferencias del Sistema."; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by the menu item \"%@\"." = "La combinación de teclas \"%1$@\" no se puede utilizar porque ya la está usando la opción de menú \"%2$@\"."; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used!" = "¡La combinación de teclas \"%@\" no se puede utilizar!"; + +/* No comment provided by engineer. */ +"Type shortcut" = "Escribir acceso directo"; + +/* No comment provided by engineer. */ +"Use old shortcut" = "Usar acceso directo antiguo"; + diff --git a/fr.lproj/ShortcutRecorder.strings b/fr.lproj/ShortcutRecorder.strings new file mode 100644 index 00000000..20e64cbc --- /dev/null +++ b/fr.lproj/ShortcutRecorder.strings @@ -0,0 +1,36 @@ +/* No comment provided by engineer. */ +"+ Shortcut" = "+ Raccourci"; + +/* No comment provided by engineer. */ +"Command-" = "Commande-"; + +/* No comment provided by engineer. */ +"Control-" = "Contrôle-"; + +/* No comment provided by engineer. */ +"Option-" = "Option-"; + +/* No comment provided by engineer. */ +"Shift-" = "Maj-"; + +/* No comment provided by engineer. */ +"Space" = "Espace"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because %@." = "La combinaison de touches « %1$@ » ne peut pas être utilisée, car %2$@."; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by a system-wide keyboard shortcut. If you really want to use this key combination, most shortcuts can be changed in the Keyboard panel in System Preferences." = "La combinaison de touches « %@ » ne peut pas être utilisée, car elle correspond à un raccourci clavier système. Si vous souhaitez vraiment utiliser cette combinaison de touches, le panneau Clavier des Préférences système permet de modifier la plupart des raccourcis. "; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by the menu item \"%@\"." = "La combinaison de touches « %1$@ » ne peut pas être utilisée, car elle est déjà utilisée pour l’élément de menu « %2$@ ». "; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used!" = "Impossible d’utiliser la combinaison de touches « %@ »."; + +/* No comment provided by engineer. */ +"Type shortcut" = "Saisir le raccourci"; + +/* No comment provided by engineer. */ +"Use old shortcut" = "Utiliser l’ancien raccourci"; + diff --git a/ja.lproj/ShortcutRecorder.strings b/ja.lproj/ShortcutRecorder.strings new file mode 100644 index 00000000..c0c44162 --- /dev/null +++ b/ja.lproj/ShortcutRecorder.strings @@ -0,0 +1,36 @@ +/* No comment provided by engineer. */ +"+ Shortcut" = "+ ショートカット"; + +/* No comment provided by engineer. */ +"Command-" = "Command-"; + +/* No comment provided by engineer. */ +"Control-" = "Control-"; + +/* No comment provided by engineer. */ +"Option-" = "Option-"; + +/* No comment provided by engineer. */ +"Shift-" = "Shift-"; + +/* No comment provided by engineer. */ +"Space" = "スペースバー"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because %@." = "キーの組み合わせ \"%1$@\" は使用できません。理由: %2$@。"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by a system-wide keyboard shortcut. If you really want to use this key combination, most shortcuts can be changed in the Keyboard panel in System Preferences." = "システム全体のキーボード ショートカットですでに使用されているため、キーの組み合わせ \"%@\" は使用できません。このキーの組み合わせを使用したい場合、ほとんどのショートカットはシステム環境設定の [キーボード] パネルで変更することができます。"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by the menu item \"%@\"." = "メニュー項目 \"%2$@\" ですでに使用されているため、キーの組み合わせ \"%1$@\" は使用できません。"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used!" = "キーの組み合わせ \"%@\" は使用できません。"; + +/* No comment provided by engineer. */ +"Type shortcut" = "ショートカットを入力"; + +/* No comment provided by engineer. */ +"Use old shortcut" = "以前のショートカットを使用"; + diff --git a/pt.lproj/ShortcutRecorder.strings b/pt.lproj/ShortcutRecorder.strings new file mode 100644 index 00000000..be042263 --- /dev/null +++ b/pt.lproj/ShortcutRecorder.strings @@ -0,0 +1,36 @@ +/* No comment provided by engineer. */ +"+ Shortcut" = "+ Atalho"; + +/* No comment provided by engineer. */ +"Command-" = "Command-"; + +/* No comment provided by engineer. */ +"Control-" = "Control-"; + +/* No comment provided by engineer. */ +"Option-" = "Option-"; + +/* No comment provided by engineer. */ +"Shift-" = "Shift-"; + +/* No comment provided by engineer. */ +"Space" = "Espaço"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because %@." = "A combinação de teclas \"%1$@\" não pode ser usada porque %2$@."; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by a system-wide keyboard shortcut. If you really want to use this key combination, most shortcuts can be changed in the Keyboard panel in System Preferences." = "A combinação de teclas \"%@\" não pode ser usada porque já é usada por um atalho do teclado que abrange todo o sistema. Se você realmente quiser usar esta combinação de teclas, é possível alterar a maioria dos atalhos no painel Teclado, em Preferências do sistema."; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by the menu item \"%@\"." = "A combinação de teclas \"%1$@\" não pode ser usada porque já é usada pelo item de menu \"%2$@\"."; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used!" = "A combinação de teclas \"%@\" não pode ser usada!"; + +/* No comment provided by engineer. */ +"Type shortcut" = "Digitar o atalho"; + +/* No comment provided by engineer. */ +"Use old shortcut" = "Usar atalho antigo"; + diff --git a/zh.lproj/ShortcutRecorder.strings b/zh.lproj/ShortcutRecorder.strings new file mode 100644 index 00000000..c9ae6595 --- /dev/null +++ b/zh.lproj/ShortcutRecorder.strings @@ -0,0 +1,36 @@ +/* No comment provided by engineer. */ +"+ Shortcut" = "+ 快捷键"; + +/* No comment provided by engineer. */ +"Command-" = "Command 键 -"; + +/* No comment provided by engineer. */ +"Control-" = "Control 键 -"; + +/* No comment provided by engineer. */ +"Option-" = "Option 键 -"; + +/* No comment provided by engineer. */ +"Shift-" = "Shift 键 -"; + +/* No comment provided by engineer. */ +"Space" = "空格"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because %@." = "由于%2$@,无法使用快捷键组合 “%1$@”。"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by a system-wide keyboard shortcut. If you really want to use this key combination, most shortcuts can be changed in the Keyboard panel in System Preferences." = "由于已在系统中使用,无法使用快捷键组合“%@”如果您确实想要使用该快捷键组合,大多数快捷键设置可以在“系统偏好”中的“键盘”面板更改。"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used because it's already used by the menu item \"%@\"." = "由于已在菜单选项“%2$@”使用,无法使用快捷键组合“%1$@”。"; + +/* No comment provided by engineer. */ +"The key combination \"%@\" can't be used!" = "无法使用快捷键组合 “%@”!"; + +/* No comment provided by engineer. */ +"Type shortcut" = "输入快捷键"; + +/* No comment provided by engineer. */ +"Use old shortcut" = "使用旧的快捷键"; +