Mercurial > sdl-ios-xcode
annotate src/video/ataricommon/SDL_atarievents.c @ 4068:86746036a6d6 SDL-1.2
I think this fixes bug #454
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 15 Jul 2007 14:05:31 +0000 |
parents | bf1586b58ef2 |
children | a1b03ba2fcd0 |
rev | line source |
---|---|
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1221
diff
changeset
|
3 Copyright (C) 1997-2006 Sam Lantinga |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1221
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1221
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1221
diff
changeset
|
13 Lesser General Public License for more details. |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1221
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1221
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1221
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 Sam Lantinga |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 slouken@libsdl.org |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 */ |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1361
diff
changeset
|
22 #include "SDL_config.h" |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
24 /* |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 * Atari keyboard events manager |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 * |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
27 * Patrice Mandin |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 * |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 * This routines choose what the final event manager will be |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
30 */ |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
31 |
557
0ce5a68278fd
Updated Atari port for new system headers (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
32 #include <mint/cookie.h> |
3860
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
33 #include <mint/ostruct.h> |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
34 #include <mint/osbind.h> |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
35 |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
36 #include "../../events/SDL_sysevents.h" |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
37 #include "../../events/SDL_events_c.h" |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
38 |
3860
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
39 #include "SDL_atarikeys.h" |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
40 #include "SDL_atarievents_c.h" |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
41 #include "SDL_biosevents_c.h" |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
42 #include "SDL_gemdosevents_c.h" |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
43 #include "SDL_ikbdevents_c.h" |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
44 |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
45 enum { |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
46 MCH_ST=0, |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
47 MCH_STE, |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
48 MCH_TT, |
1054
e89d7f826b4a
Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents:
769
diff
changeset
|
49 MCH_F30, |
1079
39b5606fa543
Forgot enumeration value for Atari clones
Patrice Mandin <patmandin@gmail.com>
parents:
1054
diff
changeset
|
50 MCH_CLONE, |
1054
e89d7f826b4a
Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents:
769
diff
changeset
|
51 MCH_ARANYM |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
52 }; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
53 |
3860
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
54 #ifndef KT_NOCHANGE |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
55 # define KT_NOCHANGE -1 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
56 #endif |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
57 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
58 /* The translation tables from a console scancode to a SDL keysym */ |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
59 static SDLKey keymap[ATARIBIOS_MAXKEYS]; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
60 static unsigned char *keytab_normal; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
61 |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
62 void (*Atari_ShutdownEvents)(void); |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
63 |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
64 static void Atari_InitializeEvents(_THIS) |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
65 { |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
66 const char *envr; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
67 unsigned long cookie_mch; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
68 |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
69 /* Test if we are on an Atari machine or not */ |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
70 if (Getcookie(C__MCH, &cookie_mch) == C_NOTFOUND) { |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
71 cookie_mch = 0; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
72 } |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
73 cookie_mch >>= 16; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
74 |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
75 /* Default is Ikbd, the faster except for clones */ |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
76 switch(cookie_mch) { |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
77 case MCH_ST: |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
78 case MCH_STE: |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
79 case MCH_TT: |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
80 case MCH_F30: |
1054
e89d7f826b4a
Add support for ARAnyM Atari emulator
Patrice Mandin <patmandin@gmail.com>
parents:
769
diff
changeset
|
81 case MCH_ARANYM: |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
82 this->InitOSKeymap=AtariIkbd_InitOSKeymap; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
83 this->PumpEvents=AtariIkbd_PumpEvents; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
84 Atari_ShutdownEvents=AtariIkbd_ShutdownEvents; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
85 break; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
86 default: |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
87 this->InitOSKeymap=AtariGemdos_InitOSKeymap; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
88 this->PumpEvents=AtariGemdos_PumpEvents; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
89 Atari_ShutdownEvents=AtariGemdos_ShutdownEvents; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
90 break; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
91 } |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
92 |
1336
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1312
diff
changeset
|
93 envr = SDL_getenv("SDL_ATARI_EVENTSDRIVER"); |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
94 |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
95 if (!envr) { |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
96 return; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
97 } |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
98 |
1336
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1312
diff
changeset
|
99 if (SDL_strcmp(envr, "ikbd") == 0) { |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
100 this->InitOSKeymap=AtariIkbd_InitOSKeymap; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
101 this->PumpEvents=AtariIkbd_PumpEvents; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
102 Atari_ShutdownEvents=AtariIkbd_ShutdownEvents; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
103 } |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
104 |
1336
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1312
diff
changeset
|
105 if (SDL_strcmp(envr, "gemdos") == 0) { |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
106 this->InitOSKeymap=AtariGemdos_InitOSKeymap; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
107 this->PumpEvents=AtariGemdos_PumpEvents; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
108 Atari_ShutdownEvents=AtariGemdos_ShutdownEvents; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
109 } |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
110 |
1336
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1312
diff
changeset
|
111 if (SDL_strcmp(envr, "bios") == 0) { |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
112 this->InitOSKeymap=AtariBios_InitOSKeymap; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
113 this->PumpEvents=AtariBios_PumpEvents; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
114 Atari_ShutdownEvents=AtariBios_ShutdownEvents; |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
115 } |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
116 } |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
117 |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
118 void Atari_InitOSKeymap(_THIS) |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
119 { |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
120 Atari_InitializeEvents(this); |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
121 |
3860
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
122 SDL_Atari_InitInternalKeymap(this); |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
123 |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
124 /* Call choosen routine */ |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
125 this->InitOSKeymap(this); |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
126 } |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
127 |
3860
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
128 void SDL_Atari_InitInternalKeymap(_THIS) |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
129 { |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
130 int i; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
131 _KEYTAB *key_tables; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
132 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
133 /* Read system tables for scancode -> ascii translation */ |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
134 key_tables = (_KEYTAB *) Keytbl(KT_NOCHANGE, KT_NOCHANGE, KT_NOCHANGE); |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
135 keytab_normal = key_tables->unshift; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
136 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
137 /* Initialize keymap */ |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
138 for ( i=0; i<ATARIBIOS_MAXKEYS; i++ ) |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
139 keymap[i] = SDLK_UNKNOWN; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
140 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
141 /* Functions keys */ |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
142 for ( i = 0; i<10; i++ ) |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
143 keymap[SCANCODE_F1 + i] = SDLK_F1+i; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
144 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
145 /* Cursor keypad */ |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
146 keymap[SCANCODE_HELP] = SDLK_HELP; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
147 keymap[SCANCODE_UNDO] = SDLK_UNDO; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
148 keymap[SCANCODE_INSERT] = SDLK_INSERT; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
149 keymap[SCANCODE_CLRHOME] = SDLK_HOME; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
150 keymap[SCANCODE_UP] = SDLK_UP; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
151 keymap[SCANCODE_DOWN] = SDLK_DOWN; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
152 keymap[SCANCODE_RIGHT] = SDLK_RIGHT; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
153 keymap[SCANCODE_LEFT] = SDLK_LEFT; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
154 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
155 /* Special keys */ |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
156 keymap[SCANCODE_ESCAPE] = SDLK_ESCAPE; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
157 keymap[SCANCODE_BACKSPACE] = SDLK_BACKSPACE; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
158 keymap[SCANCODE_TAB] = SDLK_TAB; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
159 keymap[SCANCODE_ENTER] = SDLK_RETURN; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
160 keymap[SCANCODE_DELETE] = SDLK_DELETE; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
161 keymap[SCANCODE_LEFTCONTROL] = SDLK_LCTRL; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
162 keymap[SCANCODE_LEFTSHIFT] = SDLK_LSHIFT; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
163 keymap[SCANCODE_RIGHTSHIFT] = SDLK_RSHIFT; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
164 keymap[SCANCODE_LEFTALT] = SDLK_LALT; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
165 keymap[SCANCODE_CAPSLOCK] = SDLK_CAPSLOCK; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
166 } |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
167 |
281
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
168 void Atari_PumpEvents(_THIS) |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
169 { |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
170 Atari_InitializeEvents(this); |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
171 |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
172 /* Call choosen routine */ |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
173 this->PumpEvents(this); |
c5010ab8ba35
Added initial support for Atari (thanks Patrice!)
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
174 } |
1209
a55ac374271c
Added preliminary missingtranslation from Atari to Unicode charset
Patrice Mandin <patmandin@gmail.com>
parents:
1079
diff
changeset
|
175 |
1221
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
176 /* Atari to Unicode charset translation table */ |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
177 |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
178 Uint16 SDL_AtariToUnicodeTable[256]={ |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
179 /* Standard ASCII characters from 0x00 to 0x7e */ |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
180 /* Unicode stuff from 0x7f to 0xff */ |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
181 |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
182 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
183 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
184 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
185 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
186 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
187 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
188 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
189 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, |
1209
a55ac374271c
Added preliminary missingtranslation from Atari to Unicode charset
Patrice Mandin <patmandin@gmail.com>
parents:
1079
diff
changeset
|
190 |
1221
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
191 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
192 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
193 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
194 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
195 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
196 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
197 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
198 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x0394, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
199 |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
200 0x00C7,0x00FC,0x00E9,0x00E2,0x00E4,0x00E0,0x00E5,0x00E7, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
201 0x00EA,0x00EB,0x00E8,0x00EF,0x00EE,0x00EC,0x00C4,0x00C5, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
202 0x00C9,0x00E6,0x00C6,0x00F4,0x00F6,0x00F2,0x00FB,0x00F9, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
203 0x00FF,0x00D6,0x00DC,0x00A2,0x00A3,0x00A5,0x00DF,0x0192, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
204 0x00E1,0x00ED,0x00F3,0x00FA,0x00F1,0x00D1,0x00AA,0x00BA, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
205 0x00BF,0x2310,0x00AC,0x00BD,0x00BC,0x00A1,0x00AB,0x00BB, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
206 0x00C3,0x00F5,0x00D8,0x00F8,0x0153,0x0152,0x00C0,0x00C3, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
207 0x00D5,0x00A8,0x00B4,0x2020,0x00B6,0x00A9,0x00AE,0x2122, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
208 |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
209 0x0133,0x0132,0x05D0,0x05D1,0x05D2,0x05D3,0x05D4,0x05D5, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
210 0x05D6,0x05D7,0x05D8,0x05D9,0x05DB,0x05DC,0x05DE,0x05E0, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
211 0x05E1,0x05E2,0x05E4,0x05E6,0x05E7,0x05E8,0x05E9,0x05EA, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
212 0x05DF,0x05DA,0x05DD,0x05E3,0x05E5,0x00A7,0x2038,0x221E, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
213 0x03B1,0x03B2,0x0393,0x03C0,0x03A3,0x03C3,0x00B5,0x03C4, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
214 0x03A6,0x0398,0x03A9,0x03B4,0x222E,0x03C6,0x2208,0x2229, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
215 0x2261,0x00B1,0x2265,0x2264,0x2320,0x2321,0x00F7,0x2248, |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
216 0x00B0,0x2022,0x00B7,0x221A,0x207F,0x00B2,0x00B3,0x00AF |
8ef3e7e92a91
Use a simple table for Unicode translation
Patrice Mandin <patmandin@gmail.com>
parents:
1209
diff
changeset
|
217 }; |
3860
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
218 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
219 SDL_keysym *SDL_Atari_TranslateKey(int scancode, SDL_keysym *keysym, |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
220 SDL_bool pressed) |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
221 { |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
222 int asciicode = 0; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
223 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
224 /* Set the keysym information */ |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
225 keysym->scancode = scancode; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
226 keysym->mod = KMOD_NONE; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
227 keysym->sym = keymap[scancode]; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
228 keysym->unicode = 0; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
229 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
230 if (keysym->sym == SDLK_UNKNOWN) { |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
231 keysym->sym = asciicode = keytab_normal[scancode]; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
232 } |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
233 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
234 if (SDL_TranslateUNICODE && pressed) { |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
235 keysym->unicode = SDL_AtariToUnicodeTable[asciicode]; |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
236 } |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
237 |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
238 return(keysym); |
bf1586b58ef2
Factorize keyboard mapping between drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1402
diff
changeset
|
239 } |