uae-wii/src/keymap/quartz_rawkeys.c
2009-05-05 15:36:48 +00:00

210 lines
4.6 KiB
C

/*
* UAE - The Un*x Amiga Emulator
*
* Support for mapping Quartz keycodes to platform-independent
* UAE key codes.
*
* Copyright 2004 Richard Drummond
*/
#if defined __APPLE__
#include "sysconfig.h"
#include "sysdeps.h"
#include "options.h"
#include "inputdevice.h"
#include "keymap.h"
#include "keymap_common.h"
/*
* MacOS raw key codes
*/
#define RAWKEY_ESCAPE 53
#define RAWKEY_F1 122
#define RAWKEY_F2 120
#define RAWKEY_F3 99
#define RAWKEY_F4 118
#define RAWKEY_F5 96
#define RAWKEY_F6 97
#define RAWKEY_F7 98
#define RAWKEY_F8 100
#define RAWKEY_F9 101
#define RAWKEY_F10 109
#define RAWKEY_F11 103
#define RAWKEY_F12 111
#define RAWKEY_PRINTSCR 105
#define RAWKEY_SCROLL_LOCK 107
#define RAWKEY_PAUSE 113
#define RAWKEY_1 18
#define RAWKEY_2 19
#define RAWKEY_3 20
#define RAWKEY_4 21
#define RAWKEY_5 23
#define RAWKEY_6 22
#define RAWKEY_7 26
#define RAWKEY_8 28
#define RAWKEY_9 25
#define RAWKEY_0 29
#define RAWKEY_TAB 48
#define RAWKEY_ENTER 36
#define RAWKEY_BACKSPACE 51
#define RAWKEY_SPACE 49
#define RAWKEY_A 0
#define RAWKEY_B 11
#define RAWKEY_C 8
#define RAWKEY_D 2
#define RAWKEY_E 14
#define RAWKEY_F 3
#define RAWKEY_G 5
#define RAWKEY_H 4
#define RAWKEY_I 34
#define RAWKEY_J 38
#define RAWKEY_K 40
#define RAWKEY_L 37
#define RAWKEY_M 46
#define RAWKEY_N 45
#define RAWKEY_O 31
#define RAWKEY_P 35
#define RAWKEY_Q 12
#define RAWKEY_R 15
#define RAWKEY_S 1
#define RAWKEY_T 17
#define RAWKEY_U 32
#define RAWKEY_V 9
#define RAWKEY_W 13
#define RAWKEY_X 7
#define RAWKEY_Y 16
#define RAWKEY_Z 6
#define RAWKEY_MINUS 27
#define RAWKEY_EQUALS 24
#define RAWKEY_LEFTBRACKET 33
#define RAWKEY_RIGHTBRACKET 30
#define RAWKEY_BACKSLASH 42
#define RAWKEY_SEMICOLON 41
#define RAWKEY_SINGLEQUOTE 39
#define RAWKEY_COMMA 43
#define RAWKEY_PERIOD 47
#define RAWKEY_SLASH 44
#define RAWKEY_GRAVE 50
#define RAWKEY_LTGT 10
#define RAWKEY_NUMPAD_1 83
#define RAWKEY_NUMPAD_2 84
#define RAWKEY_NUMPAD_3 85
#define RAWKEY_NUMPAD_4 86
#define RAWKEY_NUMPAD_5 87
#define RAWKEY_NUMPAD_6 88
#define RAWKEY_NUMPAD_7 89
#define RAWKEY_NUMPAD_8 91
#define RAWKEY_NUMPAD_9 92
#define RAWKEY_NUMPAD_0 82
#define RAWKEY_NUMPAD_EQUALS 81
#define RAWKEY_NUMPAD_DIVIDE 75
#define RAWKEY_NUMPAD_MULTIPLY 67
#define RAWKEY_NUMPAD_MINUS 78
#define RAWKEY_NUMPAD_PLUS 69
#define RAWKEY_NUMPAD_PERIOD 65
#define RAWKEY_NUMPAD_ENTER 76
#define RAWKEY_NUMLOCK 71
#define RAWKEY_INSERT 114
#define RAWKEY_DELETE 117
#define RAWKEY_HOME 115
#define RAWKEY_END 119
#define RAWKEY_PAGEUP 116
#define RAWKEY_PAGEDOWN 121
#define RAWKEY_CURSOR_UP 126
#define RAWKEY_CURSOR_DOWN 125
#define RAWKEY_CURSOR_LEFT 123
#define RAWKEY_CURSOR_RIGHT 124
/*
* MacOS X support for modifier keys is a bit iffy.
*
* Under SDL (up to 1.2.7 anyway) my ADB keyboard, doesn't
* report key codes for modifier keys. Thus we need the
* modifier hack (see SDL gfx driver) to generate raw key
* codes from modifier presses.
*
* Also, unless you have SDL 1.2.8 and OS 10.3, left and right
* keys are differentiated. On some keyboards they'll never
* be differentiated.
*/
#define RAWKEY_LEFT_CTRL 59
#define RAWKEY_LEFT_SHIFT 56
#define RAWKEY_LEFT_ALT 58
#define RAWKEY_LEFT_SUPER 55
#define RAWKEY_RIGHT_SUPER 54
#define RAWKEY_RIGHT_ALT 61
#define RAWKEY_RIGHT_SHIFT 60
#define RAWKEY_RIGHT_CTRL 62
#define RAWKEY_CAPSLOCK 57
#define RAWKEY_POWER 127
/*
* Mapping from raw key codes to UAE key codes
*/
const struct uaekey_hostmap quartz_keymap[] =
{
{RAWKEYS_COMMON},
{RAWKEY_F11, UAEKEY_F11},
{RAWKEY_F12, UAEKEY_F12},
{RAWKEY_PRINTSCR, UAEKEY_PRINTSCR},
{RAWKEY_SCROLL_LOCK, UAEKEY_SCROLL_LOCK},
{RAWKEY_PAUSE, UAEKEY_PAUSE},
{RAWKEY_NUMPAD_EQUALS, UAEKEY_NUMPAD_EQUALS},
{RAWKEY_POWER, UAEKEY_POWER},
{RAWKEYS_END}
};
/*
* Mapping of uae modifier key codes to Quartz modifier keys
*/
const int quartz_modkeytable[] = {
/* UAEMODKEY_LSHIFT */ RAWKEY_LEFT_SHIFT,
/* UAEMODKEY_LCTRL */ RAWKEY_LEFT_CTRL,
/* UAEMODKEY_LALT */ RAWKEY_LEFT_ALT,
/* UAEMODKEY_LSUPER */ RAWKEY_LEFT_SUPER,
/* UAEMODKEY_RSUPER */ RAWKEY_RIGHT_SUPER,
/* UAEMODKEY_RALT */ RAWKEY_RIGHT_ALT,
/* UAEMODKEY_RCTRL */ RAWKEY_RIGHT_CTRL,
/* UAEMODKEY_RSHIFT */ RAWKEY_RIGHT_SHIFT,
/* UAEMODKEY_CAPSLOCK */ RAWKEY_CAPSLOCK
};
/*
* Hot-key sequences
*/
/*
* F12 is used to eject a CD-ROM on OS X. Don't use
* it as the initiator for control seqeuences.
*/
#define HOTKEY_MODIFIER RAWKEY_F11
#include "hotkeys.h"
#include "hotkeys_common.h"
struct uae_hotkeyseq quartz_hotkeys[] =
{
{ DEFAULT_HOTKEYS },
{ HOTKEYS_END }
};
#endif