Mercurial > sdl-ios-xcode
comparison src/video/ataricommon/SDL_ikbdevents.c @ 1209:a55ac374271c
Added preliminary missingtranslation from Atari to Unicode charset
author | Patrice Mandin <patmandin@gmail.com> |
---|---|
date | Sun, 01 Jan 2006 19:14:11 +0000 |
parents | 48436ffdf677 |
children | 8ef3e7e92a91 |
comparison
equal
deleted
inserted
replaced
1208:d90b362628ea | 1209:a55ac374271c |
---|---|
39 #include "SDL.h" | 39 #include "SDL.h" |
40 #include "SDL_sysevents.h" | 40 #include "SDL_sysevents.h" |
41 #include "SDL_events_c.h" | 41 #include "SDL_events_c.h" |
42 | 42 |
43 #include "SDL_atarikeys.h" | 43 #include "SDL_atarikeys.h" |
44 #include "SDL_atarievents_c.h" | |
44 #include "SDL_ikbdinterrupt_s.h" | 45 #include "SDL_ikbdinterrupt_s.h" |
45 | 46 |
46 /* Special keys state */ | 47 /* Special keys state */ |
47 enum { | 48 enum { |
48 K_RSHIFT=0, | 49 K_RSHIFT=0, |
73 static int caps_state; /* caps lock state */ | 74 static int caps_state; /* caps lock state */ |
74 _KEYTAB *curtables; | 75 _KEYTAB *curtables; |
75 static unsigned char *tab_unshift, *tab_shift, *tab_caps; | 76 static unsigned char *tab_unshift, *tab_shift, *tab_caps; |
76 static SDLKey keymap[ATARIBIOS_MAXKEYS]; | 77 static SDLKey keymap[ATARIBIOS_MAXKEYS]; |
77 | 78 |
78 static SDL_keysym *TranslateKey(int scancode, int numkeytable, SDL_keysym *keysym); | 79 static SDL_keysym *TranslateKey(int scancode, int numkeytable, SDL_keysym *keysym, |
80 SDL_bool pressed); | |
79 | 81 |
80 void AtariIkbd_InitOSKeymap(_THIS) | 82 void AtariIkbd_InitOSKeymap(_THIS) |
81 { | 83 { |
82 int i; | 84 int i; |
83 | 85 |
169 | 171 |
170 /* Now generate events */ | 172 /* Now generate events */ |
171 for (i=0; i<ATARIBIOS_MAXKEYS; i++) { | 173 for (i=0; i<ATARIBIOS_MAXKEYS; i++) { |
172 /* Key pressed ? */ | 174 /* Key pressed ? */ |
173 if (SDL_AtariIkbd_keyboard[i]==KEY_PRESSED) { | 175 if (SDL_AtariIkbd_keyboard[i]==KEY_PRESSED) { |
174 SDL_PrivateKeyboard(SDL_PRESSED, TranslateKey(i, specialkeys, &keysym)); | 176 SDL_PrivateKeyboard(SDL_PRESSED, |
177 TranslateKey(i, specialkeys, &keysym, SDL_TRUE)); | |
175 SDL_AtariIkbd_keyboard[i]=KEY_UNDEFINED; | 178 SDL_AtariIkbd_keyboard[i]=KEY_UNDEFINED; |
176 } | 179 } |
177 | 180 |
178 /* Key released ? */ | 181 /* Key released ? */ |
179 if (SDL_AtariIkbd_keyboard[i]==KEY_RELEASED) { | 182 if (SDL_AtariIkbd_keyboard[i]==KEY_RELEASED) { |
180 SDL_PrivateKeyboard(SDL_RELEASED, TranslateKey(i, specialkeys, &keysym)); | 183 SDL_PrivateKeyboard(SDL_RELEASED, |
184 TranslateKey(i, specialkeys, &keysym, SDL_FALSE)); | |
181 SDL_AtariIkbd_keyboard[i]=KEY_UNDEFINED; | 185 SDL_AtariIkbd_keyboard[i]=KEY_UNDEFINED; |
182 } | 186 } |
183 } | 187 } |
184 | 188 |
185 /*--- Send mouse events ---*/ | 189 /*--- Send mouse events ---*/ |
207 } | 211 } |
208 atari_prevmouseb = SDL_AtariIkbd_mouseb; | 212 atari_prevmouseb = SDL_AtariIkbd_mouseb; |
209 } | 213 } |
210 } | 214 } |
211 | 215 |
212 static SDL_keysym *TranslateKey(int scancode, int numkeytable, SDL_keysym *keysym) | 216 static SDL_keysym *TranslateKey(int scancode, int numkeytable, SDL_keysym *keysym, |
217 SDL_bool pressed) | |
213 { | 218 { |
214 unsigned char asciicode; | 219 unsigned char asciicode; |
215 | 220 |
216 /* Set the keysym information */ | 221 /* Set the keysym information */ |
217 keysym->scancode = scancode; | 222 keysym->scancode = scancode; |
234 else | 239 else |
235 keysym->sym = keymap[scancode]; | 240 keysym->sym = keymap[scancode]; |
236 | 241 |
237 keysym->mod = KMOD_NONE; | 242 keysym->mod = KMOD_NONE; |
238 keysym->unicode = 0; | 243 keysym->unicode = 0; |
244 if (pressed && (asciicode!=0)) { | |
245 keysym->unicode = SDL_AtariToUnicode(asciicode); | |
246 } | |
239 | 247 |
240 return(keysym); | 248 return(keysym); |
241 } | 249 } |
242 | 250 |
243 void AtariIkbd_ShutdownEvents(void) | 251 void AtariIkbd_ShutdownEvents(void) |