Ok, chaps, it looks like the key entry stuff was a bit old and needed updating. Have a go of this tweak and see if it sorts things out:
[code] OSStatus handleKeyEvent (EventRef theEvent)
{
updateModifiers (theEvent);
UniChar unicodeChars [4];
zeromem (unicodeChars, sizeof (unicodeChars));
GetEventParameter (theEvent, kEventParamKeyUnicodes, typeUnicodeText, 0, sizeof (unicodeChars), 0, unicodeChars);
int keyCode = (int) (unsigned int) unicodeChars[0];
UInt32 rawKey = 0;
GetEventParameter (theEvent, kEventParamKeyCode, typeUInt32, 0, sizeof (UInt32), 0, &rawKey);
if ((currentModifiers & ModifierKeys::ctrlModifier) != 0)
{
if (keyCode >= 1 && keyCode <= 26)
keyCode += ('A' - 1);
}
static const int keyTranslations[] =
{
122, KeyPress::F1Key, 120, KeyPress::F2Key,
99, KeyPress::F3Key, 118, KeyPress::F4Key,
96, KeyPress::F5Key, 97, KeyPress::F6Key,
98, KeyPress::F7Key, 100, KeyPress::F8Key,
101, KeyPress::F9Key, 109, KeyPress::F10Key,
103, KeyPress::F11Key, 111, KeyPress::F12Key,
36, KeyPress::returnKey, 51, KeyPress::backspaceKey,
123, KeyPress::leftKey, 124, KeyPress::rightKey,
126, KeyPress::upKey, 125, KeyPress::downKey,
115, KeyPress::homeKey, 119, KeyPress::endKey,
116, KeyPress::pageUpKey, 121, KeyPress::pageDownKey,
76, KeyPress::returnKey,
0
};
const int* kt = keyTranslations;
while (*kt != 0)
{
if ((int) rawKey == *kt)
{
keyCode = *++kt;
break;
}
kt += 2;
}
switch (GetEventKind (theEvent))
{
case kEventRawKeyDown:
keysCurrentlyDown.addIfNotAlreadyThere ((void*) keyCode);
handleKeyUpOrDown();
handleKeyPress (keyCode);
break;
case kEventRawKeyUp:
keysCurrentlyDown.removeValue ((void*) keyCode);
handleKeyUpOrDown();
break;
case kEventRawKeyRepeat:
handleKeyPress (keyCode);
break;
case kEventRawKeyModifiersChanged:
handleModifierKeysChange();
break;
default:
jassertfalse
break;
}
return noErr;
}[/code]