--- rockbox/firmware/target/hosted/android/button-android.c 2011-01-24 02:41:27.000000000 -0600 +++ rockbox.mod/firmware/target/hosted/android/button-android.c 2011-01-25 23:24:46.000000000 -0600 @@ -67,39 +67,44 @@ (void)env; (void)this; - unsigned button = 0; + unsigned button = BUTTON_NONE; - if (!state) + if (state) { - button = multimedia_to_button((int)keycode); - if (!button) - button = dpad_to_button((int)keycode); - if (button) - queue_post(&button_queue, button, 0); - } - - if (!button) - { button = key_to_button(keycode); + if (!button) + { + button = key_to_button(keycode); + } + if (button == last_btns) + { + button = key_to_button(last_btns); + } + if (button == BUTTON_NONE) + { + return false; + } + last_btns &= (~button); + queue_post(&button_queue, button, 0); + return true; } - if (button == BUTTON_NONE) + if (!state) { - last_btns = button; - return false; + button = key_to_button(keycode); + if (!button) + { + button = key_to_button(keycode); + } + + if (button == BUTTON_NONE) + { + return false; + } + last_btns |= button; + return false; } - if (state) - { - last_btns |= button; - } - else - { - last_btns &= (~button); - return false; - } - - return true; } void button_init_device(void)