- /*
- * Control-2 should return ^@ (0x00), Control-6 should return
- * ^^ (0x1E), and Control-Minus should return ^_ (0x1F). Since
- * the DOS keyboard handling did it, and we have nothing better
- * to do with the key combo in question, we'll also map
- * Control-Backquote to ^\ (0x1C).
- */
-
- if (event->modifiers & controlKey) {
- switch (event->message & charCodeMask) {
- case ' ': case '2':
- *p++ = 0x00;
- return p - output;
- case '`':
- *p++ = 0x1c;
- return p - output;
- case '6':
- *p++ = 0x1e;
- return p - output;
- case '/':
- *p++ = 0x1f;
- return p - output;
- }
+ if (event->modifiers & shiftKey)
+ mods |= PKM_SHIFT;
+ if (event->modifiers & controlKey)
+ mods |= PKM_CONTROL;
+ if (event->what == autoKey)
+ flags |= PKF_REPEAT;
+
+ /* Mac key events consist of a virtual key code and a character code. */
+
+ switch ((event->message & keyCodeMask) >> 8) {
+ case 0x24: keysym = PK_RETURN; break;
+ case 0x30: keysym = PK_TAB; break;
+ case 0x33: keysym = PK_BACKSPACE; break;
+ case 0x35: keysym = PK_ESCAPE; break;
+
+ case 0x7A: keysym = PK_F1; break;
+ case 0x78: keysym = PK_F2; break;
+ case 0x63: keysym = PK_F3; break;
+ case 0x76: keysym = PK_F4; break;
+ case 0x60: keysym = PK_F5; break;
+ case 0x61: keysym = PK_F6; break;
+ case 0x62: keysym = PK_F7; break;
+ case 0x64: keysym = PK_F8; break;
+ case 0x65: keysym = PK_F9; break;
+ case 0x6D: keysym = PK_F10; break;
+ case 0x67: keysym = PK_F11; break;
+ case 0x6F: keysym = PK_F12; break;
+ case 0x69: keysym = PK_F13; break;
+ case 0x6B: keysym = PK_F14; break;
+ case 0x71: keysym = PK_F15; break;
+
+ case 0x72: keysym = PK_INSERT; break;
+ case 0x73: keysym = PK_HOME; break;
+ case 0x74: keysym = PK_PAGEUP; break;
+ case 0x75: keysym = PK_DELETE; break;
+ case 0x77: keysym = PK_END; break;
+ case 0x79: keysym = PK_PAGEDOWN; break;
+
+ case 0x47: keysym = PK_PF1; break;
+ case 0x51: keysym = PK_PF2; break;
+ case 0x4B: keysym = PK_PF3; break;
+ case 0x43: keysym = PK_PF4; break;
+ case 0x4E: keysym = PK_KPMINUS; break;
+ case 0x45: keysym = PK_KPCOMMA; break;
+ case 0x41: keysym = PK_KPDECIMAL; break;
+ case 0x4C: keysym = PK_KPENTER; break;
+ case 0x52: keysym = PK_KP0; break;
+ case 0x53: keysym = PK_KP1; break;
+ case 0x54: keysym = PK_KP2; break;
+ case 0x55: keysym = PK_KP3; break;
+ case 0x56: keysym = PK_KP4; break;
+ case 0x57: keysym = PK_KP5; break;
+ case 0x58: keysym = PK_KP6; break;
+ case 0x59: keysym = PK_KP7; break;
+ case 0x5B: keysym = PK_KP8; break;
+ case 0x5C: keysym = PK_KP9; break;
+
+ case 0x7B: keysym = PK_LEFT; break;
+ case 0x7C: keysym = PK_RIGHT; break;
+ case 0x7D: keysym = PK_DOWN; break;
+ case 0x7E: keysym = PK_UP; break;