Mercurial > sdl-ios-xcode
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 |