Mercurial > sdl-ios-xcode
diff src/video/ataricommon/SDL_gemdosevents.c @ 2030:d774e9d7c2a8
Forward keyboard reworking from 1.2
author | Patrice Mandin <patmandin@gmail.com> |
---|---|
date | Wed, 20 Sep 2006 19:47:09 +0000 |
parents | d20f4510c718 |
children | f54073d86c82 |
line wrap: on
line diff
--- a/src/video/ataricommon/SDL_gemdosevents.c Sat Sep 16 17:13:41 2006 +0000 +++ b/src/video/ataricommon/SDL_gemdosevents.c Wed Sep 20 19:47:09 2006 +0000 @@ -40,36 +40,16 @@ #include "SDL_ataridevmouse_c.h" /* To save state of keyboard */ -#define ATARIBIOS_MAXKEYS 128 static unsigned char gemdos_currentkeyboard[ATARIBIOS_MAXKEYS]; static unsigned char gemdos_previouskeyboard[ATARIBIOS_MAXKEYS]; -static unsigned char gemdos_currentascii[ATARIBIOS_MAXKEYS]; static SDL_bool use_dev_mouse = SDL_FALSE; -/* Special keys state */ -enum -{ - K_RSHIFT = 0, - K_LSHIFT, - K_CTRL, - K_ALT, - K_CAPSLOCK, - K_CLRHOME, - K_INSERT +enum { + DEV_BUSY=0, + DEV_READY }; -enum -{ - DEV_BUSY = 0, - DEV_READY -}; - -/* 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, SDL_bool pressed); static void UpdateSpecialKeys(int special_keys_state); void @@ -81,36 +61,6 @@ SDL_memset(gemdos_currentkeyboard, 0, sizeof(gemdos_currentkeyboard)); SDL_memset(gemdos_previouskeyboard, 0, sizeof(gemdos_previouskeyboard)); - /* Initialize keymap */ - for (i = 0; i < ATARIBIOS_MAXKEYS; i++) - keymap[i] = SDLK_UNKNOWN; - - /* Functions keys */ - for (i = 0; i < 10; i++) - keymap[SCANCODE_F1 + i] = SDLK_F1 + i; - - /* Cursor keypad */ - keymap[SCANCODE_HELP] = SDLK_HELP; - keymap[SCANCODE_UNDO] = SDLK_UNDO; - keymap[SCANCODE_INSERT] = SDLK_INSERT; - keymap[SCANCODE_CLRHOME] = SDLK_HOME; - keymap[SCANCODE_UP] = SDLK_UP; - keymap[SCANCODE_DOWN] = SDLK_DOWN; - keymap[SCANCODE_RIGHT] = SDLK_RIGHT; - keymap[SCANCODE_LEFT] = SDLK_LEFT; - - /* Special keys */ - keymap[SCANCODE_ESCAPE] = SDLK_ESCAPE; - keymap[SCANCODE_BACKSPACE] = SDLK_BACKSPACE; - keymap[SCANCODE_TAB] = SDLK_TAB; - keymap[SCANCODE_ENTER] = SDLK_RETURN; - keymap[SCANCODE_DELETE] = SDLK_DELETE; - keymap[SCANCODE_LEFTCONTROL] = SDLK_LCTRL; - keymap[SCANCODE_LEFTSHIFT] = SDLK_LSHIFT; - keymap[SCANCODE_RIGHTSHIFT] = SDLK_RSHIFT; - keymap[SCANCODE_LEFTALT] = SDLK_LALT; - keymap[SCANCODE_CAPSLOCK] = SDLK_CAPSLOCK; - use_dev_mouse = (SDL_AtariDevMouse_Open() != 0) ? SDL_TRUE : SDL_FALSE; vectors_mask = ATARI_XBIOS_JOYSTICKEVENTS; /* XBIOS joystick events */ @@ -134,15 +84,8 @@ while (Cconis() != DEV_BUSY) { unsigned long key_pressed; - unsigned char scancode, asciicode; - - key_pressed = Cnecin(); - - asciicode = key_pressed; - scancode = key_pressed >> 16; - - gemdos_currentkeyboard[scancode] = 0xFF; - gemdos_currentascii[scancode] = asciicode; + key_pressed=Cnecin(); + gemdos_currentkeyboard[(key_pressed>>16)&(ATARIBIOS_MAXKEYS-1)]=0xFF; } /* Read special keys */ @@ -153,14 +96,12 @@ /* Key pressed ? */ if (gemdos_currentkeyboard[i] && !gemdos_previouskeyboard[i]) SDL_PrivateKeyboard(SDL_PRESSED, - TranslateKey(i, gemdos_currentascii[i], - &keysym, SDL_TRUE)); + SDL_Atari_TranslateKey(i, &keysym, SDL_TRUE)); /* Key unpressed ? */ if (gemdos_previouskeyboard[i] && !gemdos_currentkeyboard[i]) SDL_PrivateKeyboard(SDL_RELEASED, - TranslateKey(i, gemdos_currentascii[i], - &keysym, SDL_FALSE)); + SDL_Atari_TranslateKey(i, &keysym, SDL_FALSE)); } if (use_dev_mouse) { @@ -171,7 +112,7 @@ /* Will be previous table */ SDL_memcpy(gemdos_previouskeyboard, gemdos_currentkeyboard, - ATARIBIOS_MAXKEYS); + sizeof(gemdos_previouskeyboard)); } static void @@ -192,27 +133,6 @@ UPDATE_SPECIAL_KEYS(K_CAPSLOCK, SCANCODE_CAPSLOCK); } -static SDL_keysym * -TranslateKey(int scancode, int asciicode, SDL_keysym * keysym, - SDL_bool pressed) -{ - /* Set the keysym information */ - keysym->scancode = scancode; - - if (asciicode) - keysym->sym = asciicode; - else - keysym->sym = keymap[scancode]; - - keysym->mod = KMOD_NONE; - keysym->unicode = 0; - if (SDL_TranslateUNICODE && pressed) { - keysym->unicode = SDL_AtariToUnicodeTable[asciicode]; - } - - return (keysym); -} - void AtariGemdos_ShutdownEvents(void) {