# HG changeset patch # User Patrice Mandin # Date 1136142851 0 # Node ID a55ac374271c55fc621ff205e6b21054739a010c # Parent d90b362628eae24b9efc5792645b01a8d2c60ff1 Added preliminary missingtranslation from Atari to Unicode charset diff -r d90b362628ea -r a55ac374271c src/video/ataricommon/SDL_atarievents.c --- a/src/video/ataricommon/SDL_atarievents.c Fri Dec 23 09:40:15 2005 +0000 +++ b/src/video/ataricommon/SDL_atarievents.c Sun Jan 01 19:14:11 2006 +0000 @@ -127,3 +127,13 @@ /* 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 -r d90b362628ea -r a55ac374271c src/video/ataricommon/SDL_atarievents_c.h --- a/src/video/ataricommon/SDL_atarievents_c.h Fri Dec 23 09:40:15 2005 +0000 +++ b/src/video/ataricommon/SDL_atarievents_c.h Sun Jan 01 19:14:11 2006 +0000 @@ -44,4 +44,6 @@ extern void Atari_InitOSKeymap(_THIS); extern void Atari_PumpEvents(_THIS); +extern Uint16 SDL_AtariToUnicode(Uint8 caracter); + #endif /* _SDL_ATARI_EVENTS_H_ */ diff -r d90b362628ea -r a55ac374271c src/video/ataricommon/SDL_biosevents.c --- a/src/video/ataricommon/SDL_biosevents.c Fri Dec 23 09:40:15 2005 +0000 +++ b/src/video/ataricommon/SDL_biosevents.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_xbiosevents_c.h" /* To save state of keyboard */ @@ -64,7 +65,8 @@ /* 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 @@ for (i=0; iscancode = scancode; @@ -177,6 +182,9 @@ keysym->mod = KMOD_NONE; keysym->unicode = 0; + if (pressed && (asciicode!=0)) { + keysym->unicode = SDL_AtariToUnicode(asciicode); + } return(keysym); } diff -r d90b362628ea -r a55ac374271c src/video/ataricommon/SDL_gemdosevents.c --- a/src/video/ataricommon/SDL_gemdosevents.c Fri Dec 23 09:40:15 2005 +0000 +++ b/src/video/ataricommon/SDL_gemdosevents.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_xbiosevents_c.h" /* To save state of keyboard */ @@ -69,7 +70,8 @@ /* 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 @@ for (i=0; iscancode = scancode; @@ -182,6 +187,9 @@ keysym->mod = KMOD_NONE; keysym->unicode = 0; + if (pressed && (asciicode!=0)) { + keysym->unicode = SDL_AtariToUnicode(asciicode); + } return(keysym); } diff -r d90b362628ea -r a55ac374271c src/video/ataricommon/SDL_ikbdevents.c --- 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; imod = KMOD_NONE; keysym->unicode = 0; + if (pressed && (asciicode!=0)) { + keysym->unicode = SDL_AtariToUnicode(asciicode); + } return(keysym); } diff -r d90b362628ea -r a55ac374271c src/video/gem/SDL_gemevents.c --- a/src/video/gem/SDL_gemevents.c Fri Dec 23 09:40:15 2005 +0000 +++ b/src/video/gem/SDL_gemevents.c Sun Jan 01 19:14:11 2006 +0000 @@ -44,6 +44,7 @@ #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 @@ /* 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 @@ keysym->mod = KMOD_NONE; keysym->unicode = 0; + if (pressed && (asciicode!=0)) { + keysym->unicode = SDL_AtariToUnicode(asciicode); + } return(keysym); } @@ -205,11 +211,13 @@ for (i=0; i