32
32
#include <mint/cookie.h>
33
#include <mint/ostruct.h>
34
#include <mint/osbind.h>
34
36
#include "../../events/SDL_sysevents.h"
35
37
#include "../../events/SDL_events_c.h"
39
#include "SDL_atarikeys.h"
37
40
#include "SDL_atarievents_c.h"
38
41
#include "SDL_biosevents_c.h"
39
42
#include "SDL_gemdosevents_c.h"
55
# define KT_NOCHANGE -1
58
/* The translation tables from a console scancode to a SDL keysym */
59
static SDLKey keymap[ATARIBIOS_MAXKEYS];
60
static unsigned char *keytab_normal;
51
62
void (*Atari_ShutdownEvents)(void);
53
64
static void Atari_InitializeEvents(_THIS)
109
120
Atari_InitializeEvents(this);
122
SDL_Atari_InitInternalKeymap(this);
111
124
/* Call choosen routine */
112
125
this->InitOSKeymap(this);
128
void SDL_Atari_InitInternalKeymap(_THIS)
133
/* Read system tables for scancode -> ascii translation */
134
key_tables = (_KEYTAB *) Keytbl(KT_NOCHANGE, KT_NOCHANGE, KT_NOCHANGE);
135
keytab_normal = key_tables->unshift;
137
/* Initialize keymap */
138
for ( i=0; i<ATARIBIOS_MAXKEYS; i++ )
139
keymap[i] = SDLK_UNKNOWN;
142
for ( i = 0; i<10; i++ )
143
keymap[SCANCODE_F1 + i] = SDLK_F1+i;
146
keymap[SCANCODE_HELP] = SDLK_HELP;
147
keymap[SCANCODE_UNDO] = SDLK_UNDO;
148
keymap[SCANCODE_INSERT] = SDLK_INSERT;
149
keymap[SCANCODE_CLRHOME] = SDLK_HOME;
150
keymap[SCANCODE_UP] = SDLK_UP;
151
keymap[SCANCODE_DOWN] = SDLK_DOWN;
152
keymap[SCANCODE_RIGHT] = SDLK_RIGHT;
153
keymap[SCANCODE_LEFT] = SDLK_LEFT;
156
keymap[SCANCODE_ESCAPE] = SDLK_ESCAPE;
157
keymap[SCANCODE_BACKSPACE] = SDLK_BACKSPACE;
158
keymap[SCANCODE_TAB] = SDLK_TAB;
159
keymap[SCANCODE_ENTER] = SDLK_RETURN;
160
keymap[SCANCODE_DELETE] = SDLK_DELETE;
161
keymap[SCANCODE_LEFTCONTROL] = SDLK_LCTRL;
162
keymap[SCANCODE_LEFTSHIFT] = SDLK_LSHIFT;
163
keymap[SCANCODE_RIGHTSHIFT] = SDLK_RSHIFT;
164
keymap[SCANCODE_LEFTALT] = SDLK_LALT;
165
keymap[SCANCODE_CAPSLOCK] = SDLK_CAPSLOCK;
115
168
void Atari_PumpEvents(_THIS)
117
170
Atari_InitializeEvents(this);
162
215
0x2261,0x00B1,0x2265,0x2264,0x2320,0x2321,0x00F7,0x2248,
163
216
0x00B0,0x2022,0x00B7,0x221A,0x207F,0x00B2,0x00B3,0x00AF
219
SDL_keysym *SDL_Atari_TranslateKey(int scancode, SDL_keysym *keysym,
224
/* Set the keysym information */
225
keysym->scancode = scancode;
226
keysym->mod = KMOD_NONE;
227
keysym->sym = keymap[scancode];
230
if (keysym->sym == SDLK_UNKNOWN) {
231
keysym->sym = asciicode = keytab_normal[scancode];
234
if (SDL_TranslateUNICODE && pressed) {
235
keysym->unicode = SDL_AtariToUnicodeTable[asciicode];