From 0de5a6e7c4d288705ccb81ec71bd66faebfc5778 Mon Sep 17 00:00:00 2001 From: Patrice Mandin Date: Wed, 29 Jun 2005 20:32:46 +0000 Subject: [PATCH] Avoid generating multiple key press/release messages for the same key --- src/video/ataricommon/SDL_ikbdevents.c | 37 +++++++++-------- src/video/ataricommon/SDL_ikbdinterrupt.S | 49 +++++++++++++++-------- 2 files changed, 54 insertions(+), 32 deletions(-) diff --git a/src/video/ataricommon/SDL_ikbdevents.c b/src/video/ataricommon/SDL_ikbdevents.c index 2f05e200a..3d3ca46c1 100644 --- a/src/video/ataricommon/SDL_ikbdevents.c +++ b/src/video/ataricommon/SDL_ikbdevents.c @@ -54,11 +54,11 @@ enum { K_INSERT }; -/* To save state of keyboard */ #define ATARIBIOS_MAXKEYS 128 -static unsigned char ikbd_previouskeyboard[ATARIBIOS_MAXKEYS]; -static Uint16 atari_prevmouseb; /* buttons */ +#define KEY_PRESSED 0xff +#define KEY_UNDEFINED 0x80 +#define KEY_RELEASED 0x00 /* The translation tables from a console scancode to a SDL keysym */ #define KT_NOCHANGE -1 @@ -69,7 +69,8 @@ enum { KT_CAPS=2 }; -static int caps_state; +static Uint16 atari_prevmouseb; /* save state of mouse buttons */ +static int caps_state; /* caps lock state */ _KEYTAB *curtables; static unsigned char *tab_unshift, *tab_shift, *tab_caps; static SDLKey keymap[ATARIBIOS_MAXKEYS]; @@ -80,8 +81,7 @@ void AtariIkbd_InitOSKeymap(_THIS) { int i; - memset(SDL_AtariIkbd_keyboard, 0, ATARIBIOS_MAXKEYS); - memset(ikbd_previouskeyboard, 0, ATARIBIOS_MAXKEYS); + memset(SDL_AtariIkbd_keyboard, KEY_UNDEFINED, ATARIBIOS_MAXKEYS); /* Initialize keymap */ for ( i=0; i