~ubuntu-branches/ubuntu/natty/libsdl1.2/natty

« back to all changes in this revision

Viewing changes to src/video/ataricommon/SDL_atarievents.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2007-12-05 20:29:43 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20071205202943-ryogi07hodn5cdif
Tags: 1.2.12-1ubuntu1
* Merge with Debian; remaining changes:
  - Remove svgalib support.
  - Prefer libgl1-mesa-dev build-dependency over xlibmesa-gl-dev.
  - Build for lpia as for i386.
* Link using -Wl,-Bsymbolic-functions.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
 */
31
31
 
32
32
#include <mint/cookie.h>
 
33
#include <mint/ostruct.h>
 
34
#include <mint/osbind.h>
33
35
 
34
36
#include "../../events/SDL_sysevents.h"
35
37
#include "../../events/SDL_events_c.h"
36
38
 
 
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"
48
51
        MCH_ARANYM
49
52
};
50
53
 
 
54
#ifndef KT_NOCHANGE
 
55
# define KT_NOCHANGE -1
 
56
#endif
 
57
 
 
58
/* The translation tables from a console scancode to a SDL keysym */
 
59
static SDLKey keymap[ATARIBIOS_MAXKEYS];
 
60
static unsigned char *keytab_normal;
 
61
 
51
62
void (*Atari_ShutdownEvents)(void);
52
63
 
53
64
static void Atari_InitializeEvents(_THIS)
108
119
{
109
120
        Atari_InitializeEvents(this);
110
121
 
 
122
        SDL_Atari_InitInternalKeymap(this);
 
123
 
111
124
        /* Call choosen routine */
112
125
        this->InitOSKeymap(this);
113
126
}
114
127
 
 
128
void SDL_Atari_InitInternalKeymap(_THIS)
 
129
{
 
130
        int i;
 
131
        _KEYTAB *key_tables;
 
132
 
 
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;
 
136
 
 
137
        /* Initialize keymap */
 
138
        for ( i=0; i<ATARIBIOS_MAXKEYS; i++ )
 
139
                keymap[i] = SDLK_UNKNOWN;
 
140
 
 
141
        /* Functions keys */
 
142
        for ( i = 0; i<10; i++ )
 
143
                keymap[SCANCODE_F1 + i] = SDLK_F1+i;
 
144
 
 
145
        /* Cursor keypad */
 
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;
 
154
 
 
155
        /* Special keys */
 
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;
 
166
}
 
167
 
115
168
void Atari_PumpEvents(_THIS)
116
169
{
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
164
217
};
 
218
 
 
219
SDL_keysym *SDL_Atari_TranslateKey(int scancode, SDL_keysym *keysym,
 
220
        SDL_bool pressed)
 
221
{
 
222
        int asciicode = 0;
 
223
 
 
224
        /* Set the keysym information */
 
225
        keysym->scancode = scancode;
 
226
        keysym->mod = KMOD_NONE;
 
227
        keysym->sym = keymap[scancode];
 
228
        keysym->unicode = 0;
 
229
 
 
230
        if (keysym->sym == SDLK_UNKNOWN) {
 
231
                keysym->sym = asciicode = keytab_normal[scancode];              
 
232
        }
 
233
 
 
234
        if (SDL_TranslateUNICODE && pressed) {
 
235
                keysym->unicode = SDL_AtariToUnicodeTable[asciicode];
 
236
        }
 
237
 
 
238
        return(keysym);
 
239
}