public static NSEventModifierFlags GetModifier(ModifierKey key) { NSEventModifierFlags result = NSEventModifierFlags.None; foreach (var flag in EnumTools.GetFlags(key)) { switch (flag) { case ModifierKey.None: continue; case ModifierKey.Shift: result |= NSEventModifierFlags.Shift; break; case ModifierKey.Control: result |= NSEventModifierFlags.Control; break; case ModifierKey.Alt: result |= NSEventModifierFlags.Option; break; case ModifierKey.Super: case ModifierKey.Primary: result |= NSEventModifierFlags.Command; break; default: throw new NotSupportedException($"Unsupported modifier key: \"{flag}\""); } } return(result); }
public void SetShortcut(ModifierKey modifier, Key key) { NSEventModifierFlags nsModifier = KeyMapper.GetModifier(modifier); string mappedKey = KeyMapper.GetKey(key); ObjC.Call(Handle, "setKeyEquivalentModifierMask:", new UIntPtr((ulong)nsModifier)); ObjC.Call(Handle, "setKeyEquivalent:", NSString.Create(mappedKey)); }
protected abstract void SetShortcut(NSEventModifierFlags modifier, string key);
protected override void SetShortcut(NSEventModifierFlags modifier, string key) { // ignore: no shortcuts for the base menu class }
protected override void SetShortcut(NSEventModifierFlags modifier, string key) { ObjC.Call(Handle, "setKeyEquivalentModifierMask:", new UIntPtr((ulong)modifier)); ObjC.Call(Handle, "setKeyEquivalent:", NSString.Create(key)); }