diff options
Diffstat (limited to 'apps/plugins/sdl/src/video/ataricommon/SDL_gemdosevents.c')
-rw-r--r-- | apps/plugins/sdl/src/video/ataricommon/SDL_gemdosevents.c | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/apps/plugins/sdl/src/video/ataricommon/SDL_gemdosevents.c b/apps/plugins/sdl/src/video/ataricommon/SDL_gemdosevents.c deleted file mode 100644 index e1ebaa666c..0000000000 --- a/apps/plugins/sdl/src/video/ataricommon/SDL_gemdosevents.c +++ /dev/null | |||
@@ -1,132 +0,0 @@ | |||
1 | /* | ||
2 | SDL - Simple DirectMedia Layer | ||
3 | Copyright (C) 1997-2012 Sam Lantinga | ||
4 | |||
5 | This library is free software; you can redistribute it and/or | ||
6 | modify it under the terms of the GNU Lesser General Public | ||
7 | License as published by the Free Software Foundation; either | ||
8 | version 2.1 of the License, or (at your option) any later version. | ||
9 | |||
10 | This library is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | Lesser General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU Lesser General Public | ||
16 | License along with this library; if not, write to the Free Software | ||
17 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
18 | |||
19 | Sam Lantinga | ||
20 | slouken@libsdl.org | ||
21 | */ | ||
22 | #include "SDL_config.h" | ||
23 | |||
24 | /* | ||
25 | * Atari keyboard events manager, using Gemdos | ||
26 | * | ||
27 | * Patrice Mandin | ||
28 | */ | ||
29 | |||
30 | /* Mint includes */ | ||
31 | #include <mint/osbind.h> | ||
32 | #include <mint/cookie.h> | ||
33 | |||
34 | #include "../../events/SDL_sysevents.h" | ||
35 | #include "../../events/SDL_events_c.h" | ||
36 | |||
37 | #include "SDL_atarikeys.h" | ||
38 | #include "SDL_atarievents_c.h" | ||
39 | #include "SDL_xbiosevents_c.h" | ||
40 | #include "SDL_ataridevmouse_c.h" | ||
41 | |||
42 | /* To save state of keyboard */ | ||
43 | |||
44 | static unsigned char gemdos_currentkeyboard[ATARIBIOS_MAXKEYS]; | ||
45 | static unsigned char gemdos_previouskeyboard[ATARIBIOS_MAXKEYS]; | ||
46 | static SDL_bool use_dev_mouse = SDL_FALSE; | ||
47 | |||
48 | static void UpdateSpecialKeys(int special_keys_state); | ||
49 | |||
50 | void AtariGemdos_InitOSKeymap(_THIS) | ||
51 | { | ||
52 | int vectors_mask; | ||
53 | /* unsigned long dummy;*/ | ||
54 | |||
55 | SDL_memset(gemdos_currentkeyboard, 0, sizeof(gemdos_currentkeyboard)); | ||
56 | SDL_memset(gemdos_previouskeyboard, 0, sizeof(gemdos_previouskeyboard)); | ||
57 | |||
58 | use_dev_mouse = (SDL_AtariDevMouse_Open()!=0) ? SDL_TRUE : SDL_FALSE; | ||
59 | |||
60 | vectors_mask = ATARI_XBIOS_JOYSTICKEVENTS; /* XBIOS joystick events */ | ||
61 | if (!use_dev_mouse) { | ||
62 | vectors_mask |= ATARI_XBIOS_MOUSEEVENTS; /* XBIOS mouse events */ | ||
63 | } | ||
64 | /* if (Getcookie(C_MiNT, &dummy)==C_FOUND) { | ||
65 | vectors_mask = 0; | ||
66 | }*/ | ||
67 | SDL_AtariXbios_InstallVectors(vectors_mask); | ||
68 | } | ||
69 | |||
70 | void AtariGemdos_PumpEvents(_THIS) | ||
71 | { | ||
72 | int i; | ||
73 | SDL_keysym keysym; | ||
74 | |||
75 | /* Update pressed keys */ | ||
76 | SDL_memset(gemdos_currentkeyboard, 0, ATARIBIOS_MAXKEYS); | ||
77 | |||
78 | while (Cconis()!=DEV_BUSY) { | ||
79 | unsigned long key_pressed; | ||
80 | key_pressed=Cnecin(); | ||
81 | gemdos_currentkeyboard[(key_pressed>>16)&(ATARIBIOS_MAXKEYS-1)]=0xFF; | ||
82 | } | ||
83 | |||
84 | /* Read special keys */ | ||
85 | UpdateSpecialKeys(Kbshift(-1)); | ||
86 | |||
87 | /* Now generate events */ | ||
88 | for (i=0; i<ATARIBIOS_MAXKEYS; i++) { | ||
89 | /* Key pressed ? */ | ||
90 | if (gemdos_currentkeyboard[i] && !gemdos_previouskeyboard[i]) | ||
91 | SDL_PrivateKeyboard(SDL_PRESSED, | ||
92 | SDL_Atari_TranslateKey(i, &keysym, SDL_TRUE)); | ||
93 | |||
94 | /* Key unpressed ? */ | ||
95 | if (gemdos_previouskeyboard[i] && !gemdos_currentkeyboard[i]) | ||
96 | SDL_PrivateKeyboard(SDL_RELEASED, | ||
97 | SDL_Atari_TranslateKey(i, &keysym, SDL_FALSE)); | ||
98 | } | ||
99 | |||
100 | if (use_dev_mouse) { | ||
101 | SDL_AtariDevMouse_PostMouseEvents(this, SDL_TRUE); | ||
102 | } else { | ||
103 | SDL_AtariXbios_PostMouseEvents(this, SDL_TRUE); | ||
104 | } | ||
105 | |||
106 | /* Will be previous table */ | ||
107 | SDL_memcpy(gemdos_previouskeyboard, gemdos_currentkeyboard, sizeof(gemdos_previouskeyboard)); | ||
108 | } | ||
109 | |||
110 | static void UpdateSpecialKeys(int special_keys_state) | ||
111 | { | ||
112 | #define UPDATE_SPECIAL_KEYS(numbit,scancode) \ | ||
113 | { \ | ||
114 | if (special_keys_state & (1<<(numbit))) { \ | ||
115 | gemdos_currentkeyboard[scancode]=0xFF; \ | ||
116 | } \ | ||
117 | } | ||
118 | |||
119 | UPDATE_SPECIAL_KEYS(K_RSHIFT, SCANCODE_RIGHTSHIFT); | ||
120 | UPDATE_SPECIAL_KEYS(K_LSHIFT, SCANCODE_LEFTSHIFT); | ||
121 | UPDATE_SPECIAL_KEYS(K_CTRL, SCANCODE_LEFTCONTROL); | ||
122 | UPDATE_SPECIAL_KEYS(K_ALT, SCANCODE_LEFTALT); | ||
123 | UPDATE_SPECIAL_KEYS(K_CAPSLOCK, SCANCODE_CAPSLOCK); | ||
124 | } | ||
125 | |||
126 | void AtariGemdos_ShutdownEvents(void) | ||
127 | { | ||
128 | SDL_AtariXbios_RestoreVectors(); | ||
129 | if (use_dev_mouse) { | ||
130 | SDL_AtariDevMouse_Close(); | ||
131 | } | ||
132 | } | ||