Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

N900: Prevent stuck up/down keys on systems with shared up/down cursor mapping

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29331 a1c6a512-1295-4272-9138-f99709370657

+15 -1
+15 -1
firmware/target/hosted/sdl/button-sdl.c
··· 68 68 static int btn = 0; /* Hopefully keeps track of currently pressed keys... */ 69 69 70 70 int sdl_app_has_input_focus = 1; 71 + #if (CONFIG_PLATFORM & PLATFORM_MAEMO) 72 + static int n900_updown_key_pressed = 0; 73 + #endif 71 74 72 75 #ifdef HAS_BUTTON_HOLD 73 76 bool hold_button_state = false; ··· 230 233 #if (CONFIG_PLATFORM & PLATFORM_MAEMO5) 231 234 /* N900 with shared up/down cursor mapping. Seen on the German, 232 235 Finnish, Italian, French and Russian version. Probably more. */ 233 - if (event->key.keysym.mod & KMOD_MODE) 236 + if (event->key.keysym.mod & KMOD_MODE || n900_updown_key_pressed) 234 237 { 238 + /* Prevent stuck up/down keys: If you release the ALT key before the cursor key, 239 + rockbox will see a KEYUP event for left/right instead of up/down and 240 + the previously pressed up/down key would stay active. */ 241 + if (ev_key == SDLK_LEFT || ev_key == SDLK_RIGHT) 242 + { 243 + if (event->type == SDL_KEYDOWN) 244 + n900_updown_key_pressed = 1; 245 + else 246 + n900_updown_key_pressed = 0; 247 + } 248 + 235 249 if (ev_key == SDLK_LEFT) 236 250 ev_key = SDLK_UP; 237 251 else if (ev_key == SDLK_RIGHT)