Xamarin binding for the ShortcutRecorder library
Mac user interface control to record shortcuts.
In your layout add Custom View and set its class to SRRecorderControl. Alternatively add SRRecorderControl instance to your layout by code.
// bind SRRecorderControl value to key in userdefaults
var defaults = NSUserDefaultsController.SharedUserDefaultsController;
pingShortcutRecorder.Bind(Constants.NSValueBinding, defaults, "values.ping", null);
// set allowed flags on a SRRecorderControl instance
pingShortcutRecorder.SetAllowedModifierFlags(
newAllowedModifierFlags: NSEventModifierMask.ShiftKeyMask | NSEventModifierMask.AlternateKeyMask | NSEventModifierMask.CommandKeyMask,
newRequiredModifierFlags: (NSEventModifierMask)0,
newAllowsEmptyModifierFlags: true);
Includes framework to set global shortcuts (PTHotKey).
// bind item hotkey to key in userdefaults
public static void BindHotKey(this NSObject target, NSObject observable, string keyPath)
{
var keyOptions = new NSMutableDictionary();
keyOptions.SetValueForKey(new SRKeyEquivalentTransformer(), Constants.NSValueTransformerBindingOption);
target.Bind("keyEquivalent", observable, keyPath, keyOptions);
var keyModifierOptions = new NSMutableDictionary();
keyModifierOptions.SetValueForKey(new SRKeyEquivalentModifierMaskTransformer(), Constants.NSValueTransformerBindingOption);
target.Bind("keyEquivalentModifierMask", observable, keyPath, keyModifierOptions);
}
public override void AwakeFromNib()
{
base.AwakeFromNib();
pingItem.BindHotKey(NSUserDefaultsController.SharedUserDefaultsController, "values.ping");
}