- for (i = 0; i < KEY_PBTN_MAP_SIZE; i++)
- if (key_pbtn_map[i].key == keycode)
- return key_pbtn_map[i].pbtn;
+ for (i = 0; i < KEY_PBTN_MAP_SIZE; i++) {
+ if (key_pbtn_map[i].key == keycode) {
+ ret = key_pbtn_map[i].pbtn;
+ break;
+ }
+ }
+
+ if (charcode != NULL && (unsigned int)keycode < SDLK_LAST &&
+ in_sdl_keys[keycode] != NULL && in_sdl_keys[keycode][1] == 0)
+ {
+ ret |= PBTN_CHAR;
+ *charcode = in_sdl_keys[keycode][0];
+ }