src/video/ataricommon/SDL_atarievents.c
author Sam Lantinga
Tue, 07 Feb 2006 06:59:48 +0000
changeset 1336 3692456e7b0f
parent 1312 c9b51268668f
child 1338 604d73db6802
permissions -rw-r--r--
Use SDL_ prefixed versions of C library functions.
FIXME:
Change #include <stdlib.h> to #include "SDL_stdlib.h"
Change #include <string.h> to #include "SDL_string.h"
Make sure nothing else broke because of this...
slouken@281
     1
/*
slouken@281
     2
    SDL - Simple DirectMedia Layer
slouken@1312
     3
    Copyright (C) 1997-2006 Sam Lantinga
slouken@281
     4
slouken@281
     5
    This library is free software; you can redistribute it and/or
slouken@1312
     6
    modify it under the terms of the GNU Lesser General Public
slouken@281
     7
    License as published by the Free Software Foundation; either
slouken@1312
     8
    version 2.1 of the License, or (at your option) any later version.
slouken@281
     9
slouken@281
    10
    This library is distributed in the hope that it will be useful,
slouken@281
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
slouken@281
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
slouken@1312
    13
    Lesser General Public License for more details.
slouken@281
    14
slouken@1312
    15
    You should have received a copy of the GNU Lesser General Public
slouken@1312
    16
    License along with this library; if not, write to the Free Software
slouken@1312
    17
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
slouken@281
    18
slouken@281
    19
    Sam Lantinga
slouken@281
    20
    slouken@libsdl.org
slouken@281
    21
*/
slouken@281
    22
slouken@281
    23
/*
slouken@281
    24
 *	Atari keyboard events manager
slouken@281
    25
 *
slouken@281
    26
 *	Patrice Mandin
slouken@281
    27
 *
slouken@281
    28
 *	This routines choose what the final event manager will be
slouken@281
    29
 */
slouken@281
    30
slouken@281
    31
#include <stdlib.h>
slouken@281
    32
#include <string.h>
slouken@281
    33
slouken@557
    34
#include <mint/cookie.h>
slouken@281
    35
slouken@281
    36
#include "SDL.h"
slouken@281
    37
#include "SDL_sysevents.h"
slouken@281
    38
#include "SDL_events_c.h"
slouken@281
    39
slouken@281
    40
#include "SDL_atarievents_c.h"
slouken@281
    41
#include "SDL_biosevents_c.h"
slouken@281
    42
#include "SDL_gemdosevents_c.h"
slouken@281
    43
#include "SDL_ikbdevents_c.h"
slouken@281
    44
slouken@281
    45
enum {
slouken@281
    46
	MCH_ST=0,
slouken@281
    47
	MCH_STE,
slouken@281
    48
	MCH_TT,
patmandin@1054
    49
	MCH_F30,
patmandin@1079
    50
	MCH_CLONE,
patmandin@1054
    51
	MCH_ARANYM
slouken@281
    52
};
slouken@281
    53
slouken@281
    54
void (*Atari_ShutdownEvents)(void);
slouken@281
    55
slouken@281
    56
static void Atari_InitializeEvents(_THIS)
slouken@281
    57
{
slouken@281
    58
	const char *envr;
slouken@281
    59
	unsigned long cookie_mch;
slouken@281
    60
slouken@281
    61
	/* Test if we are on an Atari machine or not */
slouken@281
    62
	if (Getcookie(C__MCH, &cookie_mch) == C_NOTFOUND) {
slouken@281
    63
		cookie_mch = 0;
slouken@281
    64
	}
slouken@281
    65
	cookie_mch >>= 16;
slouken@281
    66
slouken@281
    67
	/* Default is Ikbd, the faster except for clones */
slouken@281
    68
	switch(cookie_mch) {
slouken@281
    69
		case MCH_ST:
slouken@281
    70
		case MCH_STE:
slouken@281
    71
		case MCH_TT:
slouken@281
    72
		case MCH_F30:
patmandin@1054
    73
		case MCH_ARANYM:
slouken@281
    74
			this->InitOSKeymap=AtariIkbd_InitOSKeymap;
slouken@281
    75
			this->PumpEvents=AtariIkbd_PumpEvents;
slouken@281
    76
			Atari_ShutdownEvents=AtariIkbd_ShutdownEvents;
slouken@281
    77
			break;
slouken@281
    78
		default:
slouken@281
    79
			this->InitOSKeymap=AtariGemdos_InitOSKeymap;
slouken@281
    80
			this->PumpEvents=AtariGemdos_PumpEvents;
slouken@281
    81
			Atari_ShutdownEvents=AtariGemdos_ShutdownEvents;
slouken@281
    82
			break;
slouken@281
    83
	}
slouken@281
    84
slouken@1336
    85
	envr = SDL_getenv("SDL_ATARI_EVENTSDRIVER");
slouken@281
    86
slouken@281
    87
 	if (!envr) {
slouken@281
    88
		return;
slouken@281
    89
	}
slouken@281
    90
slouken@1336
    91
	if (SDL_strcmp(envr, "ikbd") == 0) {
slouken@281
    92
		this->InitOSKeymap=AtariIkbd_InitOSKeymap;
slouken@281
    93
		this->PumpEvents=AtariIkbd_PumpEvents;
slouken@281
    94
		Atari_ShutdownEvents=AtariIkbd_ShutdownEvents;
slouken@281
    95
	}
slouken@281
    96
slouken@1336
    97
	if (SDL_strcmp(envr, "gemdos") == 0) {
slouken@281
    98
		this->InitOSKeymap=AtariGemdos_InitOSKeymap;
slouken@281
    99
		this->PumpEvents=AtariGemdos_PumpEvents;
slouken@281
   100
		Atari_ShutdownEvents=AtariGemdos_ShutdownEvents;
slouken@281
   101
	}
slouken@281
   102
slouken@1336
   103
	if (SDL_strcmp(envr, "bios") == 0) {
slouken@281
   104
		this->InitOSKeymap=AtariBios_InitOSKeymap;
slouken@281
   105
		this->PumpEvents=AtariBios_PumpEvents;
slouken@281
   106
		Atari_ShutdownEvents=AtariBios_ShutdownEvents;
slouken@281
   107
	}
slouken@281
   108
}
slouken@281
   109
