src/video/ataricommon/SDL_atarievents.c
changeset 3283 1ed5d432e468
parent 3282 10a12f77f597
child 3284 2b95b2c0b6d4
     1.1 --- a/src/video/ataricommon/SDL_atarievents.c	Sun Sep 20 04:13:23 2009 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,232 +0,0 @@
     1.4 -/*
     1.5 -    SDL - Simple DirectMedia Layer
     1.6 -    Copyright (C) 1997-2009 Sam Lantinga
     1.7 -
     1.8 -    This library is free software; you can redistribute it and/or
     1.9 -    modify it under the terms of the GNU Lesser General Public
    1.10 -    License as published by the Free Software Foundation; either
    1.11 -    version 2.1 of the License, or (at your option) any later version.
    1.12 -
    1.13 -    This library is distributed in the hope that it will be useful,
    1.14 -    but WITHOUT ANY WARRANTY; without even the implied warranty of
    1.15 -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    1.16 -    Lesser General Public License for more details.
    1.17 -
    1.18 -    You should have received a copy of the GNU Lesser General Public
    1.19 -    License along with this library; if not, write to the Free Software
    1.20 -    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    1.21 -
    1.22 -    Sam Lantinga
    1.23 -    slouken@libsdl.org
    1.24 -*/
    1.25 -#include "SDL_config.h"
    1.26 -
    1.27 -/*
    1.28 - *	Atari keyboard events manager
    1.29 - *
    1.30 - *	Patrice Mandin
    1.31 - *
    1.32 - *	This routines choose what the final event manager will be
    1.33 - */
    1.34 -
    1.35 -#include <mint/cookie.h>
    1.36 -#include <mint/ostruct.h>
    1.37 -#include <mint/osbind.h>
    1.38 -
    1.39 -#include "../../events/SDL_sysevents.h"
    1.40 -#include "../../events/SDL_events_c.h"
    1.41 -
    1.42 -#include "SDL_atarikeys.h"
    1.43 -#include "SDL_atarievents_c.h"
    1.44 -#include "SDL_biosevents_c.h"
    1.45 -#include "SDL_gemdosevents_c.h"
    1.46 -#include "SDL_ikbdevents_c.h"
    1.47 -
    1.48 -enum
    1.49 -{
    1.50 -    MCH_ST = 0,
    1.51 -    MCH_STE,
    1.52 -    MCH_TT,
    1.53 -    MCH_F30,
    1.54 -    MCH_CLONE,
    1.55 -    MCH_ARANYM
    1.56 -};
    1.57 -
    1.58 -#ifndef KT_NOCHANGE
    1.59 -# define KT_NOCHANGE -1
    1.60 -#endif
    1.61 -
    1.62 -/* The translation tables from a console scancode to a SDL keysym */
    1.63 -static SDLKey keymap[ATARIBIOS_MAXKEYS];
    1.64 -static unsigned char *keytab_normal;
    1.65 -
    1.66 -void (*SDL_Atari_ShutdownEvents) (void);
    1.67 -
    1.68 -static void
    1.69 -SDL_Atari_InitializeEvents(_THIS)
    1.70 -{
    1.71 -    const char *envr;
    1.72 -    unsigned long cookie_mch;
    1.73 -
    1.74 -    /* Test if we are on an Atari machine or not */
    1.75 -    if (Getcookie(C__MCH, &cookie_mch) == C_NOTFOUND) {
    1.76 -        cookie_mch = 0;
    1.77 -    }
    1.78 -    cookie_mch >>= 16;
    1.79 -
    1.80 -    /* Default is Ikbd, the faster except for clones */
    1.81 -    switch (cookie_mch) {
    1.82 -    case MCH_ST:
    1.83 -    case MCH_STE:
    1.84 -    case MCH_TT:
    1.85 -    case MCH_F30:
    1.86 -    case MCH_ARANYM:
    1.87 -        _this->PumpEvents = AtariIkbd_PumpEvents;
    1.88 -        SDL_Atari_ShutdownEvents = AtariIkbd_ShutdownEvents;
    1.89 -        break;
    1.90 -    default:
    1.91 -        _this->PumpEvents = AtariGemdos_PumpEvents;
    1.92 -        SDL_Atari_ShutdownEvents = AtariGemdos_ShutdownEvents;
    1.93 -        break;
    1.94 -    }
    1.95 -
    1.96 -    envr = SDL_getenv("SDL_ATARI_EVENTSDRIVER");
    1.97 -
    1.98 -    if (!envr) {
    1.99 -        return;
   1.100 -    }
   1.101 -
   1.102 -    if (SDL_strcmp(envr, "ikbd") == 0) {
   1.103 -        _this->PumpEvents = AtariIkbd_PumpEvents;
   1.104 -        SDL_Atari_ShutdownEvents = AtariIkbd_ShutdownEvents;
   1.105 -    }
   1.106 -
   1.107 -    if (SDL_strcmp(envr, "gemdos") == 0) {
   1.108 -        _this->PumpEvents = AtariGemdos_PumpEvents;
   1.109 -        SDL_Atari_ShutdownEvents = AtariGemdos_ShutdownEvents;
   1.110 -    }
   1.111 -
   1.112 -    if (SDL_strcmp(envr, "bios") == 0) {
   1.113 -        _this->PumpEvents = AtariBios_PumpEvents;
   1.114 -        SDL_Atari_ShutdownEvents = AtariBios_ShutdownEvents;
   1.115 -    }
   1.116 -
   1.117 -    SDL_Atari_InitInternalKeymap(_this);
   1.118 -}
   1.119 -
   1.120 -void
   1.121 -Atari_PumpEvents(_THIS)
   1.122 -{
   1.123 -    Atari_InitializeEvents(_this);
   1.124 -
   1.125 -    /* Call choosen routine */
   1.126 -    _this->PumpEvents(_this);
   1.127 -}
   1.128 -
   1.129 -void
   1.130 -SDL_Atari_InitInternalKeymap(_THIS)
   1.131 -{
   1.132 -    int i;
   1.133 -    _KEYTAB *key_tables;
   1.134 -
   1.135 -    /* Read system tables for scancode -> ascii translation */
   1.136 -    key_tables = (_KEYTAB *) Keytbl(KT_NOCHANGE, KT_NOCHANGE, KT_NOCHANGE);
   1.137 -    keytab_normal = key_tables->unshift;
   1.138 -
   1.139 -    /* Initialize keymap */
   1.140 -    for (i = 0; i < ATARIBIOS_MAXKEYS; i++)
   1.141 -        keymap[i] = SDLK_UNKNOWN;
   1.142 -
   1.143 -    /* Functions keys */
   1.144 -    for (i = 0; i < 10; i++)
   1.145 -        keymap[SCANCODE_F1 + i] = SDLK_F1 + i;
   1.146 -
   1.147 -    /* Cursor keypad */
   1.148 -    keymap[SCANCODE_HELP] = SDLK_HELP;
   1.149 -    keymap[SCANCODE_UNDO] = SDLK_UNDO;
   1.150 -    keymap[SCANCODE_INSERT] = SDLK_INSERT;
   1.151 -    keymap[SCANCODE_CLRHOME] = SDLK_HOME;
   1.152 -    keymap[SCANCODE_UP] = SDLK_UP;
   1.153 -    keymap[SCANCODE_DOWN] = SDLK_DOWN;
   1.154 -    keymap[SCANCODE_RIGHT] = SDLK_RIGHT;
   1.155 -    keymap[SCANCODE_LEFT] = SDLK_LEFT;
   1.156 -
   1.157 -    /* Special keys */
   1.158 -    keymap[SCANCODE_ESCAPE] = SDLK_ESCAPE;
   1.159 -    keymap[SCANCODE_BACKSPACE] = SDLK_BACKSPACE;
   1.160 -    keymap[SCANCODE_TAB] = SDLK_TAB;
   1.161 -    keymap[SCANCODE_ENTER] = SDLK_RETURN;
   1.162 -    keymap[SCANCODE_DELETE] = SDLK_DELETE;
   1.163 -    keymap[SCANCODE_LEFTCONTROL] = SDLK_LCTRL;
   1.164 -    keymap[SCANCODE_LEFTSHIFT] = SDLK_LSHIFT;
   1.165 -    keymap[SCANCODE_RIGHTSHIFT] = SDLK_RSHIFT;
   1.166 -    keymap[SCANCODE_LEFTALT] = SDLK_LALT;
   1.167 -    keymap[SCANCODE_CAPSLOCK] = SDLK_CAPSLOCK;
   1.168 -}
   1.169 -
   1.170 -/* Atari to Unicode charset translation table */
   1.171 -
   1.172 -Uint16 SDL_AtariToUnicodeTable[256] = {
   1.173 -    /* Standard ASCII characters from 0x00 to 0x7e */
   1.174 -    /* Unicode stuff from 0x7f to 0xff */
   1.175 -
   1.176 -    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
   1.177 -    0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
   1.178 -    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
   1.179 -    0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
   1.180 -    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
   1.181 -    0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
   1.182 -    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
   1.183 -    0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
   1.184 -
   1.185 -    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
   1.186 -    0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
   1.187 -    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
   1.188 -    0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
   1.189 -    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
   1.190 -    0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
   1.191 -    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
   1.192 -    0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x0394,
   1.193 -
   1.194 -    0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
   1.195 -    0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
   1.196 -    0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
   1.197 -    0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x00DF, 0x0192,
   1.198 -    0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
   1.199 -    0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
   1.200 -    0x00C3, 0x00F5, 0x00D8, 0x00F8, 0x0153, 0x0152, 0x00C0, 0x00C3,
   1.201 -    0x00D5, 0x00A8, 0x00B4, 0x2020, 0x00B6, 0x00A9, 0x00AE, 0x2122,
   1.202 -
   1.203 -    0x0133, 0x0132, 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5,
   1.204 -    0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DB, 0x05DC, 0x05DE, 0x05E0,
   1.205 -    0x05E1, 0x05E2, 0x05E4, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA,
   1.206 -    0x05DF, 0x05DA, 0x05DD, 0x05E3, 0x05E5, 0x00A7, 0x2038, 0x221E,
   1.207 -    0x03B1, 0x03B2, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4,
   1.208 -    0x03A6, 0x0398, 0x03A9, 0x03B4, 0x222E, 0x03C6, 0x2208, 0x2229,
   1.209 -    0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
   1.210 -    0x00B0, 0x2022, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x00B3, 0x00AF
   1.211 -};
   1.212 -
   1.213 -SDL_keysym *
   1.214 -SDL_Atari_TranslateKey(int scancode, SDL_keysym * keysym, SDL_bool pressed)
   1.215 -{
   1.216 -    int asciicode = 0;
   1.217 -
   1.218 -    /* Set the keysym information */
   1.219 -    keysym->scancode = scancode;
   1.220 -    keysym->mod = KMOD_NONE;
   1.221 -    keysym->sym = keymap[scancode];
   1.222 -    keysym->unicode = 0;
   1.223 -
   1.224 -    if (keysym->sym == SDLK_UNKNOWN) {
   1.225 -        keysym->sym = asciicode = keytab_normal[scancode];
   1.226 -    }
   1.227 -
   1.228 -    if (SDL_TranslateUNICODE && pressed) {
   1.229 -        keysym->unicode = SDL_AtariToUnicodeTable[asciicode];
   1.230 -    }
   1.231 -
   1.232 -    return (keysym);
   1.233 -}
   1.234 -
   1.235 -/* vi: set ts=4 sw=4 expandtab: */