From NSMenuItem Class Reference
If you want to specify the Backspace key as the key equivalent for a menu item, use a single character string with NSBackspaceCharacter (defined in NSText.h as 0x08) and for the Forward Delete key, use NSDeleteCharacter (defined in NSText.h as 0x7F).
Not sure I understand "use a single character string with..." from the class ref.
// This works as expected
NSString *s = [NSString stringWithFormat:@"%c",NSDeleteCharacter];
[myMenuItem setKeyEquivalentModifierMask:NSCommandKeyMask];
[myMenuItem setKeyEquivalent:s];
// This doesn't works as expected
NSString *s = [NSString stringWithFormat:@"%c",NSF2FunctionKey];
[myMenuItem setKeyEquivalentModifierMask:NSCommandKeyMask];
[myMenuItem setKeyEquivalent:s];
Figured it out myself.
unichar c = NSF2FunctionKey;
NSString *f2 = [NSString stringWithCharacters:&c length:1];
[mi setKeyEquivalent:f2];
[mi setKeyEquivalentModifierMask:NSCommandKeyMask];
Example for Swift 2.0:
let key = String(utf16CodeUnits: [unichar(NSBackspaceCharacter)], count: 1) as String
menuItem.keyEquivalentModifierMask = Int(NSEventModifierFlags.CommandKeyMask.rawValue)
menuItem.keyEquivalent = key
In Swift 3, 4, and 5:
let f2Character: Character = Character(UnicodeScalar(NSF2FunctionKey)!)
myMenuItem.keyEquivalent = String(f2Character)
myMenuItem.keyEquivalentModifierMask = []
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With