diff -ru rockbox-devel/apps/bookmark.c rockbox/apps/bookmark.c --- rockbox-devel/apps/bookmark.c 2006-01-22 08:43:56.000000000 +0900 +++ rockbox/apps/bookmark.c 2006-02-19 05:53:03.856814400 +0900 @@ -449,9 +449,18 @@ { #ifdef HAVE_LCD_BITMAP case BOOKMARK_DOWN: +#ifdef BOOKMARK_RC_DOWN + case BOOKMARK_RC_DOWN: +#endif +#ifdef BOOKMARK_RC_DOWN2 + case BOOKMARK_RC_DOWN2: +#endif return bookmark_load(global_bookmark_file_name, false); #endif case SETTINGS_OK: +#ifdef SETTINGS_RC_OK + case SETTINGS_RC_OK: +#endif return bookmark_load(global_bookmark_file_name, true); default: @@ -603,6 +612,9 @@ switch(key) { case BOOKMARK_SELECT: +#ifdef BOOKMARK_RC_SELECT + case BOOKMARK_RC_SELECT: +#endif #ifdef BOOKMARK_SELECT_PRE if (lastkey != BOOKMARK_SELECT_PRE) break; @@ -617,6 +629,9 @@ return bookmark; case BOOKMARK_DELETE: +#ifdef BOOKMARK_RC_DELETE + case BOOKMARK_RC_DELETE: +#endif /* User wants to delete this bookmark */ delete_bookmark(bookmark_file_name, bookmark_id); bookmark_id_prev=-2; @@ -627,11 +642,27 @@ case SETTINGS_DEC: case SETTINGS_DEC | BUTTON_REPEAT: +#ifdef SETTINGS_RC_DEC + case SETTINGS_RC_DEC: + case SETTINGS_RC_DEC | BUTTON_REPEAT: +#endif +#ifdef SETTINGS_RC_DEC2 + case SETTINGS_RC_DEC2: + case SETTINGS_RC_DEC2 | BUTTON_REPEAT: +#endif bookmark_id--; break; case SETTINGS_INC: case SETTINGS_INC | BUTTON_REPEAT: +#ifdef SETTINGS_RC_INC + case SETTINGS_RC_INC: + case SETTINGS_RC_INC | BUTTON_REPEAT: +#endif +#ifdef SETTINGS_RC_INC2 + case SETTINGS_RC_INC2: + case SETTINGS_RC_INC2 | BUTTON_REPEAT: +#endif bookmark_id++; break; @@ -639,6 +670,12 @@ #ifdef SETTINGS_CANCEL2 case SETTINGS_CANCEL2: #endif +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif #ifdef SETTINGS_OK2 case SETTINGS_OK2: #endif diff -ru rockbox-devel/apps/bookmark.h rockbox/apps/bookmark.h --- rockbox-devel/apps/bookmark.h 2006-02-06 06:18:18.000000000 +0900 +++ rockbox/apps/bookmark.h 2006-02-19 05:53:03.876843200 +0900 @@ -33,6 +33,11 @@ #define BOOKMARK_DELETE (BUTTON_ON | BUTTON_SELECT) #define BOOKMARK_DOWN BUTTON_DOWN +#define BOOKMARK_RC_SELECT BUTTON_RC_MENU /* for H1x0/H3x0 remote */ +#define BOOKMARK_RC_DELETE (BUTTON_RC_ON | BUTTON_RC_MENU ) /* for H1x0/H3x0 remote */ +#define BOOKMARK_RC_DOWN BUTTON_RC_FF /* for H1x0 remote */ +#define BOOKMARK_RC_DOWN2 BUTTON_RC3_VOL_DOWN /* for H3x0 remote */ + #elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) #define BOOKMARK_SELECT BUTTON_SELECT #define BOOKMARK_DELETE (BUTTON_RIGHT | BUTTON_REPEAT) diff -ru rockbox-devel/apps/debug_menu.c rockbox/apps/debug_menu.c --- rockbox-devel/apps/debug_menu.c 2006-02-18 07:38:38.000000000 +0900 +++ rockbox/apps/debug_menu.c 2006-02-19 05:53:03.906886400 +0900 @@ -104,6 +104,12 @@ switch(button) { case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; } } @@ -132,6 +138,12 @@ switch(button) { case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; case SETTINGS_DEC: @@ -168,6 +180,12 @@ switch(button) { case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; } @@ -248,6 +266,12 @@ audio_prev(); break; case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif done = true; break; } @@ -644,6 +668,12 @@ switch(button) { case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; case SETTINGS_DEC: @@ -692,6 +722,12 @@ { case SETTINGS_OK: case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; case SETTINGS_DEC: @@ -868,6 +904,12 @@ { case SETTINGS_CANCEL: case SETTINGS_OK2: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; } } @@ -931,6 +973,12 @@ switch(button) { case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; } } @@ -1015,6 +1063,12 @@ switch(button) { /* quit on release to allow for reading the cancel button input */ case (SETTINGS_CANCEL|BUTTON_REL): +#ifdef SETTINGS_RC_CANCEL + case (SETTINGS_RC_CANCEL|BUTTON_REL): +#endif +#ifdef SETTINGS_RC_CANCEL2 + case (SETTINGS_RC_CANCEL2|BUTTON_REL): +#endif return false; } } @@ -1056,6 +1110,12 @@ switch(button) { case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; } } @@ -1135,6 +1195,12 @@ switch(button) { case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; case SETTINGS_DEC: @@ -1203,6 +1269,12 @@ case SETTINGS_CANCEL: case SETTINGS_OK2: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; } } @@ -1366,6 +1438,12 @@ case SETTINGS_OK: case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; } } @@ -1421,6 +1499,12 @@ key = button_get_w_tmo(HZ); switch(key) { case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif done = true; break; @@ -1544,6 +1628,12 @@ { case SETTINGS_OK: case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif done = true; break; @@ -1704,6 +1794,12 @@ key = button_get_w_tmo(HZ*5); switch(key) { case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif done = true; break; @@ -1779,6 +1875,12 @@ { case SETTINGS_OK: case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif done = true; break; } @@ -1858,6 +1960,12 @@ switch(button) { case SETTINGS_CANCEL: +#ifdef SETTINGS_RC_CANCEL + case SETTINGS_RC_CANCEL: +#endif +#ifdef SETTINGS_RC_CANCEL2 + case SETTINGS_RC_CANCEL2: +#endif return false; } } diff -ru rockbox-devel/apps/eq_menu.c rockbox/apps/eq_menu.c --- rockbox-devel/apps/eq_menu.c 2006-02-18 04:56:04.000000000 +0900 +++ rockbox/apps/eq_menu.c 2006-02-19 05:53:03.926915200 +0900 @@ -58,6 +58,15 @@ #define EQ_BTN_CHANGE_MODE BUTTON_SELECT #define EQ_BTN_EXIT BUTTON_OFF +//#define EQ_BTN_RC_MODIFIER BUTTON_RC_ON +//#define EQ_BTN_RC_DECREMENT BUTTON_RC_LEFT +//#define EQ_BTN_RC_INCREMENT BUTTON_RC_RIGHT +//#define EQ_BTN_RC_NEXT_BAND BUTTON_RC_DOWN +//#define EQ_BTN_RC_PREV_BAND BUTTON_RC_UP +//#define EQ_BTN_RC_CHANGE_MODE BUTTON_RC_SELECT +#define EQ_BTN_RC_EXIT BUTTON_RC_STOP +#define EQ_BTN_RC_EXIT2 (BUTTON_RC_MENU | BUTTON_REPEAT) + #elif (CONFIG_KEYPAD == IPOD_4G_PAD) #define EQ_BTN_DECREMENT BUTTON_SCROLL_BACK @@ -640,6 +649,12 @@ case EQ_BTN_EXIT: case EQ_BTN_EXIT | BUTTON_REPEAT: +#ifdef EQ_BTN_RC_EXIT + case EQ_BTN_RC_EXIT: +#endif +#ifdef EQ_BTN_RC_EXIT2 + case EQ_BTN_RC_EXIT2: +#endif exit_request = true; result = false; break; diff -ru rockbox-devel/apps/gui/gwps.c rockbox/apps/gui/gwps.c --- rockbox-devel/apps/gui/gwps.c 2006-02-10 23:07:53.000000000 +0900 +++ rockbox/apps/gui/gwps.c 2006-02-19 05:53:03.966972800 +0900 @@ -326,6 +326,10 @@ case WPS_RC_INCVOL: case WPS_RC_INCVOL | BUTTON_REPEAT: #endif +#ifdef WPS_RC_INCVOL2 + case WPS_RC_INCVOL2: + case WPS_RC_INCVOL2 | BUTTON_REPEAT: +#endif { global_settings.volume++; bool res = false; @@ -349,6 +353,10 @@ case WPS_RC_DECVOL: case WPS_RC_DECVOL | BUTTON_REPEAT: #endif +#ifdef WPS_RC_DECVOL2 + case WPS_RC_DECVOL2: + case WPS_RC_DECVOL2 | BUTTON_REPEAT: +#endif { global_settings.volume--; setvol(); @@ -369,6 +377,9 @@ #ifdef WPS_RC_FFWD case WPS_RC_FFWD: #endif +#ifdef WPS_RC_FFWD2 + case WPS_RC_FFWD2: +#endif case WPS_FFWD: #ifdef WPS_NEXT_DIR if (current_tick - right_lastclick < HZ) @@ -381,6 +392,9 @@ #ifdef WPS_RC_REW case WPS_RC_REW: #endif +#ifdef WPS_RC_REW2 + case WPS_RC_REW2: +#endif case WPS_REW: #ifdef WPS_PREV_DIR if (current_tick - left_lastclick < HZ) @@ -405,7 +419,14 @@ if ((button == WPS_RC_PREV) && (lastbutton != WPS_RC_PREV_PRE)) break; #endif -#endif +#endif +#ifdef WPS_RC_PREV2 + case WPS_RC_PREV2: +#ifdef WPS_RC_PREV2_PRE + if ((button == WPS_RC_PREV2) && (lastbutton != WPS_RC_PREV2_PRE)) + break; +#endif +#endif left_lastclick = current_tick; update_track = true; @@ -489,6 +510,13 @@ break; #endif #endif +#ifdef WPS_RC_NEXT2 + case WPS_RC_NEXT2: +#ifdef WPS_RC_NEXT2_PRE + if ((button == WPS_RC_NEXT2) && (lastbutton != WPS_RC_NEXT2_PRE)) + break; +#endif +#endif right_lastclick = current_tick; update_track = true; diff -ru rockbox-devel/apps/gui/gwps.h rockbox/apps/gui/gwps.h --- rockbox-devel/apps/gui/gwps.h 2006-02-10 22:57:11.000000000 +0900 +++ rockbox/apps/gui/gwps.h 2006-02-19 05:53:03.976987200 +0900 @@ -51,15 +51,15 @@ #define WPS_RC_NEXT_DIR BUTTON_RC_BITRATE #define WPS_RC_PREV_DIR BUTTON_RC_SOURCE -#define WPS_RC_NEXT (BUTTON_RC_FF | BUTTON_REL) -#define WPS_RC_NEXT_PRE BUTTON_RC_FF -#define WPS_RC_PREV (BUTTON_RC_REW | BUTTON_REL) -#define WPS_RC_PREV_PRE BUTTON_RC_REW -#define WPS_RC_FFWD (BUTTON_RC_FF | BUTTON_REPEAT) -#define WPS_RC_REW (BUTTON_RC_REW | BUTTON_REPEAT) +#define WPS_RC_NEXT (BUTTON_RC_FF | BUTTON_REL) /* for H1x0 */ +#define WPS_RC_NEXT_PRE BUTTON_RC_FF /* for H1x0 */ +#define WPS_RC_PREV (BUTTON_RC_REW | BUTTON_REL) /* for H1x0 */ +#define WPS_RC_PREV_PRE BUTTON_RC_REW /* for H1x0 */ +#define WPS_RC_FFWD (BUTTON_RC_FF | BUTTON_REPEAT) /* for H1x0 */ +#define WPS_RC_REW (BUTTON_RC_REW | BUTTON_REPEAT) /* for H1x0 */ #define WPS_RC_PAUSE BUTTON_RC_ON -#define WPS_RC_INCVOL BUTTON_RC_VOL_UP -#define WPS_RC_DECVOL BUTTON_RC_VOL_DOWN +#define WPS_RC_INCVOL BUTTON_RC_VOL_UP /* for H1x0 */ +#define WPS_RC_DECVOL BUTTON_RC_VOL_DOWN /* for H1x0 */ #define WPS_RC_EXIT BUTTON_RC_STOP #define WPS_RC_MENU (BUTTON_RC_MODE | BUTTON_REL) #define WPS_RC_MENU_PRE BUTTON_RC_MODE @@ -68,6 +68,15 @@ #define WPS_RC_CONTEXT (BUTTON_RC_MENU | BUTTON_REPEAT) #define WPS_RC_QUICK (BUTTON_RC_MODE | BUTTON_REPEAT) +#define WPS_RC_NEXT2 (BUTTON_RC3_FF | BUTTON_REL) /* for H3x0 */ +#define WPS_RC_NEXT2_PRE BUTTON_RC3_FF /* for H3x0 */ +#define WPS_RC_PREV2 (BUTTON_RC3_REW | BUTTON_REL) /* for H3x0 */ +#define WPS_RC_PREV2_PRE BUTTON_RC3_REW /* for H3x0 */ +#define WPS_RC_FFWD2 (BUTTON_RC3_FF | BUTTON_REPEAT) /* for H3x0 */ +#define WPS_RC_REW2 (BUTTON_RC3_REW | BUTTON_REPEAT) /* for H3x0 */ +#define WPS_RC_INCVOL2 BUTTON_RC3_VOL_UP /* for H3x0 */ +#define WPS_RC_DECVOL2 BUTTON_RC3_VOL_DOWN /* for H3x0 */ + #ifdef AB_REPEAT_ENABLE #define WPS_AB_SHARE_DIR_BUTTONS #define WPS_AB_RESET_AB_MARKERS (BUTTON_ON | BUTTON_SELECT) diff -ru rockbox-devel/apps/gui/list.c rockbox/apps/gui/list.c --- rockbox-devel/apps/gui/list.c 2006-02-14 05:48:44.000000000 +0900 +++ rockbox/apps/gui/list.c 2006-02-19 05:53:03.997016000 +0900 @@ -596,12 +596,18 @@ #ifdef LIST_RC_PREV case LIST_RC_PREV: #endif +#ifdef LIST_RC_PREV2 + case LIST_RC_PREV2: +#endif gui_synclist_limit_scroll(lists, false); case LIST_PREV | BUTTON_REPEAT: #ifdef LIST_RC_PREV case LIST_RC_PREV | BUTTON_REPEAT: #endif +#ifdef LIST_RC_PREV2 + case LIST_RC_PREV2 | BUTTON_REPEAT: +#endif gui_synclist_select_previous(lists); gui_synclist_draw(lists); yield(); @@ -611,6 +617,9 @@ #ifdef LIST_RC_NEXT case LIST_RC_NEXT: #endif +#ifdef LIST_RC_NEXT2 + case LIST_RC_NEXT2: +#endif gui_synclist_limit_scroll(lists, false); case LIST_NEXT | BUTTON_REPEAT: @@ -618,6 +627,9 @@ case LIST_RC_NEXT | BUTTON_REPEAT: #endif +#ifdef LIST_RC_NEXT2 + case LIST_RC_NEXT2 | BUTTON_REPEAT: +#endif gui_synclist_select_next(lists); gui_synclist_draw(lists); yield(); @@ -630,6 +642,10 @@ case LIST_RC_PGRIGHT: case LIST_RC_PGRIGHT | BUTTON_REPEAT: #endif +#ifdef LIST_RC_PGRIGHT2 + case LIST_RC_PGRIGHT2: + case LIST_RC_PGRIGHT2 | BUTTON_REPEAT: +#endif gui_synclist_scroll_right(lists); gui_synclist_draw(lists); return true; @@ -642,6 +658,10 @@ case LIST_RC_PGLEFT: case LIST_RC_PGLEFT | BUTTON_REPEAT: #endif +#ifdef LIST_RC_PGLEFT2 + case LIST_RC_PGLEFT2: + case LIST_RC_PGLEFT2 | BUTTON_REPEAT: +#endif gui_synclist_scroll_left(lists); gui_synclist_draw(lists); return true; diff -ru rockbox-devel/apps/gui/list.h rockbox/apps/gui/list.h --- rockbox-devel/apps/gui/list.h 2006-02-06 06:18:19.000000000 +0900 +++ rockbox/apps/gui/list.h 2006-02-19 05:53:04.017044800 +0900 @@ -43,6 +43,10 @@ #define LIST_RC_PGDN BUTTON_RC_BITRATE #define LIST_RC_PGRIGHT (BUTTON_RC_VOL_UP) #define LIST_RC_PGLEFT (BUTTON_RC_VOL_DOWN) +#define LIST_RC_NEXT2 BUTTON_RC3_VOL_DOWN +#define LIST_RC_PREV2 BUTTON_RC3_VOL_UP +#define LIST_RC_PGRIGHT2 BUTTON_RC3_FF +#define LIST_RC_PGLEFT2 BUTTON_RC3_REW #endif /* CONFIG_REMOTE_KEYPAD */ #elif CONFIG_KEYPAD == RECORDER_PAD diff -ru rockbox-devel/apps/gui/quickscreen.c rockbox/apps/gui/quickscreen.c --- rockbox-devel/apps/gui/quickscreen.c 2006-01-22 08:43:57.000000000 +0900 +++ rockbox/apps/gui/quickscreen.c 2006-02-19 05:53:04.037073600 +0900 @@ -117,6 +117,10 @@ case QUICKSCREEN_RC_LEFT : case QUICKSCREEN_RC_LEFT | BUTTON_REPEAT : #endif +#ifdef QUICKSCREEN_RC_LEFT2 + case QUICKSCREEN_RC_LEFT2 : + case QUICKSCREEN_RC_LEFT2 | BUTTON_REPEAT : +#endif option_select_next(qs->left_option); return(true); @@ -126,6 +130,10 @@ case QUICKSCREEN_RC_BOTTOM : case QUICKSCREEN_RC_BOTTOM | BUTTON_REPEAT : #endif +#ifdef QUICKSCREEN_RC_BOTTOM2 + case QUICKSCREEN_RC_BOTTOM2 : + case QUICKSCREEN_RC_BOTTOM2 | BUTTON_REPEAT : +#endif option_select_next(qs->bottom_option); return(true); @@ -135,6 +143,10 @@ case QUICKSCREEN_RC_RIGHT : case QUICKSCREEN_RC_RIGHT | BUTTON_REPEAT : #endif +#ifdef QUICKSCREEN_RC_RIGHT2 + case QUICKSCREEN_RC_RIGHT2 : + case QUICKSCREEN_RC_RIGHT2 | BUTTON_REPEAT : +#endif option_select_next(qs->right_option); return(true); @@ -144,6 +156,10 @@ case QUICKSCREEN_RC_BOTTOM_INV : case QUICKSCREEN_RC_BOTTOM_INV | BUTTON_REPEAT : #endif +#ifdef QUICKSCREEN_RC_BOTTOM_INV2 + case QUICKSCREEN_RC_BOTTOM_INV2 : + case QUICKSCREEN_RC_BOTTOM_INV2 | BUTTON_REPEAT : +#endif option_select_prev(qs->bottom_option); return(true); } diff -ru rockbox-devel/apps/gui/quickscreen.h rockbox/apps/gui/quickscreen.h --- rockbox-devel/apps/gui/quickscreen.h 2005-11-23 06:55:04.000000000 +0900 +++ rockbox/apps/gui/quickscreen.h 2006-02-19 05:53:04.057102400 +0900 @@ -44,6 +44,10 @@ #define QUICKSCREEN_RC_BOTTOM BUTTON_RC_VOL_DOWN #define QUICKSCREEN_RC_BOTTOM_INV BUTTON_RC_VOL_UP #define QUICKSCREEN_RC_RIGHT BUTTON_RC_FF +#define QUICKSCREEN_RC_LEFT2 BUTTON_RC3_REW +#define QUICKSCREEN_RC_BOTTOM2 BUTTON_RC3_VOL_DOWN +#define QUICKSCREEN_RC_BOTTOM_INV2 BUTTON_RC3_VOL_UP +#define QUICKSCREEN_RC_RIGHT2 BUTTON_RC3_FF #endif #endif diff -ru rockbox-devel/apps/gui/select.c rockbox/apps/gui/select.c --- rockbox-devel/apps/gui/select.c 2005-12-08 00:37:21.000000000 +0900 +++ rockbox/apps/gui/select.c 2006-02-19 05:53:04.077131200 +0900 @@ -88,6 +88,9 @@ #ifdef SELECT_RC_INC case SELECT_RC_INC : #endif +#ifdef SELECT_RC_INC2 + case SELECT_RC_INC2 : +#endif option_select_next(&select->options); return(true); @@ -95,11 +98,17 @@ #ifdef SELECT_RC_DEC case SELECT_RC_DEC | BUTTON_REPEAT : #endif +#ifdef SELECT_RC_DEC2 + case SELECT_RC_DEC2 | BUTTON_REPEAT : +#endif select->options.limit_loop = true; case SELECT_DEC : #ifdef SELECT_RC_DEC case SELECT_RC_DEC : #endif +#ifdef SELECT_RC_DEC2 + case SELECT_RC_DEC2 : +#endif option_select_prev(&select->options); return(true); diff -ru rockbox-devel/apps/gui/select.h rockbox/apps/gui/select.h --- rockbox-devel/apps/gui/select.h 2006-02-06 06:18:19.000000000 +0900 +++ rockbox/apps/gui/select.h 2006-02-19 05:53:04.087145600 +0900 @@ -38,6 +38,8 @@ #define SELECT_RC_OK2 BUTTON_RC_MENU #define SELECT_RC_CANCEL BUTTON_RC_STOP #define SELECT_RC_CANCEL2 BUTTON_RC_MODE +#define SELECT_RC_INC2 BUTTON_RC3_VOL_UP +#define SELECT_RC_DEC2 BUTTON_RC3_VOL_DOWN #elif CONFIG_KEYPAD == RECORDER_PAD #define SELECT_INC BUTTON_UP diff -ru rockbox-devel/apps/menu.c rockbox/apps/menu.c --- rockbox-devel/apps/menu.c 2005-12-06 07:44:41.000000000 +0900 +++ rockbox/apps/menu.c 2006-02-19 05:53:04.097160000 +0900 @@ -64,6 +64,9 @@ static struct menu menus[MAX_MENUS]; static bool inuse[MAX_MENUS] = { false }; +static int lastkey = BUTTON_NONE; + + char * menu_get_itemname(int selected_item, void * data, char *buffer) { struct menu *local_menus=(struct menu *)data; @@ -153,6 +156,16 @@ #ifdef MENU_RC_ENTER2 case MENU_RC_ENTER2: #endif +#ifdef MENU_RC_ENTER3 + case MENU_RC_ENTER3: +#endif +#ifdef MENU_RC_ENTER4 + case MENU_RC_ENTER4: +#endif +#ifdef MENU_RC_ENTER2_PRE + if ((key == MENU_RC_ENTER2) && (lastkey != MENU_RC_ENTER2_PRE)) + break; +#endif return gui_synclist_get_sel_pos(&(menus[m].synclist)); @@ -169,6 +182,17 @@ #ifdef MENU_RC_EXIT_MENU case MENU_RC_EXIT_MENU: #endif +#ifdef MENU_RC_EXIT2 + case MENU_RC_EXIT2: +#endif +#ifdef MENU_RC_EXIT4 + case MENU_RC_EXIT4: +#endif +#ifdef MENU_RC_EXIT3 + case MENU_RC_EXIT3: + if (lastkey == MENU_RC_EXIT3) + break; +#endif exit = true; break; @@ -177,6 +201,8 @@ return MENU_ATTACHED_USB; break; } + if ( key ) + lastkey = key; gui_syncstatusbar_draw(&statusbars, false); } return MENU_SELECTED_EXIT; diff -ru rockbox-devel/apps/menu.h rockbox/apps/menu.h --- rockbox-devel/apps/menu.h 2006-02-06 06:18:18.000000000 +0900 +++ rockbox/apps/menu.h 2006-02-19 05:53:04.117188800 +0900 @@ -31,11 +31,16 @@ #define MENU_ENTER BUTTON_RIGHT #define MENU_ENTER2 BUTTON_SELECT +#define MENU_RC_ENTER BUTTON_RC_ON +#define MENU_RC_ENTER2 (BUTTON_RC_MENU | BUTTON_REL) +#define MENU_RC_ENTER2_PRE BUTTON_RC_MENU +#define MENU_RC_ENTER3 BUTTON_RC_VOL_UP +#define MENU_RC_ENTER4 BUTTON_RC3_FF #define MENU_RC_EXIT BUTTON_RC_STOP #define MENU_RC_EXIT_MENU BUTTON_RC_MODE -#define MENU_RC_ENTER BUTTON_RC_ON -#define MENU_RC_ENTER2 BUTTON_RC_MENU - +#define MENU_RC_EXIT2 BUTTON_RC_VOL_DOWN +#define MENU_RC_EXIT3 (BUTTON_RC_MENU | BUTTON_REPEAT) +#define MENU_RC_EXIT4 BUTTON_RC3_REW #elif CONFIG_KEYPAD == RECORDER_PAD diff -ru rockbox-devel/apps/settings.h rockbox/apps/settings.h --- rockbox-devel/apps/settings.h 2006-02-18 07:47:56.000000000 +0900 +++ rockbox/apps/settings.h 2006-02-19 05:53:04.137217600 +0900 @@ -56,6 +56,21 @@ #define SETTINGS_NEXT BUTTON_RIGHT #define SETTINGS_ACCEPT BUTTON_ON +#define SETTINGS_RC_INC BUTTON_RC_FF /* for H1x0 remote */ +#define SETTINGS_RC_INC2 BUTTON_RC3_VOL_UP /* for H3x0 remote */ +#define SETTINGS_RC_DEC BUTTON_RC_REW /* for H1x0 remote */ +#define SETTINGS_RC_DEC2 BUTTON_RC3_VOL_DOWN /* for H3x0 remote */ +#define SETTINGS_RC_OK BUTTON_RC_ON /* for H1x0/H3x0 remote */ +#define SETTINGS_RC_OK2 (BUTTON_RC_MENU | BUTTON_REL) /* for H1x0/H3x0 remote */ +#define SETTINGS_RC_OK2_PRE BUTTON_RC_MENU +#define SETTINGS_RC_CANCEL BUTTON_RC_STOP /* for H1x0/H3x0 remote */ +#define SETTINGS_RC_CANCEL2 (BUTTON_RC_MENU | BUTTON_REPEAT) /* for H1x0/H3x0 remote */ +#define SETTINGS_RC_PREV BUTTON_RC_REW /* for H1x0 remote */ +#define SETTINGS_RC_PREV2 BUTTON_RC3_REW /* for H3x0 remote */ +#define SETTINGS_RC_NEXT BUTTON_RC_FF /* for H1x0 remote */ +#define SETTINGS_RC_NEXT2 BUTTON_RC3_FF /* for H3x0 remote */ +//#define SETTINGS_RC_ACCEPT BUTTON_ + #elif CONFIG_KEYPAD == RECORDER_PAD #define SETTINGS_INC BUTTON_UP #define SETTINGS_DEC BUTTON_DOWN @@ -387,6 +402,7 @@ then according to timeout_values[] */ int remote_backlight_timeout_plugged; bool remote_caption_backlight; /* turn on backlight at end and start of track */ + int remote_type; /* remote type 0=H1x0, 1=H3x0 LCD, 2=H3x0 nonLCD, 3=other */ #ifdef HAVE_REMOTE_LCD_TICKING bool remote_reduce_ticking; /* 0=normal operation, 1=EMI reduce on with cost more CPU. */ diff -ru rockbox-devel/apps/tree.c rockbox/apps/tree.c --- rockbox-devel/apps/tree.c 2006-02-08 01:41:29.000000000 +0900 +++ rockbox/apps/tree.c 2006-02-19 05:53:04.147232000 +0900 @@ -581,11 +581,14 @@ switch ( button ) { #ifdef TREE_ENTER case TREE_ENTER: - case TREE_ENTER | BUTTON_REPEAT: +// case TREE_ENTER | BUTTON_REPEAT: #endif #ifdef TREE_RC_RUN case TREE_RC_RUN: #endif +#ifdef TREE_RC_ENTER + case TREE_RC_ENTER: +#endif case TREE_RUN: #ifdef TREE_RUN_PRE if (((button == TREE_RUN) @@ -611,17 +614,30 @@ break; case TREE_EXIT: - case TREE_EXIT | BUTTON_REPEAT: +// case TREE_EXIT | BUTTON_REPEAT: #ifdef TREE_RC_EXIT case TREE_RC_EXIT: #endif +#ifdef TREE_RC_EXIT2 + case TREE_RC_EXIT2: +#endif +#ifdef TREE_RC_EXIT3 + case TREE_RC_EXIT3: + if (lastbutton == TREE_RC_EXIT3) + break; +#endif if (*tc.dirfilter > NUM_FILTER_MODES && tc.dirlevel < 1) { exit_func = true; break; } /* if we are in /, nothing to do */ if (tc.dirlevel == 0) + { + if (audio_status() & AUDIO_STATUS_PLAY) + start_wps=true; + while(button_get_w_tmo(HZ/5)) {} break; + } if (id3db) db_exit(&tc); diff -ru rockbox-devel/apps/tree.h rockbox/apps/tree.h --- rockbox-devel/apps/tree.h 2006-02-06 06:18:18.000000000 +0900 +++ rockbox/apps/tree.h 2006-02-19 05:53:04.157246400 +0900 @@ -52,6 +52,9 @@ #define TREE_RC_PGUP BUTTON_RC_SOURCE #define TREE_RC_PGDN BUTTON_RC_BITRATE #define TREE_RC_EXIT BUTTON_RC_STOP +#define TREE_RC_ENTER BUTTON_RC_VOL_UP +#define TREE_RC_EXIT2 BUTTON_RC_VOL_DOWN +#define TREE_RC_EXIT3 (BUTTON_RC_MENU | BUTTON_REPEAT) #define TREE_RC_RUN (BUTTON_RC_MENU | BUTTON_REL) #define TREE_RC_RUN_PRE BUTTON_RC_MENU #define TREE_RC_MENU (BUTTON_RC_MODE | BUTTON_REL) diff -ru rockbox-devel/firmware/drivers/button.c rockbox/firmware/drivers/button.c --- rockbox-devel/firmware/drivers/button.c 2006-02-19 03:42:46.000000000 +0900 +++ rockbox/firmware/drivers/button.c 2006-02-19 06:05:42.047038400 +0900 @@ -39,6 +39,7 @@ #include "power.h" #include "system.h" #include "powermgmt.h" +#include "lcd-remote.h" struct event_queue button_queue; @@ -48,6 +49,24 @@ static bool flipped; /* buttons can be flipped to match the LCD flip */ #endif +#ifdef HAVE_REMOTE_LCD +int rm_type = 0; + +/* H100 , H300 LCD , H300 */ +int rc_button_0[3] = { BUTTON_RC_STOP , BUTTON_RC3_VOL_DOWN, BUTTON_NONE }; /* 0x00 <= data < 0x10 */ +int rc_button_1[3] = { BUTTON_RC_VOL_DOWN , BUTTON_RC3_FF , BUTTON_RC3_FF }; /* 0x10 <= data < 0x20 */ +int rc_button_2[3] = { BUTTON_RC_MODE , BUTTON_RC_STOP , BUTTON_RC3_REW }; /* 0x20 <= data < 0x40 */ +int rc_button_3[3] = { BUTTON_RC_VOL_UP , BUTTON_RC_MODE , BUTTON_NONE }; /* 0x40 <= data < 0x58 */ +int rc_button_4[3] = { BUTTON_RC_BITRATE , BUTTON_RC_REC , BUTTON_NONE }; /* 0x58 <= data < 0x74 */ +int rc_button_5[3] = { BUTTON_RC_REC , BUTTON_RC_ON , BUTTON_NONE }; /* 0x74 <= data < 0x88 */ +int rc_button_6[3] = { BUTTON_RC_SOURCE , BUTTON_RC_BITRATE , BUTTON_NONE }; /* 0x88 <= data < 0xb0 */ +int rc_button_7[3] = { BUTTON_RC_FF , BUTTON_RC_SOURCE , BUTTON_NONE }; /* 0xb0 <= data < 0xc0 */ +int rc_button_8[3] = { BUTTON_RC_MENU , BUTTON_RC3_VOL_UP , BUTTON_RC3_VOL_DOWN }; /* 0xc0 <= data < 0xd8 */ +int rc_button_9[3] = { BUTTON_RC_REW , BUTTON_RC3_REW , BUTTON_RC3_VOL_UP }; /* 0xd8 <= data < 0xf8 */ +int rc_button_10[3] ={ BUTTON_RC_ON , BUTTON_RC_MENU , BUTTON_RC_ON }; /* GPI01 */ + +#endif + /* how often we check to see if a button is pressed */ #define POLL_FREQUENCY HZ/100 @@ -755,44 +774,45 @@ if (!remote_hold_button) { data = adc_scan(ADC_REMOTE); + rm_type = remote_type(); if (data < 0x74) if (data < 0x40) if (data < 0x20) - if(data < 0x10) - btn = BUTTON_RC_STOP; - else - btn = BUTTON_RC_VOL_DOWN; - else - btn = BUTTON_RC_MODE; + if(data < 0x10) /* 0x00 <= data < 0x10 */ + btn = rc_button_0[rm_type]; + else /* 0x10 <= data < 0x20 */ + btn = rc_button_1[rm_type]; + else /* 0x20 <= data < 0x40 */ + btn = rc_button_2[rm_type]; else - if (data < 0x58) - btn = BUTTON_RC_VOL_UP; - else - btn = BUTTON_RC_BITRATE; + if (data < 0x58) /* 0x40 <= data < 0x58 */ + btn = rc_button_3[rm_type]; + else /* 0x58 <= data < 0x74 */ + btn = rc_button_4[rm_type]; else if (data < 0xb0) - if (data < 0x88) - btn = BUTTON_RC_REC; - else - btn = BUTTON_RC_SOURCE; + if (data < 0x88) /* 0x74 <= data < 0x88 */ + btn = rc_button_5[rm_type]; + else /* 0x88 <= data < 0xb0 */ + btn = rc_button_6[rm_type]; else if (data < 0xd8) - if(data < 0xc0) - btn = BUTTON_RC_FF; - else - btn = BUTTON_RC_MENU; + if(data < 0xc0) /* 0xb0 <= data < 0xc0 */ + btn = rc_button_7[rm_type]; + else /* 0xc0 <= data < 0xd8 */ + btn = rc_button_8[rm_type]; else - if (data < 0xf0) - btn = BUTTON_RC_REW; - } - + if (data < 0xf8) /* 0xd8 <= data < 0xf8 */ + btn = rc_button_9[rm_type]; + } /* 0xf8 <= data */ + /* special buttons */ data = GPIO1_READ; if (!hold_button && ((data & 0x20) == 0)) btn |= BUTTON_ON; if (!remote_hold_button && ((data & 0x40) == 0)) - btn |= BUTTON_RC_ON; + btn |= rc_button_10[rm_type]; #elif CONFIG_KEYPAD == IRIVER_H300_PAD @@ -840,37 +860,38 @@ if (!remote_hold_button) { data = adc_scan(ADC_REMOTE); + rm_type = remote_type(); if (data < 0x74) if (data < 0x40) if (data < 0x20) - if(data < 0x10) - btn = BUTTON_RC_STOP; - else - btn = BUTTON_RC_VOL_DOWN; - else - btn = BUTTON_RC_MODE; + if(data < 0x10) /* 0x00 <= data < 0x10 */ + btn = rc_button_0[rm_type]; + else /* 0x10 <= data < 0x20 */ + btn = rc_button_1[rm_type]; + else /* 0x20 <= data < 0x40 */ + btn = rc_button_2[rm_type]; else - if (data < 0x58) - btn = BUTTON_RC_VOL_UP; - else - btn = BUTTON_RC_BITRATE; + if (data < 0x58) /* 0x40 <= data < 0x58 */ + btn = rc_button_3[rm_type]; + else /* 0x58 <= data < 0x74 */ + btn = rc_button_4[rm_type]; else if (data < 0xb0) - if (data < 0x88) - btn = BUTTON_RC_REC; - else - btn = BUTTON_RC_SOURCE; + if (data < 0x88) /* 0x74 <= data < 0x88 */ + btn = rc_button_5[rm_type]; + else /* 0x88 <= data < 0xb0 */ + btn = rc_button_6[rm_type]; else if (data < 0xd8) - if(data < 0xc0) - btn = BUTTON_RC_FF; - else - btn = BUTTON_RC_MENU; + if(data < 0xc0) /* 0xb0 <= data < 0xc0 */ + btn = rc_button_7[rm_type]; + else /* 0xc0 <= data < 0xd8 */ + btn = rc_button_8[rm_type]; else - if (data < 0xf0) - btn = BUTTON_RC_REW; - } + if (data < 0xf8) /* 0xd8 <= data < 0xf8 */ + btn = rc_button_9[rm_type]; + } /* 0xf8 <= data */ /* special buttons */ if (!hold_button) @@ -886,7 +907,7 @@ if (!hold_button && ((data & 0x20) == 0)) btn |= BUTTON_ON; if (!remote_hold_button && ((data & 0x40) == 0)) - btn |= BUTTON_RC_ON; + btn |= rc_button_10[rm_type]; #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD @@ -1073,7 +1094,19 @@ static bool remote_button_hold_only(void) { - return (GPIO1_READ & 0x00100000)?true:false; + bool rc = false; + switch(remote_type()) + { + case RC_TYPE_H300: + rc = (adc_scan(ADC_REMOTE) == 0x00)?true:false; + break; + case RC_TYPE_H100: + case RC_TYPE_H300_LCD: + case RC_TYPE_OTHER: + rc = (GPIO1_READ & 0x00100000)?true:false; + break; + } + return rc; } bool remote_button_hold(void) diff -ru rockbox-devel/firmware/export/button.h rockbox/firmware/export/button.h --- rockbox-devel/firmware/export/button.h 2006-02-19 03:42:46.000000000 +0900 +++ rockbox/firmware/export/button.h 2006-02-19 05:53:04.197304000 +0900 @@ -47,6 +47,8 @@ bool remote_button_hold(void); #endif +extern void set_remote_type(int type); + #if CONFIG_KEYPAD == IRIVER_IFP7XX_PAD bool button_hold(void); #endif @@ -61,6 +63,7 @@ #define BUTTON_REMOTE 0x2000 #define BUTTON_REPEAT 0x4000 #define BUTTON_REL 0x8000 +#define BUTTON_REMOTE3 0x1000 /* for H3x0 remote */ /* remote control buttons */ #define BUTTON_RC_VOL_UP (0x0008 | BUTTON_REMOTE) @@ -68,6 +71,11 @@ #define BUTTON_RC_LEFT (BUTTON_LEFT | BUTTON_REMOTE) #define BUTTON_RC_RIGHT (BUTTON_RIGHT| BUTTON_REMOTE) +#define RC_TYPE_H100 0 +#define RC_TYPE_H300_LCD 1 +#define RC_TYPE_H300 2 +#define RC_TYPE_OTHER 3 + #if CONFIG_KEYPAD == IRIVER_H100_PAD /* iRiver H100 specific button codes */ @@ -90,6 +98,10 @@ #define BUTTON_RC_MENU (BUTTON_REMOTE | 0x01000000) #define BUTTON_RC_FF (BUTTON_REMOTE | 0x02000000) #define BUTTON_RC_REW (BUTTON_REMOTE | 0x04000000) +#define BUTTON_RC3_VOL_UP (BUTTON_REMOTE3 | 0x00000008) +#define BUTTON_RC3_VOL_DOWN (BUTTON_REMOTE3 | 0x00000800) +#define BUTTON_RC3_FF (BUTTON_REMOTE3 | 0x02000000) +#define BUTTON_RC3_REW (BUTTON_REMOTE3 | 0x04000000) #elif CONFIG_KEYPAD == IRIVER_H300_PAD @@ -101,6 +113,8 @@ #define BUTTON_OFF 0x0002 #define BUTTON_UP 0x0010 #define BUTTON_DOWN 0x0020 +#define BUTTON_QUICK BUTTON_ON +#define BUTTON_QUICK_LONG (BUTTON_ON | BUTTON_REPEAT) #define BUTTON_RC_ON (BUTTON_REMOTE | 0x00010000) #define BUTTON_RC_STOP (BUTTON_REMOTE | 0x00020000) @@ -111,6 +125,10 @@ #define BUTTON_RC_MENU (BUTTON_REMOTE | 0x01000000) #define BUTTON_RC_FF (BUTTON_REMOTE | 0x02000000) #define BUTTON_RC_REW (BUTTON_REMOTE | 0x04000000) +#define BUTTON_RC3_VOL_UP (BUTTON_REMOTE3 | 0x00000008) +#define BUTTON_RC3_VOL_DOWN (BUTTON_REMOTE3 | 0x00000800) +#define BUTTON_RC3_FF (BUTTON_REMOTE3 | 0x02000000) +#define BUTTON_RC3_REW (BUTTON_REMOTE3 | 0x04000000) #elif CONFIG_KEYPAD == RECORDER_PAD @@ -202,4 +220,3 @@ #endif /* RECORDER/PLAYER/ONDIO/GMINI KEYPAD */ #endif /* _BUTTON_H_ */ -