diff 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
line wrap: on
line diff
--- a/src/video/ataricommon/SDL_ikbdevents.c	Fri Dec 23 09:40:15 2005 +0000
+++ b/src/video/ataricommon/SDL_ikbdevents.c	Sun Jan 01 19:14:11 2006 +0000
@@ -41,6 +41,7 @@
 #include "SDL_events_c.h"
 
 #include "SDL_atarikeys.h"
+#include "SDL_atarievents_c.h"
 #include "SDL_ikbdinterrupt_s.h"
 
 /* Special keys state */
@@ -75,7 +76,8 @@
 static unsigned char *tab_unshift, *tab_shift, *tab_caps;
 static SDLKey keymap[ATARIBIOS_MAXKEYS];
 
-static SDL_keysym *TranslateKey(int scancode, int numkeytable, SDL_keysym *keysym);
+static SDL_keysym *TranslateKey(int scancode, int numkeytable, SDL_keysym *keysym,
+	SDL_bool pressed);
 
 void AtariIkbd_InitOSKeymap(_THIS)
 {
@@ -171,13 +173,15 @@
 	for (i=0; i<ATARIBIOS_MAXKEYS; i++) {
 		/* Key pressed ? */
 		if (SDL_AtariIkbd_keyboard[i]==KEY_PRESSED) {
-			SDL_PrivateKeyboard(SDL_PRESSED, TranslateKey(i, specialkeys, &keysym));
+			SDL_PrivateKeyboard(SDL_PRESSED,
+				TranslateKey(i, specialkeys, &keysym, SDL_TRUE));
 			SDL_AtariIkbd_keyboard[i]=KEY_UNDEFINED;
 		}
 			
 		/* Key released ? */
 		if (SDL_AtariIkbd_keyboard[i]==KEY_RELEASED) {
-			SDL_PrivateKeyboard(SDL_RELEASED, TranslateKey(i, specialkeys, &keysym));
+			SDL_PrivateKeyboard(SDL_RELEASED,
+				TranslateKey(i, specialkeys, &keysym, SDL_FALSE));
 			SDL_AtariIkbd_keyboard[i]=KEY_UNDEFINED;
 		}
 	}
@@ -209,7 +213,8 @@
 	}
 }
 
-static SDL_keysym *TranslateKey(int scancode, int numkeytable, SDL_keysym *keysym)
+static SDL_keysym *TranslateKey(int scancode, int numkeytable, SDL_keysym *keysym,
+	SDL_bool pressed)
 {
 	unsigned char asciicode;
 
@@ -236,6 +241,9 @@
 
 	keysym->mod = KMOD_NONE;
 	keysym->unicode = 0;
+	if (pressed && (asciicode!=0)) {
+		keysym->unicode = SDL_AtariToUnicode(asciicode);
+	}
 
 	return(keysym);
 }