comparison src/video/aalib/SDL_aaevents.c @ 1458:bf8db2d92be1

Date: Wed, 1 Mar 2006 23:52:09 +0100 From: Sam Hocevar Subject: [SDL] [patch] aalib driver Hi there. The attached patch fixes a buffer overflow in the aalib driver and also adds a workaround for a conflict between arrow keys and the numeric keypad that have the same scancode on aalib. The patch gives precedence to the arrow keys.
author Sam Lantinga <slouken@libsdl.org>
date Thu, 02 Mar 2006 03:18:21 +0000
parents d910939febfa
children 782fd950bd46 c121d94672cb a1b03ba2fcd0
comparison
equal deleted inserted replaced
1457:337665b695d1 1458:bf8db2d92be1
124 124
125 /* Initialize the AAlib key translation table */ 125 /* Initialize the AAlib key translation table */
126 for ( i=0; i<SDL_arraysize(keymap); ++i ) 126 for ( i=0; i<SDL_arraysize(keymap); ++i )
127 keymap[i] = SDLK_UNKNOWN; 127 keymap[i] = SDLK_UNKNOWN;
128 128
129 keymap[AA_ESC] = SDLK_ESCAPE;
130 keymap[AA_UP] = SDLK_UP;
131 keymap[AA_DOWN] = SDLK_DOWN;
132 keymap[AA_LEFT] = SDLK_LEFT;
133 keymap[AA_RIGHT] = SDLK_RIGHT;
134
135 /* Alphabet keys */ 129 /* Alphabet keys */
136 for ( i = 0; i<26; ++i ){ 130 for ( i = 0; i<26; ++i ){
137 keymap['a' + i] = SDLK_a+i; 131 keymap['a' + i] = SDLK_a+i;
138 keymap['A' + i] = SDLK_a+i; 132 keymap['A' + i] = SDLK_a+i;
139 } 133 }
177 keymap[301] = SDLK_KP5; 171 keymap[301] = SDLK_KP5;
178 keymap[296] = SDLK_KP6; 172 keymap[296] = SDLK_KP6;
179 keymap[293] = SDLK_KP7; 173 keymap[293] = SDLK_KP7;
180 keymap[295] = SDLK_KP8; 174 keymap[295] = SDLK_KP8;
181 keymap[298] = SDLK_KP9; 175 keymap[298] = SDLK_KP9;
176
177 keymap[AA_ESC] = SDLK_ESCAPE;
178 keymap[AA_UP] = SDLK_UP;
179 keymap[AA_DOWN] = SDLK_DOWN;
180 keymap[AA_LEFT] = SDLK_LEFT;
181 keymap[AA_RIGHT] = SDLK_RIGHT;
182 } 182 }
183 183
184 static SDL_keysym *TranslateKey(int scancode, SDL_keysym *keysym) 184 static SDL_keysym *TranslateKey(int scancode, SDL_keysym *keysym)
185 { 185 {
186 /* Sanity check */
187 if ( scancode >= SDL_arraysize(keymap) )
188 scancode = AA_UNKNOWN;
189
186 /* Set the keysym information */ 190 /* Set the keysym information */
187 keysym->scancode = scancode; 191 keysym->scancode = scancode;
188 keysym->sym = keymap[scancode]; 192 keysym->sym = keymap[scancode];
189 keysym->mod = KMOD_NONE; 193 keysym->mod = KMOD_NONE;
190 194