Search code examples
c#macosmonokeyboard-shortcutsmonomac

List of keyEquivalent strings for special keys


I'm trying to programmatically set the KeyEquivalent and KeyEquivalentModifierMask for my NSMenuItem objects (in MonoMac). For alphanumeric keys ("a-z", "0-9") this is not a problem, but I do want to be able to set key equivalents for keys such as F1-F12 and also the arrow keys, return key, etc.

Is there a list of these keys available somewhere? This is the code I'm using currently for each key (found via Googling)

Enter/Return => @\"r"
Escape => @"\E"
Left Arrow => string.Format("%c", 0xF702)
Up Arrow => string.Format("%c", 0xF700)
Right Arrow => string.Format("%c", 0xF703)
Down Arrow => string.Format("%c", 0xF701)
Delete => string.Format("%c", 0x08)
F1 => ?
F2 => ?
...
F12 => ?

I haven't tested all of these out yet.


Solution

  • They are defined in the NSKey enum.


    If you want the values themselves they are in NSEvent.h in the Mac OS X SDK (See apple documentation). The GnuStep version of this file could be found on Gna and should include the same constants, it's easy to convert them to C# :

    enum {
      NSUpArrowFunctionKey = 0xF700,
      NSDownArrowFunctionKey = 0xF701,
      NSLeftArrowFunctionKey = 0xF702,
      NSRightArrowFunctionKey = 0xF703,
      NSF1FunctionKey  = 0xF704,
      NSF2FunctionKey  = 0xF705,
      NSF3FunctionKey  = 0xF706,
      NSF4FunctionKey  = 0xF707,
      NSF5FunctionKey  = 0xF708,
      NSF6FunctionKey  = 0xF709,
      NSF7FunctionKey  = 0xF70A,
      NSF8FunctionKey  = 0xF70B,
      NSF9FunctionKey  = 0xF70C,
      NSF10FunctionKey = 0xF70D,
      NSF11FunctionKey = 0xF70E,
      NSF12FunctionKey = 0xF70F,
      NSF13FunctionKey = 0xF710,
      NSF14FunctionKey = 0xF711,
      NSF15FunctionKey = 0xF712,
      NSF16FunctionKey = 0xF713,
      NSF17FunctionKey = 0xF714,
      NSF18FunctionKey = 0xF715,
      NSF19FunctionKey = 0xF716,
      NSF20FunctionKey = 0xF717,
      NSF21FunctionKey = 0xF718,
      NSF22FunctionKey = 0xF719,
      NSF23FunctionKey = 0xF71A,
      NSF24FunctionKey = 0xF71B,
      NSF25FunctionKey = 0xF71C,
      NSF26FunctionKey = 0xF71D,
      NSF27FunctionKey = 0xF71E,
      NSF28FunctionKey = 0xF71F,
      NSF29FunctionKey = 0xF720,
      NSF30FunctionKey = 0xF721,
      NSF31FunctionKey = 0xF722,
      NSF32FunctionKey = 0xF723,
      NSF33FunctionKey = 0xF724,
      NSF34FunctionKey = 0xF725,
      NSF35FunctionKey = 0xF726,
      NSInsertFunctionKey = 0xF727,
      NSDeleteFunctionKey = 0xF728,
      NSHomeFunctionKey = 0xF729,
      NSBeginFunctionKey = 0xF72A,
      NSEndFunctionKey = 0xF72B,
      NSPageUpFunctionKey = 0xF72C,
      NSPageDownFunctionKey = 0xF72D,
      NSPrintScreenFunctionKey = 0xF72E,
      NSScrollLockFunctionKey = 0xF72F,
      NSPauseFunctionKey = 0xF730,
      NSSysReqFunctionKey = 0xF731,
      NSBreakFunctionKey = 0xF732,
      NSResetFunctionKey = 0xF733,
      NSStopFunctionKey = 0xF734,
      NSMenuFunctionKey = 0xF735,
      NSUserFunctionKey = 0xF736,
      NSSystemFunctionKey = 0xF737,
      NSPrintFunctionKey = 0xF738,
      NSClearLineFunctionKey = 0xF739,
      NSClearDisplayFunctionKey = 0xF73A,
      NSInsertLineFunctionKey = 0xF73B,
      NSDeleteLineFunctionKey = 0xF73C,
      NSInsertCharFunctionKey = 0xF73D,
      NSDeleteCharFunctionKey = 0xF73E,
      NSPrevFunctionKey = 0xF73F,
      NSNextFunctionKey = 0xF740,
      NSSelectFunctionKey = 0xF741,
      NSExecuteFunctionKey = 0xF742,
      NSUndoFunctionKey = 0xF743,
      NSRedoFunctionKey = 0xF744,
      NSFindFunctionKey = 0xF745,
      NSHelpFunctionKey = 0xF746,
      NSModeSwitchFunctionKey = 0xF747
    };