From 634bb0cbd11fb6d68886c3a03e460ef1da2c73ac Mon Sep 17 00:00:00 2001 From: Patrice Mandin Date: Sun, 1 Jan 2006 19:14:11 +0000 Subject: [PATCH] Added preliminary missingtranslation from Atari to Unicode charset --- src/video/ataricommon/SDL_atarievents.c | 10 ++++++++++ src/video/ataricommon/SDL_atarievents_c.h | 2 ++ src/video/ataricommon/SDL_biosevents.c | 16 ++++++++++++---- src/video/ataricommon/SDL_gemdosevents.c | 16 ++++++++++++---- src/video/ataricommon/SDL_ikbdevents.c | 16 ++++++++++++---- src/video/gem/SDL_gemevents.c | 16 ++++++++++++---- 6 files changed, 60 insertions(+), 16 deletions(-) diff --git a/src/video/ataricommon/SDL_atarievents.c b/src/video/ataricommon/SDL_atarievents.c index 6c4745bbd..d49ce8c87 100644 --- a/src/video/ataricommon/SDL_atarievents.c +++ b/src/video/ataricommon/SDL_atarievents.c @@ -127,3 +127,13 @@ void Atari_PumpEvents(_THIS) /* Call choosen routine */ this->PumpEvents(this); } + +Uint16 SDL_AtariToUnicode(Uint8 caracter) +{ + /* Translate from Atari charset to Unicode */ + if ((caracter>=32) && (caracter<=127)) { + return (Uint16) caracter; + } + + return 0; +} diff --git a/src/video/ataricommon/SDL_atarievents_c.h b/src/video/ataricommon/SDL_atarievents_c.h index 57aff2d14..ce67b8d70 100644 --- a/src/video/ataricommon/SDL_atarievents_c.h +++ b/src/video/ataricommon/SDL_atarievents_c.h @@ -44,4 +44,6 @@ extern void (*Atari_ShutdownEvents)(void); extern void Atari_InitOSKeymap(_THIS); extern void Atari_PumpEvents(_THIS); +extern Uint16 SDL_AtariToUnicode(Uint8 caracter); + #endif /* _SDL_ATARI_EVENTS_H_ */ diff --git a/src/video/ataricommon/SDL_biosevents.c b/src/video/ataricommon/SDL_biosevents.c index 78a9946a9..0a5f42c9b 100644 --- a/src/video/ataricommon/SDL_biosevents.c +++ b/src/video/ataricommon/SDL_biosevents.c @@ -41,6 +41,7 @@ static char rcsid = #include "SDL_events_c.h" #include "SDL_atarikeys.h" +#include "SDL_atarievents_c.h" #include "SDL_xbiosevents_c.h" /* To save state of keyboard */ @@ -64,7 +65,8 @@ enum { /* The translation tables from a console scancode to a SDL keysym */ static SDLKey keymap[ATARIBIOS_MAXKEYS]; -static SDL_keysym *TranslateKey(int scancode, int asciicode, SDL_keysym *keysym); +static SDL_keysym *TranslateKey(int scancode, int asciicode, SDL_keysym *keysym, + SDL_bool pressed); static void UpdateSpecialKeys(int special_keys_state); void AtariBios_InitOSKeymap(_THIS) @@ -135,11 +137,13 @@ void AtariBios_PumpEvents(_THIS) for (i=0; iscancode = scancode; @@ -177,6 +182,9 @@ static SDL_keysym *TranslateKey(int scancode, int asciicode, SDL_keysym *keysym) keysym->mod = KMOD_NONE; keysym->unicode = 0; + if (pressed && (asciicode!=0)) { + keysym->unicode = SDL_AtariToUnicode(asciicode); + } return(keysym); } diff --git a/src/video/ataricommon/SDL_gemdosevents.c b/src/video/ataricommon/SDL_gemdosevents.c index 445bae9e0..4f5160e0f 100644 --- a/src/video/ataricommon/SDL_gemdosevents.c +++ b/src/video/ataricommon/SDL_gemdosevents.c @@ -41,6 +41,7 @@ static char rcsid = #include "SDL_events_c.h" #include "SDL_atarikeys.h" +#include "SDL_atarievents_c.h" #include "SDL_xbiosevents_c.h" /* To save state of keyboard */ @@ -69,7 +70,8 @@ enum { /* The translation tables from a console scancode to a SDL keysym */ static SDLKey keymap[ATARIBIOS_MAXKEYS]; -static SDL_keysym *TranslateKey(int scancode, int asciicode, SDL_keysym *keysym); +static SDL_keysym *TranslateKey(int scancode, int asciicode, SDL_keysym *keysym, + SDL_bool pressed); static void UpdateSpecialKeys(int special_keys_state); void AtariGemdos_InitOSKeymap(_THIS) @@ -140,11 +142,13 @@ void AtariGemdos_PumpEvents(_THIS) for (i=0; iscancode = scancode; @@ -182,6 +187,9 @@ static SDL_keysym *TranslateKey(int scancode, int asciicode, SDL_keysym *keysym) keysym->mod = KMOD_NONE; keysym->unicode = 0; + if (pressed && (asciicode!=0)) { + keysym->unicode = SDL_AtariToUnicode(asciicode); + } return(keysym); } diff --git a/src/video/ataricommon/SDL_ikbdevents.c b/src/video/ataricommon/SDL_ikbdevents.c index 3d3ca46c1..55fd7c7a5 100644 --- a/src/video/ataricommon/SDL_ikbdevents.c +++ b/src/video/ataricommon/SDL_ikbdevents.c @@ -41,6 +41,7 @@ static char rcsid = #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 @@ _KEYTAB *curtables; 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 @@ void AtariIkbd_PumpEvents(_THIS) for (i=0; imod = KMOD_NONE; keysym->unicode = 0; + if (pressed && (asciicode!=0)) { + keysym->unicode = SDL_AtariToUnicode(asciicode); + } return(keysym); } diff --git a/src/video/gem/SDL_gemevents.c b/src/video/gem/SDL_gemevents.c index d6b59a593..86df9c314 100644 --- a/src/video/gem/SDL_gemevents.c +++ b/src/video/gem/SDL_gemevents.c @@ -44,6 +44,7 @@ static char rcsid = #include "SDL_gemvideo.h" #include "SDL_gemevents_c.h" #include "SDL_atarikeys.h" /* for keyboard scancodes */ +#include "SDL_atarievents_c.h" #include "SDL_xbiosinterrupt_s.h" /* Defines */ @@ -61,14 +62,16 @@ static SDLKey keymap[ATARIBIOS_MAXKEYS]; /* Functions prototypes */ -static SDL_keysym *TranslateKey(int scancode, int asciicode, SDL_keysym *keysym); +static SDL_keysym *TranslateKey(int scancode, int asciicode, SDL_keysym *keysym, + SDL_bool pressed); static int do_messages(_THIS, short *message); static void do_keyboard(short kc, short ks); static void do_mouse(_THIS, short mx, short my, short mb, short ks); /* Functions */ -static SDL_keysym *TranslateKey(int scancode, int asciicode, SDL_keysym *keysym) +static SDL_keysym *TranslateKey(int scancode, int asciicode, SDL_keysym *keysym, + SDL_bool pressed) { /* Set the keysym information */ keysym->scancode = scancode; @@ -80,6 +83,9 @@ static SDL_keysym *TranslateKey(int scancode, int asciicode, SDL_keysym *keysym) keysym->mod = KMOD_NONE; keysym->unicode = 0; + if (pressed && (asciicode!=0)) { + keysym->unicode = SDL_AtariToUnicode(asciicode); + } return(keysym); } @@ -205,11 +211,13 @@ void GEM_PumpEvents(_THIS) for (i=0; i