slouken@281
   110
void Atari_InitOSKeymap(_THIS)
slouken@281
   111
{
slouken@281
   112
	Atari_InitializeEvents(this);
slouken@281
   113
slouken@281
   114
	/* Call choosen routine */
slouken@281
   115
	this->InitOSKeymap(this);
slouken@281
   116
}
slouken@281
   117
slouken@281
   118
void Atari_PumpEvents(_THIS)
slouken@281
   119
{
slouken@281
   120
	Atari_InitializeEvents(this);
slouken@281
   121
slouken@281
   122
	/* Call choosen routine */
slouken@281
   123
	this->PumpEvents(this);
slouken@281
   124
}
patmandin@1209
   125
patmandin@1221
   126
/* Atari to Unicode charset translation table */
patmandin@1221
   127
patmandin@1221
   128
Uint16 SDL_AtariToUnicodeTable[256]={
patmandin@1221
   129
	/* Standard ASCII characters from 0x00 to 0x7e */
patmandin@1221
   130
	/* Unicode stuff from 0x7f to 0xff */
patmandin@1221
   131
patmandin@1221
   132
	0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
patmandin@1221
   133
	0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
patmandin@1221
   134
	0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
patmandin@1221
   135
	0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
patmandin@1221
   136
	0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
patmandin@1221
   137
	0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
patmandin@1221
   138
	0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
patmandin@1221
   139
	0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
patmandin@1209
   140
patmandin@1221
   141
	0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
patmandin@1221
   142
	0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
patmandin@1221
   143
	0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
patmandin@1221
   144
	0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
patmandin@1221
   145
	0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
patmandin@1221
   146
	0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
patmandin@1221
   147
	0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
patmandin@1221
   148
	0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x0394,
patmandin@1221
   149
patmandin@1221
   150
	0x00C7,0x00FC,0x00E9,0x00E2,0x00E4,0x00E0,0x00E5,0x00E7,
patmandin@1221
   151
	0x00EA,0x00EB,0x00E8,0x00EF,0x00EE,0x00EC,0x00C4,0x00C5,
patmandin@1221
   152
	0x00C9,0x00E6,0x00C6,0x00F4,0x00F6,0x00F2,0x00FB,0x00F9,
patmandin@1221
   153
	0x00FF,0x00D6,0x00DC,0x00A2,0x00A3,0x00A5,0x00DF,0x0192,
patmandin@1221
   154
	0x00E1,0x00ED,0x00F3,0x00FA,0x00F1,0x00D1,0x00AA,0x00BA,
patmandin@1221
   155
	0x00BF,0x2310,0x00AC,0x00BD,0x00BC,0x00A1,0x00AB,0x00BB,
patmandin@1221
   156
	0x00C3,0x00F5,0x00D8,0x00F8,0x0153,0x0152,0x00C0,0x00C3,
patmandin@1221
   157
	0x00D5,0x00A8,0x00B4,0x2020,0x00B6,0x00A9,0x00AE,0x2122,
patmandin@1221
   158
patmandin@1221
   159
	0x0133,0x0132,0x05D0,0x05D1,0x05D2,0x05D3,0x05D4,0x05D5,
patmandin@1221
   160
	0x05D6,0x05D7,0x05D8,0x05D9,0x05DB,0x05DC,0x05DE,0x05E0,
patmandin@1221
   161
	0x05E1,0x05E2,0x05E4,0x05E6,0x05E7,0x05E8,0x05E9,0x05EA,
patmandin@1221
   162
	0x05DF,0x05DA,0x05DD,0x05E3,0x05E5,0x00A7,0x2038,0x221E,
patmandin@1221
   163
	0x03B1,0x03B2,0x0393,0x03C0,0x03A3,0x03C3,0x00B5,0x03C4,
patmandin@1221
   164
	0x03A6,0x0398,0x03A9,0x03B4,0x222E,0x03C6,0x2208,0x2229,
patmandin@1221
   165
	0x2261,0x00B1,0x2265,0x2264,0x2320,0x2321,0x00F7,0x2248,
patmandin@1221
   166
	0x00B0,0x2022,0x00B7,0x221A,0x207F,0x00B2,0x00B3,0x00AF
patmandin@1221
   167
};