|
|
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.