+- (void)setKeyEquivalentForCode:(short)code andModifiers:(long)modifiers
+ onItem:(NSMenuItem *)item
+{
+ unichar charcode = 'a';
+ int i;
+ long cocoaModifiers = 0;
+ static long carbonToCocoa[6][2] =
+ {
+ { cmdKey, NSCommandKeyMask },
+ { optionKey, NSAlternateKeyMask },
+ { controlKey, NSControlKeyMask },
+ { shiftKey, NSShiftKeyMask },
+ };
+
+ for (i = 0; i < 6; i++)
+ {
+ if (modifiers & carbonToCocoa[i][0])
+ {
+ cocoaModifiers += carbonToCocoa[i][1];
+ }
+ }
+ [item setKeyEquivalentModifierMask:cocoaModifiers];
+
+ //Missing key combos for some keys. Must find them later.
+ switch (code)
+ {
+ case 36:
+ break;
+
+ case 48:
+ break;
+
+ case 49:
+ break;
+
+ case 51:
+ charcode = NSDeleteFunctionKey;
+ break;
+
+ case 53:
+ break;
+
+ case 71:
+ break;
+
+ case 76:
+ break;
+
+ case 96:
+ charcode = NSF5FunctionKey;
+ break;
+
+ case 97:
+ charcode = NSF6FunctionKey;
+ break;
+
+ case 98:
+ charcode = NSF7FunctionKey;
+ break;
+
+ case 99:
+ charcode = NSF3FunctionKey;
+ break;
+
+ case 100:
+ charcode = NSF8FunctionKey;
+ break;
+
+ case 101:
+ charcode = NSF9FunctionKey;
+ break;
+
+ case 103:
+ charcode = NSF11FunctionKey;
+ break;
+
+ case 105:
+ charcode = NSF3FunctionKey;
+ break;
+
+ case 107:
+ charcode = NSF14FunctionKey;
+ break;
+
+ case 109:
+ charcode = NSF10FunctionKey;
+ break;
+
+ case 111:
+ charcode = NSF12FunctionKey;
+ break;
+
+ case 113:
+ charcode = NSF13FunctionKey;
+ break;
+
+ case 114:
+ charcode = NSInsertFunctionKey;
+ break;
+
+ case 115:
+ break;
+
+ case 116:
+ charcode = NSPageUpFunctionKey;
+ break;
+
+ case 117:
+ charcode = NSDeleteFunctionKey;
+ break;
+
+ case 118:
+ charcode = NSF4FunctionKey;
+ break;
+
+ case 119:
+ charcode = NSEndFunctionKey;
+ break;
+
+ case 120:
+ charcode = NSF2FunctionKey;
+ break;
+
+ case 121:
+ charcode = NSPageDownFunctionKey;
+ break;
+
+ case 122:
+ charcode = NSF1FunctionKey;
+ break;
+
+ case 123:
+ charcode = NSLeftArrowFunctionKey;
+ break;
+
+ case 124:
+ charcode = NSRightArrowFunctionKey;
+ break;
+
+ case 125:
+ charcode = NSDownArrowFunctionKey;
+ break;
+
+ case 126:
+ charcode = NSUpArrowFunctionKey;
+ break;
+ }
+
+ if (charcode == 'a') {
+ unsigned long state;
+ long keyTrans;
+ char charCode;
+ Ptr kchr;
+ state = 0;
+ kchr = (Ptr) GetScriptVariable(smCurrentScript, smKCHRCache);
+ keyTrans = KeyTranslate(kchr, code, &state);
+ charCode = keyTrans;
+ [item setKeyEquivalent:[NSString stringWithCString:&charCode length:1]];
+ } else {
+ [item setKeyEquivalent:[NSString stringWithCharacters:&charcode length:1]];
+ }
+}
+