static void button_event(int key, bool pressed) { int new_btn = 0; static bool usb_connected = false; if (usb_connected && key != USB_KEY) return; switch (key) { case USB_KEY: if (!pressed) { usb_connected = !usb_connected; if (usb_connected) queue_post(&button_queue, SYS_USB_CONNECTED, 0); else queue_post(&button_queue, SYS_USB_DISCONNECTED, 0); } return; #if (CONFIG_PLATFORM & PLATFORM_PANDORA) case SDLK_LCTRL: /* Will post SDL_USEREVENT in shutdown_hw() if successful. */ sys_poweroff(); break; #endif #ifdef HAS_BUTTON_HOLD case SDLK_h: if(pressed) { hold_button_state = !hold_button_state; DEBUGF("Hold button is %s\n", hold_button_state?"ON":"OFF"); } return; #endif #ifdef HAS_REMOTE_BUTTON_HOLD case SDLK_j: if(pressed) { remote_hold_button_state = !remote_hold_button_state; DEBUGF("Remote hold button is %s\n", remote_hold_button_state?"ON":"OFF"); } return; #endif #if defined(IRIVER_H100_SERIES) || defined (IRIVER_H300_SERIES) case SDLK_t: if(pressed) switch(_remote_type) { case REMOTETYPE_UNPLUGGED: _remote_type=REMOTETYPE_H100_LCD; DEBUGF("Changed remote type to H100\n"); break; case REMOTETYPE_H100_LCD: _remote_type=REMOTETYPE_H300_LCD; DEBUGF("Changed remote type to H300\n"); break; case REMOTETYPE_H300_LCD: _remote_type=REMOTETYPE_H300_NONLCD; DEBUGF("Changed remote type to H300 NON-LCD\n"); break; case REMOTETYPE_H300_NONLCD: _remote_type=REMOTETYPE_UNPLUGGED; DEBUGF("Changed remote type to none\n"); break; } break; #endif case SDLK_KP0: case SDLK_F5: if(pressed) { sim_trigger_screendump(); return; } break; #ifdef HAVE_TOUCHSCREEN case SDLK_F4: if(pressed) { touchscreen_set_mode(touchscreen_get_mode() == TOUCHSCREEN_POINT ? TOUCHSCREEN_BUTTON : TOUCHSCREEN_POINT); printf("Touchscreen mode: %s\n", touchscreen_get_mode() == TOUCHSCREEN_POINT ? "TOUCHSCREEN_POINT" : "TOUCHSCREEN_BUTTON"); } #endif default: #ifdef HAVE_TOUCHSCREEN new_btn = key_to_touch(key, mouse_coords); if (!new_btn) #endif new_btn = key_to_button(key); break; } /* Call to make up for scrollwheel target implementation. This is * not handled in the main button.c driver, but on the target * implementation (look at button-e200.c for example if you are trying to * figure out why using button_get_data needed a hack before). */ #if defined(BUTTON_SCROLL_FWD) && defined(BUTTON_SCROLL_BACK) if((new_btn == BUTTON_SCROLL_FWD || new_btn == BUTTON_SCROLL_BACK) && pressed) { /* Clear these buttons from the data - adding them to the queue is * handled in the scrollwheel drivers for the targets. They do not * store the scroll forward/back buttons in their button data for * the button_read call. */ #ifdef HAVE_BACKLIGHT backlight_on(); #endif #ifdef HAVE_BUTTON_LIGHT buttonlight_on(); #endif queue_post(&button_queue, new_btn, 1<<24); new_btn &= ~(BUTTON_SCROLL_FWD | BUTTON_SCROLL_BACK); } #endif if (pressed) btn |= new_btn; else btn &= ~new_btn; }
void button_event(int key, bool pressed) { int new_btn = 0; static bool usb_connected = false; if (usb_connected && key != SDLK_u) return; switch (key) { #ifdef HAVE_TOUCHSCREEN case BUTTON_TOUCHSCREEN: switch (touchscreen_get_mode()) { case TOUCHSCREEN_POINT: new_btn = BUTTON_TOUCHSCREEN; break; case TOUCHSCREEN_BUTTON: { static int touchscreen_buttons[3][3] = { {BUTTON_TOPLEFT, BUTTON_TOPMIDDLE, BUTTON_TOPRIGHT}, {BUTTON_MIDLEFT, BUTTON_CENTER, BUTTON_MIDRIGHT}, {BUTTON_BOTTOMLEFT, BUTTON_BOTTOMMIDDLE, BUTTON_BOTTOMRIGHT}, }; int px_x = ((mouse_coords&0xffff0000)>>16); int px_y = ((mouse_coords&0x0000ffff)); new_btn = touchscreen_buttons[px_y/(LCD_HEIGHT/3)][px_x/(LCD_WIDTH/3)]; break; } } break; case SDLK_KP7: new_btn = BUTTON_TOPLEFT; break; case SDLK_KP8: new_btn = BUTTON_TOPMIDDLE; break; case SDLK_KP9: new_btn = BUTTON_TOPRIGHT; break; case SDLK_KP4: new_btn = BUTTON_MIDLEFT; break; case SDLK_KP5: new_btn = BUTTON_CENTER; break; case SDLK_KP6: new_btn = BUTTON_MIDRIGHT; break; case SDLK_KP1: new_btn = BUTTON_BOTTOMLEFT; break; case SDLK_KP2: new_btn = BUTTON_BOTTOMMIDDLE; break; case SDLK_KP3: new_btn = BUTTON_BOTTOMRIGHT; break; case SDLK_F4: if(pressed) { touchscreen_set_mode(touchscreen_get_mode() == TOUCHSCREEN_POINT ? TOUCHSCREEN_BUTTON : TOUCHSCREEN_POINT); printf("Touchscreen mode: %s\n", touchscreen_get_mode() == TOUCHSCREEN_POINT ? "TOUCHSCREEN_POINT" : "TOUCHSCREEN_BUTTON"); } break; #endif case SDLK_u: if (!pressed) { usb_connected = !usb_connected; if (usb_connected) queue_post(&button_queue, SYS_USB_CONNECTED, 0); else queue_post(&button_queue, SYS_USB_DISCONNECTED, 0); } return; #ifdef HAS_BUTTON_HOLD case SDLK_h: if(pressed) { hold_button_state = !hold_button_state; DEBUGF("Hold button is %s\n", hold_button_state?"ON":"OFF"); } return; #endif #ifdef HAS_REMOTE_BUTTON_HOLD case SDLK_j: if(pressed) { remote_hold_button_state = !remote_hold_button_state; DEBUGF("Remote hold button is %s\n", remote_hold_button_state?"ON":"OFF"); } return; #endif #if CONFIG_KEYPAD == GIGABEAT_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP_PLUS: case SDLK_F8: new_btn = BUTTON_POWER; break; case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_a: new_btn = BUTTON_A; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; case SDLK_KP_PERIOD: case SDLK_INSERT: new_btn = BUTTON_MENU; break; case SDLK_KP9: new_btn = BUTTON_VOL_UP; break; case SDLK_KP3: new_btn = BUTTON_VOL_DOWN; break; #elif CONFIG_KEYPAD == GIGABEAT_S_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_F8: case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; case SDLK_KP_PLUS: case SDLK_KP_ENTER: case SDLK_RETURN: new_btn = BUTTON_PLAY; break; case SDLK_KP7: new_btn = BUTTON_BACK; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; case SDLK_KP9: case SDLK_KP_PERIOD: case SDLK_INSERT: new_btn = BUTTON_MENU; break; #elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP_PLUS: case SDLK_F8: new_btn = BUTTON_PLAY; break; case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_a: new_btn = BUTTON_POWER; break; case SDLK_KP_DIVIDE: case SDLK_F1: new_btn = BUTTON_REC; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; #elif CONFIG_KEYPAD == IAUDIO_M3_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_VOL_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_VOL_DOWN; break; case SDLK_KP_PERIOD: case SDLK_INSERT: new_btn = BUTTON_MODE; break; case SDLK_KP_DIVIDE: case SDLK_F1: new_btn = BUTTON_REC; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_PLAY; break; #elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) \ || (CONFIG_KEYPAD == IPOD_4G_PAD) case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_SCROLL_BACK; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_SCROLL_FWD; break; case SDLK_KP_PLUS: case SDLK_F8: new_btn = BUTTON_PLAY; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; case SDLK_KP_PERIOD: case SDLK_INSERT: new_btn = BUTTON_MENU; break; #elif CONFIG_KEYPAD == IRIVER_H10_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_SCROLL_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_SCROLL_DOWN; break; case SDLK_KP_PLUS: case SDLK_F8: new_btn = BUTTON_POWER; break; case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; case SDLK_KP_DIVIDE: case SDLK_F1: new_btn = BUTTON_REW; break; case SDLK_KP_MULTIPLY: case SDLK_F2: new_btn = BUTTON_FF; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_PLAY; break; #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) case SDLK_t: if(pressed) switch(_remote_type) { case REMOTETYPE_UNPLUGGED: _remote_type=REMOTETYPE_H100_LCD; DEBUGF("Changed remote type to H100\n"); break; case REMOTETYPE_H100_LCD: _remote_type=REMOTETYPE_H300_LCD; DEBUGF("Changed remote type to H300\n"); break; case REMOTETYPE_H300_LCD: _remote_type=REMOTETYPE_H300_NONLCD; DEBUGF("Changed remote type to H300 NON-LCD\n"); break; case REMOTETYPE_H300_NONLCD: _remote_type=REMOTETYPE_UNPLUGGED; DEBUGF("Changed remote type to none\n"); break; } break; case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP_PLUS: case SDLK_F8: new_btn = BUTTON_ON; break; case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_a: new_btn = BUTTON_OFF; break; case SDLK_KP_DIVIDE: case SDLK_F1: new_btn = BUTTON_REC; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; case SDLK_KP_PERIOD: case SDLK_INSERT: new_btn = BUTTON_MODE; break; #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP_PLUS: case SDLK_F8: new_btn = BUTTON_PLAY; break; case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_a: new_btn = BUTTON_EQ; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; case SDLK_KP_PERIOD: case SDLK_INSERT: new_btn = BUTTON_MODE; break; #elif CONFIG_KEYPAD == ONDIO_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_a: new_btn = BUTTON_OFF; break; case SDLK_KP_PERIOD: case SDLK_INSERT: new_btn = BUTTON_MENU; break; #elif CONFIG_KEYPAD == PLAYER_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_PLAY; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_STOP; break; case SDLK_KP_PLUS: case SDLK_F8: new_btn = BUTTON_ON; break; case SDLK_KP_PERIOD: case SDLK_INSERT: new_btn = BUTTON_MENU; break; #elif CONFIG_KEYPAD == RECORDER_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP_PLUS: case SDLK_F8: new_btn = BUTTON_ON; break; case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_a: new_btn = BUTTON_OFF; break; case SDLK_KP_DIVIDE: case SDLK_F1: new_btn = BUTTON_F1; break; case SDLK_KP_MULTIPLY: case SDLK_F2: new_btn = BUTTON_F2; break; case SDLK_KP_MINUS: case SDLK_F3: new_btn = BUTTON_F3; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_PLAY; break; #elif CONFIG_KEYPAD == ARCHOS_AV300_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP_PLUS: case SDLK_F8: new_btn = BUTTON_ON; break; case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_a: new_btn = BUTTON_OFF; break; case SDLK_KP_DIVIDE: case SDLK_F1: new_btn = BUTTON_F1; break; case SDLK_KP_MULTIPLY: case SDLK_F2: new_btn = BUTTON_F2; break; case SDLK_KP_MINUS: case SDLK_F3: new_btn = BUTTON_F3; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; #elif CONFIG_KEYPAD == SANSA_E200_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_SCROLL_BACK; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_SCROLL_FWD; break; case SDLK_KP9: case SDLK_PAGEUP: new_btn = BUTTON_UP; break; case SDLK_KP3: case SDLK_PAGEDOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP1: case SDLK_HOME: new_btn = BUTTON_POWER; break; case SDLK_KP7: case SDLK_END: new_btn = BUTTON_REC; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; #elif CONFIG_KEYPAD == SANSA_C200_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP3: new_btn = BUTTON_POWER; break; case SDLK_KP1: new_btn = BUTTON_REC; break; case SDLK_KP5: case SDLK_KP_ENTER: case SDLK_RETURN: new_btn = BUTTON_SELECT; break; case SDLK_KP7: new_btn = BUTTON_VOL_DOWN; break; case SDLK_KP9: new_btn = BUTTON_VOL_UP; break; #elif CONFIG_KEYPAD == MROBE500_PAD case SDLK_F9: new_btn = BUTTON_RC_HEART; break; case SDLK_F10: new_btn = BUTTON_RC_MODE; break; case SDLK_F11: new_btn = BUTTON_RC_VOL_DOWN; break; case SDLK_F12: new_btn = BUTTON_RC_VOL_UP; break; case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_UP: new_btn = BUTTON_RC_PLAY; break; case SDLK_DOWN: new_btn = BUTTON_RC_DOWN; break; case SDLK_F8: case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; #elif CONFIG_KEYPAD == MROBE100_PAD case SDLK_F9: new_btn = BUTTON_RC_HEART; break; case SDLK_F10: new_btn = BUTTON_RC_MODE; break; case SDLK_F11: new_btn = BUTTON_RC_VOL_DOWN; break; case SDLK_F12: new_btn = BUTTON_RC_VOL_UP; break; case SDLK_LEFT: new_btn = BUTTON_RC_FF; break; case SDLK_RIGHT: new_btn = BUTTON_RC_REW; break; case SDLK_UP: new_btn = BUTTON_RC_PLAY; break; case SDLK_DOWN: new_btn = BUTTON_RC_DOWN; break; case SDLK_KP1: new_btn = BUTTON_DISPLAY; break; case SDLK_KP7: new_btn = BUTTON_MENU; break; case SDLK_KP9: new_btn = BUTTON_PLAY; break; case SDLK_KP4: new_btn = BUTTON_LEFT; break; case SDLK_KP6: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: new_btn = BUTTON_UP; break; case SDLK_KP2: new_btn = BUTTON_DOWN; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; case SDLK_KP_MULTIPLY: case SDLK_F8: case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; #elif CONFIG_KEYPAD == COWOND2_PAD case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; case SDLK_KP_PLUS: new_btn = BUTTON_PLUS; break; case SDLK_KP_MINUS: new_btn = BUTTON_MINUS; break; case SDLK_KP_ENTER: new_btn = BUTTON_MENU; break; #elif CONFIG_KEYPAD == IAUDIO67_PAD case SDLK_UP: new_btn = BUTTON_RIGHT; break; case SDLK_DOWN: new_btn = BUTTON_LEFT; break; case SDLK_LEFT: new_btn = BUTTON_STOP; break; case SDLK_RETURN: case SDLK_KP_ENTER: case SDLK_RIGHT: new_btn = BUTTON_PLAY; break; case SDLK_PLUS: new_btn = BUTTON_VOLUP; break; case SDLK_MINUS: new_btn = BUTTON_VOLDOWN; break; case SDLK_SPACE: new_btn = BUTTON_MENU; break; case SDLK_BACKSPACE: new_btn = BUTTON_POWER; break; #elif CONFIG_KEYPAD == CREATIVEZVM_PAD case SDLK_KP1: new_btn = BUTTON_BACK; break; case SDLK_KP3: new_btn = BUTTON_MENU; break; case SDLK_KP7: new_btn = BUTTON_CUSTOM; break; case SDLK_KP9: new_btn = BUTTON_PLAY; break; case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; case SDLK_KP_MULTIPLY: case SDLK_F8: case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; #elif CONFIG_KEYPAD == CREATIVEZV_PAD case SDLK_KP1: new_btn = BUTTON_PREV; break; case SDLK_KP3: new_btn = BUTTON_NEXT; break; case SDLK_KP7: new_btn = BUTTON_BACK; break; case SDLK_p: new_btn = BUTTON_PLAY; break; case SDLK_KP9: new_btn = BUTTON_MENU; break; case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; case SDLK_KP_MULTIPLY: case SDLK_F8: case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; case SDLK_z: new_btn = BUTTON_VOL_DOWN; break; case SDLK_s: new_btn = BUTTON_VOL_UP; #elif CONFIG_KEYPAD == MEIZU_M6SL_PAD case SDLK_KP1: new_btn = BUTTON_PREV; break; case SDLK_KP3: new_btn = BUTTON_NEXT; break; case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_a: new_btn = BUTTON_PLAY; break; case SDLK_KP_PERIOD: case SDLK_INSERT: new_btn = BUTTON_MENU; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; #elif CONFIG_KEYPAD == SANSA_FUZE_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_SCROLL_BACK; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_SCROLL_FWD; break; case SDLK_PAGEUP: case SDLK_KP9: new_btn = BUTTON_UP; break; case SDLK_PAGEDOWN: case SDLK_KP3: new_btn = BUTTON_DOWN; break; case SDLK_KP_MINUS: case SDLK_KP1: new_btn = BUTTON_POWER; break; case SDLK_KP_MULTIPLY: new_btn = BUTTON_HOME; break; case SDLK_KP5: case SDLK_SPACE: case SDLK_KP_ENTER: case SDLK_RETURN: new_btn = BUTTON_SELECT; break; #elif CONFIG_KEYPAD == SANSA_CLIP_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_INSERT: case SDLK_KP_MULTIPLY: new_btn = BUTTON_HOME; break; case SDLK_SPACE: case SDLK_KP5: new_btn = BUTTON_SELECT; break; case SDLK_PAGEDOWN: case SDLK_KP3: new_btn = BUTTON_VOL_DOWN; break; case SDLK_PAGEUP: case SDLK_KP9: new_btn = BUTTON_VOL_UP; break; case SDLK_ESCAPE: case SDLK_KP1: new_btn = BUTTON_POWER; break; #elif CONFIG_KEYPAD == SANSA_M200_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_PLUS: new_btn = BUTTON_POWER; break; case SDLK_KP5: new_btn = BUTTON_SELECT; break; case SDLK_KP7: new_btn = BUTTON_VOL_DOWN; break; case SDLK_KP9: new_btn = BUTTON_VOL_UP; break; #elif CONFIG_KEYPAD == PHILIPS_SA9200_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_PLAY; break; case SDLK_KP7: new_btn = BUTTON_PREV; break; case SDLK_KP9: new_btn = BUTTON_NEXT; break; case SDLK_KP_ENTER: case SDLK_RETURN: new_btn = BUTTON_POWER; break; case SDLK_PAGEUP: new_btn = BUTTON_VOL_UP; break; case SDLK_PAGEDOWN: new_btn = BUTTON_VOL_DOWN; break; #elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; case SDLK_KP7: case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; case SDLK_KP1: new_btn = BUTTON_PLAYLIST; break; case SDLK_KP9: new_btn = BUTTON_VOL_UP; break; case SDLK_KP3: new_btn = BUTTON_VOL_DOWN; break; case SDLK_KP_MINUS: new_btn = BUTTON_MENU; break; case SDLK_KP_PLUS: new_btn = BUTTON_VIEW; break; #elif CONFIG_KEYPAD == ONDAVX747_PAD case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; case SDLK_KP_PLUS: case SDLK_RIGHT: new_btn = BUTTON_VOL_UP; break; case SDLK_KP_MINUS: case SDLK_LEFT: new_btn = BUTTON_VOL_DOWN; break; case SDLK_KP_ENTER: case SDLK_RETURN: new_btn = BUTTON_MENU; break; #elif CONFIG_KEYPAD == ONDAVX777_PAD case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; #elif CONFIG_KEYPAD == SAMSUNG_YH_PAD case SDLK_KP4: case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_KP6: case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_KP8: case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_KP2: case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_KP5: case SDLK_KP_ENTER: new_btn = BUTTON_PLAY; break; case SDLK_KP9: case SDLK_PAGEUP: new_btn = BUTTON_FFWD; break; #ifdef SAMSUNG_YH820 case SDLK_KP7: #else case SDLK_KP3: #endif case SDLK_PAGEDOWN: new_btn = BUTTON_REW; break; case SDLK_KP_PLUS: new_btn = BUTTON_REC; break; #elif CONFIG_KEYPAD == MINI2440_PAD case SDLK_LEFT: new_btn = BUTTON_LEFT; break; case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; case SDLK_UP: new_btn = BUTTON_UP; break; case SDLK_DOWN: new_btn = BUTTON_DOWN; break; case SDLK_F8: case SDLK_ESCAPE: new_btn = BUTTON_POWER; break; case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_a: new_btn = BUTTON_A; break; case SDLK_SPACE: new_btn = BUTTON_SELECT; break; case SDLK_KP_PERIOD: case SDLK_INSERT: new_btn = BUTTON_MENU; break; case SDLK_KP_PLUS: new_btn = BUTTON_VOL_UP; break; case SDLK_KP_MINUS: new_btn = BUTTON_VOL_DOWN; break; #else #error No keymap defined! #endif /* CONFIG_KEYPAD */ case SDLK_KP0: case SDLK_F5: if(pressed) { sim_trigger_screendump(); return; } break; } /* Call to make up for scrollwheel target implementation. This is * not handled in the main button.c driver, but on the target * implementation (look at button-e200.c for example if you are trying to * figure out why using button_get_data needed a hack before). */ #if defined(BUTTON_SCROLL_FWD) && defined(BUTTON_SCROLL_BACK) if((new_btn == BUTTON_SCROLL_FWD || new_btn == BUTTON_SCROLL_BACK) && pressed) { /* Clear these buttons from the data - adding them to the queue is * handled in the scrollwheel drivers for the targets. They do not * store the scroll forward/back buttons in their button data for * the button_read call. */ queue_post(&button_queue, new_btn, 1<<24); new_btn &= ~(BUTTON_SCROLL_FWD | BUTTON_SCROLL_BACK); } #endif if (pressed) btn |= new_btn; else btn &= ~new_btn; }