|
|
1.1 ! root 1: /* ! 2: * UAE - The Un*x Amiga Emulator ! 3: * ! 4: * Support for mapping Quartz keycodes to platform-independent ! 5: * UAE key codes. ! 6: * ! 7: * Copyright 2004 Richard Drummond ! 8: */ ! 9: ! 10: #if defined __APPLE__ ! 11: ! 12: #include "sysconfig.h" ! 13: #include "sysdeps.h" ! 14: ! 15: #include "options.h" ! 16: #include "inputdevice.h" ! 17: #include "keymap.h" ! 18: #include "keymap_common.h" ! 19: ! 20: /* ! 21: * MacOS raw key codes ! 22: */ ! 23: #define RAWKEY_ESCAPE 53 ! 24: ! 25: #define RAWKEY_F1 122 ! 26: #define RAWKEY_F2 120 ! 27: #define RAWKEY_F3 99 ! 28: #define RAWKEY_F4 118 ! 29: #define RAWKEY_F5 96 ! 30: #define RAWKEY_F6 97 ! 31: #define RAWKEY_F7 98 ! 32: #define RAWKEY_F8 100 ! 33: #define RAWKEY_F9 101 ! 34: #define RAWKEY_F10 109 ! 35: #define RAWKEY_F11 103 ! 36: #define RAWKEY_F12 111 ! 37: ! 38: #define RAWKEY_PRINTSCR 105 ! 39: #define RAWKEY_SCROLL_LOCK 107 ! 40: #define RAWKEY_PAUSE 113 ! 41: ! 42: #define RAWKEY_1 18 ! 43: #define RAWKEY_2 19 ! 44: #define RAWKEY_3 20 ! 45: #define RAWKEY_4 21 ! 46: #define RAWKEY_5 23 ! 47: #define RAWKEY_6 22 ! 48: #define RAWKEY_7 26 ! 49: #define RAWKEY_8 28 ! 50: #define RAWKEY_9 25 ! 51: #define RAWKEY_0 29 ! 52: ! 53: #define RAWKEY_TAB 48 ! 54: #define RAWKEY_ENTER 36 ! 55: #define RAWKEY_BACKSPACE 51 ! 56: #define RAWKEY_SPACE 49 ! 57: ! 58: #define RAWKEY_A 0 ! 59: #define RAWKEY_B 11 ! 60: #define RAWKEY_C 8 ! 61: #define RAWKEY_D 2 ! 62: #define RAWKEY_E 14 ! 63: #define RAWKEY_F 3 ! 64: #define RAWKEY_G 5 ! 65: #define RAWKEY_H 4 ! 66: #define RAWKEY_I 34 ! 67: #define RAWKEY_J 38 ! 68: #define RAWKEY_K 40 ! 69: #define RAWKEY_L 37 ! 70: #define RAWKEY_M 46 ! 71: #define RAWKEY_N 45 ! 72: #define RAWKEY_O 31 ! 73: #define RAWKEY_P 35 ! 74: #define RAWKEY_Q 12 ! 75: #define RAWKEY_R 15 ! 76: #define RAWKEY_S 1 ! 77: #define RAWKEY_T 17 ! 78: #define RAWKEY_U 32 ! 79: #define RAWKEY_V 9 ! 80: #define RAWKEY_W 13 ! 81: #define RAWKEY_X 7 ! 82: #define RAWKEY_Y 16 ! 83: #define RAWKEY_Z 6 ! 84: ! 85: #define RAWKEY_MINUS 27 ! 86: #define RAWKEY_EQUALS 24 ! 87: #define RAWKEY_LEFTBRACKET 33 ! 88: #define RAWKEY_RIGHTBRACKET 30 ! 89: #define RAWKEY_BACKSLASH 42 ! 90: #define RAWKEY_SEMICOLON 41 ! 91: #define RAWKEY_SINGLEQUOTE 39 ! 92: #define RAWKEY_COMMA 43 ! 93: #define RAWKEY_PERIOD 47 ! 94: #define RAWKEY_SLASH 44 ! 95: #define RAWKEY_GRAVE 50 ! 96: #define RAWKEY_LTGT 10 ! 97: ! 98: #define RAWKEY_NUMPAD_1 83 ! 99: #define RAWKEY_NUMPAD_2 84 ! 100: #define RAWKEY_NUMPAD_3 85 ! 101: #define RAWKEY_NUMPAD_4 86 ! 102: #define RAWKEY_NUMPAD_5 87 ! 103: #define RAWKEY_NUMPAD_6 88 ! 104: #define RAWKEY_NUMPAD_7 89 ! 105: #define RAWKEY_NUMPAD_8 91 ! 106: #define RAWKEY_NUMPAD_9 92 ! 107: #define RAWKEY_NUMPAD_0 82 ! 108: #define RAWKEY_NUMPAD_EQUALS 81 ! 109: #define RAWKEY_NUMPAD_DIVIDE 75 ! 110: #define RAWKEY_NUMPAD_MULTIPLY 67 ! 111: #define RAWKEY_NUMPAD_MINUS 78 ! 112: #define RAWKEY_NUMPAD_PLUS 69 ! 113: #define RAWKEY_NUMPAD_PERIOD 65 ! 114: #define RAWKEY_NUMPAD_ENTER 76 ! 115: #define RAWKEY_NUMLOCK 71 ! 116: ! 117: #define RAWKEY_INSERT 114 ! 118: #define RAWKEY_DELETE 117 ! 119: #define RAWKEY_HOME 115 ! 120: #define RAWKEY_END 119 ! 121: #define RAWKEY_PAGEUP 116 ! 122: #define RAWKEY_PAGEDOWN 121 ! 123: ! 124: #define RAWKEY_CURSOR_UP 126 ! 125: #define RAWKEY_CURSOR_DOWN 125 ! 126: #define RAWKEY_CURSOR_LEFT 123 ! 127: #define RAWKEY_CURSOR_RIGHT 124 ! 128: ! 129: /* ! 130: * MacOS X support for modifier keys is a bit iffy. ! 131: * ! 132: * Under SDL (up to 1.2.7 anyway) my ADB keyboard, doesn't ! 133: * report key codes for modifier keys. Thus we need the ! 134: * modifier hack (see SDL gfx driver) to generate raw key ! 135: * codes from modifier presses. ! 136: * ! 137: * Also, unless you have SDL 1.2.8 and OS 10.3, left and right ! 138: * keys are differentiated. On some keyboards they'll never ! 139: * be differentiated. ! 140: */ ! 141: #define RAWKEY_LEFT_CTRL 59 ! 142: #define RAWKEY_LEFT_SHIFT 56 ! 143: #define RAWKEY_LEFT_ALT 58 ! 144: #define RAWKEY_LEFT_SUPER 55 ! 145: #define RAWKEY_RIGHT_SUPER 54 ! 146: #define RAWKEY_RIGHT_ALT 61 ! 147: #define RAWKEY_RIGHT_SHIFT 60 ! 148: #define RAWKEY_RIGHT_CTRL 62 ! 149: #define RAWKEY_CAPSLOCK 57 ! 150: ! 151: #define RAWKEY_POWER 127 ! 152: ! 153: /* ! 154: * Mapping from raw key codes to UAE key codes ! 155: */ ! 156: const struct uaekey_hostmap quartz_keymap[] = ! 157: { ! 158: {RAWKEYS_COMMON}, ! 159: ! 160: {RAWKEY_F11, UAEKEY_F11}, ! 161: {RAWKEY_F12, UAEKEY_F12}, ! 162: ! 163: {RAWKEY_PRINTSCR, UAEKEY_PRINTSCR}, ! 164: {RAWKEY_SCROLL_LOCK, UAEKEY_SCROLL_LOCK}, ! 165: {RAWKEY_PAUSE, UAEKEY_PAUSE}, ! 166: ! 167: {RAWKEY_NUMPAD_EQUALS, UAEKEY_NUMPAD_EQUALS}, ! 168: ! 169: {RAWKEY_POWER, UAEKEY_POWER}, ! 170: ! 171: {RAWKEYS_END} ! 172: }; ! 173: ! 174: /* ! 175: * Mapping of uae modifier key codes to Quartz modifier keys ! 176: */ ! 177: const int quartz_modkeytable[] = { ! 178: /* UAEMODKEY_LSHIFT */ RAWKEY_LEFT_SHIFT, ! 179: /* UAEMODKEY_LCTRL */ RAWKEY_LEFT_CTRL, ! 180: /* UAEMODKEY_LALT */ RAWKEY_LEFT_ALT, ! 181: /* UAEMODKEY_LSUPER */ RAWKEY_LEFT_SUPER, ! 182: /* UAEMODKEY_RSUPER */ RAWKEY_RIGHT_SUPER, ! 183: /* UAEMODKEY_RALT */ RAWKEY_RIGHT_ALT, ! 184: /* UAEMODKEY_RCTRL */ RAWKEY_RIGHT_CTRL, ! 185: /* UAEMODKEY_RSHIFT */ RAWKEY_RIGHT_SHIFT, ! 186: /* UAEMODKEY_CAPSLOCK */ RAWKEY_CAPSLOCK ! 187: }; ! 188: ! 189: ! 190: /* ! 191: * Hot-key sequences ! 192: */ ! 193: ! 194: /* ! 195: * F12 is used to eject a CD-ROM on OS X. Don't use ! 196: * it as the initiator for control seqeuences. ! 197: */ ! 198: #define HOTKEY_MODIFIER RAWKEY_F11 ! 199: ! 200: #include "hotkeys.h" ! 201: #include "hotkeys_common.h" ! 202: ! 203: struct uae_hotkeyseq quartz_hotkeys[] = ! 204: { ! 205: { DEFAULT_HOTKEYS }, ! 206: { HOTKEYS_END } ! 207: }; ! 208: ! 209: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.