Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 04987a7bd5 | |||
| bf3a032c4b |
@@ -1,3 +1,6 @@
|
||||
2.1.1 2015/1/16
|
||||
- Another headerdoc fix for CocoaDocs, hopefully the last one.
|
||||
|
||||
2.1.0 2015/1/16
|
||||
- Added support for older OS X versions down to 10.6 included.
|
||||
- Headerdoc markup that plays better with CocoaDocs.
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.1.0</string>
|
||||
<string>2.1.1</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2.1.0</string>
|
||||
<string>2.1.1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2014–2015 Vadim Shpakovski. All rights reserved.</string>
|
||||
</dict>
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
extern NSString *const MASDictionaryTransformerName;
|
||||
|
||||
/**
|
||||
Converts shortcuts for storage in user defaults.
|
||||
Converts shortcuts for storage in user defaults.
|
||||
|
||||
User defaults can’t stored custom types directly, they have to
|
||||
be serialized to `NSData` or some other supported type like an
|
||||
`NSDictionary`. In Cocoa Bindings, the conversion can be done
|
||||
using value transformers like this one.
|
||||
User defaults can’t stored custom types directly, they have to
|
||||
be serialized to `NSData` or some other supported type like an
|
||||
`NSDictionary`. In Cocoa Bindings, the conversion can be done
|
||||
using value transformers like this one.
|
||||
|
||||
There’s a built-in transformer (`NSKeyedUnarchiveFromDataTransformerName`)
|
||||
that converts any `NSCoding` types to `NSData`, but with shortcuts
|
||||
it makes sense to use a dictionary instead – the defaults look better
|
||||
when inspected with the `defaults` command-line utility and the
|
||||
format is compatible with an older sortcut library called Shortcut
|
||||
Recorder.
|
||||
There’s a built-in transformer (`NSKeyedUnarchiveFromDataTransformerName`)
|
||||
that converts any `NSCoding` types to `NSData`, but with shortcuts
|
||||
it makes sense to use a dictionary instead – the defaults look better
|
||||
when inspected with the `defaults` command-line utility and the
|
||||
format is compatible with an older sortcut library called Shortcut
|
||||
Recorder.
|
||||
*/
|
||||
@interface MASDictionaryTransformer : NSValueTransformer
|
||||
@end
|
||||
|
||||
+22
-22
@@ -1,59 +1,59 @@
|
||||
#import "MASKeyCodes.h"
|
||||
|
||||
/**
|
||||
A model class to hold a key combination.
|
||||
A model class to hold a key combination.
|
||||
|
||||
This class just represents a combination of keys. It does not care if
|
||||
the combination is valid or can be used as a hotkey, it doesn’t watch
|
||||
the input system for the shortcut appearance, nor it does access user
|
||||
defaults.
|
||||
This class just represents a combination of keys. It does not care if
|
||||
the combination is valid or can be used as a hotkey, it doesn’t watch
|
||||
the input system for the shortcut appearance, nor it does access user
|
||||
defaults.
|
||||
*/
|
||||
@interface MASShortcut : NSObject <NSSecureCoding, NSCopying>
|
||||
|
||||
/**
|
||||
The virtual key code for the keyboard key.
|
||||
The virtual key code for the keyboard key.
|
||||
|
||||
Hardware independent, same as in `NSEvent`. See `Events.h` in the HIToolbox
|
||||
framework for a complete list, or Command-click this symbol: `kVK_ANSI_A`.
|
||||
Hardware independent, same as in `NSEvent`. See `Events.h` in the HIToolbox
|
||||
framework for a complete list, or Command-click this symbol: `kVK_ANSI_A`.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSUInteger keyCode;
|
||||
|
||||
/**
|
||||
Cocoa keyboard modifier flags.
|
||||
Cocoa keyboard modifier flags.
|
||||
|
||||
Same as in `NSEvent`: `NSCommandKeyMask`, `NSAlternateKeyMask`, etc.
|
||||
Same as in `NSEvent`: `NSCommandKeyMask`, `NSAlternateKeyMask`, etc.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSUInteger modifierFlags;
|
||||
|
||||
/**
|
||||
Same as `keyCode`, just a different type.
|
||||
Same as `keyCode`, just a different type.
|
||||
*/
|
||||
@property (nonatomic, readonly) UInt32 carbonKeyCode;
|
||||
|
||||
/**
|
||||
Carbon modifier flags.
|
||||
Carbon modifier flags.
|
||||
|
||||
A bit sum of `cmdKey`, `optionKey`, etc.
|
||||
A bit sum of `cmdKey`, `optionKey`, etc.
|
||||
*/
|
||||
@property (nonatomic, readonly) UInt32 carbonFlags;
|
||||
|
||||
/**
|
||||
A string representing the “key” part of a shortcut, like the `5` in `⌘5`.
|
||||
A string representing the “key” part of a shortcut, like the `5` in `⌘5`.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSString *keyCodeString;
|
||||
|
||||
/**
|
||||
A key-code string used in key equivalent matching.
|
||||
A key-code string used in key equivalent matching.
|
||||
|
||||
For precise meaning of “key equivalents” see the `keyEquivalent`
|
||||
property of `NSMenuItem`. Here the string is used to support shortcut
|
||||
validation (“is the shortcut already taken in this menu?”) and
|
||||
for display in `NSMenu`.
|
||||
For precise meaning of “key equivalents” see the `keyEquivalent`
|
||||
property of `NSMenuItem`. Here the string is used to support shortcut
|
||||
validation (“is the shortcut already taken in this menu?”) and
|
||||
for display in `NSMenu`.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSString *keyCodeStringForKeyEquivalent;
|
||||
|
||||
/**
|
||||
A string representing the shortcut modifiers, like the `⌘` in `⌘5`.
|
||||
A string representing the shortcut modifiers, like the `⌘` in `⌘5`.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSString *modifierFlagsString;
|
||||
|
||||
@@ -61,9 +61,9 @@
|
||||
+ (instancetype)shortcutWithKeyCode:(NSUInteger)code modifierFlags:(NSUInteger)flags;
|
||||
|
||||
/**
|
||||
Creates a new shortcut from an `NSEvent` object.
|
||||
Creates a new shortcut from an `NSEvent` object.
|
||||
|
||||
This is just a convenience initializer that reads the key code and modifiers from an `NSEvent`.
|
||||
This is just a convenience initializer that reads the key code and modifiers from an `NSEvent`.
|
||||
*/
|
||||
+ (instancetype)shortcutWithEvent:(NSEvent *)anEvent;
|
||||
|
||||
|
||||
@@ -1,66 +1,66 @@
|
||||
#import "MASShortcutMonitor.h"
|
||||
|
||||
/**
|
||||
Binds actions to user defaults keys.
|
||||
Binds actions to user defaults keys.
|
||||
|
||||
If you store shortcuts in user defaults (for example by binding
|
||||
a `MASShortcutView` to user defaults), you can use this class to
|
||||
connect an action directly to a user defaults key. If the shortcut
|
||||
stored under the key changes, the action will get automatically
|
||||
updated to the new one.
|
||||
If you store shortcuts in user defaults (for example by binding
|
||||
a `MASShortcutView` to user defaults), you can use this class to
|
||||
connect an action directly to a user defaults key. If the shortcut
|
||||
stored under the key changes, the action will get automatically
|
||||
updated to the new one.
|
||||
|
||||
This class is mostly a wrapper around a `MASShortcutMonitor`. It
|
||||
watches the changes in user defaults and updates the shortcut monitor
|
||||
accordingly with the new shortcuts.
|
||||
This class is mostly a wrapper around a `MASShortcutMonitor`. It
|
||||
watches the changes in user defaults and updates the shortcut monitor
|
||||
accordingly with the new shortcuts.
|
||||
*/
|
||||
@interface MASShortcutBinder : NSObject
|
||||
|
||||
/**
|
||||
A convenience shared instance.
|
||||
A convenience shared instance.
|
||||
|
||||
You may use it so that you don’t have to manage an instance by hand,
|
||||
but it’s perfectly fine to allocate and use a separate instance instead.
|
||||
You may use it so that you don’t have to manage an instance by hand,
|
||||
but it’s perfectly fine to allocate and use a separate instance instead.
|
||||
*/
|
||||
+ (instancetype) sharedBinder;
|
||||
|
||||
/**
|
||||
The underlying shortcut monitor.
|
||||
The underlying shortcut monitor.
|
||||
*/
|
||||
@property(strong) MASShortcutMonitor *shortcutMonitor;
|
||||
|
||||
/**
|
||||
Binding options customizing the access to user defaults.
|
||||
Binding options customizing the access to user defaults.
|
||||
|
||||
As an example, you can use `NSValueTransformerNameBindingOption` to customize
|
||||
the storage format used for the shortcuts. By default the shortcuts are converted
|
||||
from `NSData` (`NSKeyedUnarchiveFromDataTransformerName`). Note that if the
|
||||
binder is to work with `MASShortcutView`, both object have to use the same storage
|
||||
format.
|
||||
As an example, you can use `NSValueTransformerNameBindingOption` to customize
|
||||
the storage format used for the shortcuts. By default the shortcuts are converted
|
||||
from `NSData` (`NSKeyedUnarchiveFromDataTransformerName`). Note that if the
|
||||
binder is to work with `MASShortcutView`, both object have to use the same storage
|
||||
format.
|
||||
*/
|
||||
@property(copy) NSDictionary *bindingOptions;
|
||||
|
||||
/**
|
||||
Binds given action to a shortcut stored under the given defaults key.
|
||||
Binds given action to a shortcut stored under the given defaults key.
|
||||
|
||||
In other words, no matter what shortcut you store under the given key,
|
||||
pressing it will always trigger the given action.
|
||||
In other words, no matter what shortcut you store under the given key,
|
||||
pressing it will always trigger the given action.
|
||||
*/
|
||||
- (void) bindShortcutWithDefaultsKey: (NSString*) defaultsKeyName toAction: (dispatch_block_t) action;
|
||||
|
||||
/**
|
||||
Disconnect the binding between user defaults and action.
|
||||
Disconnect the binding between user defaults and action.
|
||||
|
||||
In other words, the shortcut stored under the given key will no longer trigger an action.
|
||||
In other words, the shortcut stored under the given key will no longer trigger an action.
|
||||
*/
|
||||
- (void) breakBindingWithDefaultsKey: (NSString*) defaultsKeyName;
|
||||
|
||||
/**
|
||||
Register default shortcuts in user defaults.
|
||||
Register default shortcuts in user defaults.
|
||||
|
||||
This is a convenience frontent to `[NSUserDefaults registerDefaults]`.
|
||||
The dictionary should contain a map of user defaults’ keys to appropriate
|
||||
keyboard shortcuts. The shortcuts will be transformed according to
|
||||
`bindingOptions` and registered using `registerDefaults`.
|
||||
This is a convenience frontent to `[NSUserDefaults registerDefaults]`.
|
||||
The dictionary should contain a map of user defaults’ keys to appropriate
|
||||
keyboard shortcuts. The shortcuts will be transformed according to
|
||||
`bindingOptions` and registered using `registerDefaults`.
|
||||
*/
|
||||
- (void) registerDefaultShortcuts: (NSDictionary*) defaultShortcuts;
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#import "MASShortcut.h"
|
||||
|
||||
/**
|
||||
Executes action when a shortcut is pressed.
|
||||
Executes action when a shortcut is pressed.
|
||||
|
||||
There can only be one instance of this class, otherwise things
|
||||
will probably not work. (There’s a Carbon event handler inside
|
||||
and there can only be one Carbon event handler of a given type.)
|
||||
There can only be one instance of this class, otherwise things
|
||||
will probably not work. (There’s a Carbon event handler inside
|
||||
and there can only be one Carbon event handler of a given type.)
|
||||
*/
|
||||
@interface MASShortcutMonitor : NSObject
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
+ (instancetype) sharedMonitor;
|
||||
|
||||
/**
|
||||
Register a shortcut along with an action.
|
||||
Register a shortcut along with an action.
|
||||
|
||||
Attempting to insert an already registered shortcut probably won’t work.
|
||||
It may burn your house or cut your fingers. You have been warned.
|
||||
Attempting to insert an already registered shortcut probably won’t work.
|
||||
It may burn your house or cut your fingers. You have been warned.
|
||||
*/
|
||||
- (BOOL) registerShortcut: (MASShortcut*) shortcut withAction: (dispatch_block_t) action;
|
||||
- (BOOL) isShortcutRegistered: (MASShortcut*) shortcut;
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
#import "MASShortcutView.h"
|
||||
|
||||
/**
|
||||
A simplified interface to bind the recorder value to user defaults.
|
||||
A simplified interface to bind the recorder value to user defaults.
|
||||
|
||||
You can bind the `shortcutValue` to user defaults using the standard
|
||||
`bind:toObject:withKeyPath:options:` call, but since that’s a lot to type
|
||||
and read, here’s a simpler option.
|
||||
You can bind the `shortcutValue` to user defaults using the standard
|
||||
`bind:toObject:withKeyPath:options:` call, but since that’s a lot to type
|
||||
and read, here’s a simpler option.
|
||||
|
||||
Setting the `associatedUserDefaultsKey` binds the view’s shortcut value
|
||||
to the given user defaults key. You can supply a value transformer to convert
|
||||
values between user defaults and `MASShortcut`. If you don’t supply
|
||||
a transformer, the `NSUnarchiveFromDataTransformerName` will be used
|
||||
automatically.
|
||||
Setting the `associatedUserDefaultsKey` binds the view’s shortcut value
|
||||
to the given user defaults key. You can supply a value transformer to convert
|
||||
values between user defaults and `MASShortcut`. If you don’t supply
|
||||
a transformer, the `NSUnarchiveFromDataTransformerName` will be used
|
||||
automatically.
|
||||
|
||||
Set `associatedUserDefaultsKey` to `nil` to disconnect the binding.
|
||||
Set `associatedUserDefaultsKey` to `nil` to disconnect the binding.
|
||||
*/
|
||||
@interface MASShortcutView (Bindings)
|
||||
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'MASShortcut'
|
||||
s.version = '2.1.0'
|
||||
s.version = '2.1.1'
|
||||
s.summary = 'Modern framework for managing global keyboard shortcuts compatible with Mac App Store'
|
||||
s.homepage = 'https://github.com/shpakovski/MASShortcut'
|
||||
s.license = 'BSD 2-clause'
|
||||
@@ -9,7 +9,7 @@ Pod::Spec.new do |s|
|
||||
|
||||
s.platform = :osx
|
||||
s.osx.deployment_target = "10.6"
|
||||
s.source = { :git => 'https://github.com/shpakovski/MASShortcut.git', :tag => '2.1.0' }
|
||||
s.source = { :git => 'https://github.com/shpakovski/MASShortcut.git', :tag => '2.1.1' }
|
||||
s.source_files = 'Framework/*.{h,m}'
|
||||
s.exclude_files = 'Framework/*Tests.m'
|
||||
s.osx.frameworks = 'Carbon', 'AppKit'
|
||||
|
||||
Reference in New Issue
Block a user