summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/bookmark.h2
-rw-r--r--apps/eq_menu.c2
-rw-r--r--apps/gui/gwps.h6
-rw-r--r--apps/gui/select.h2
-rw-r--r--apps/menu.h2
-rw-r--r--apps/plugins/calculator.c4
-rw-r--r--apps/plugins/chessclock.c4
-rw-r--r--apps/plugins/chip8.c2
-rw-r--r--apps/plugins/cube.c2
-rw-r--r--apps/plugins/databox/databox.c2
-rw-r--r--apps/plugins/flipit.c4
-rw-r--r--apps/plugins/jewels.c2
-rw-r--r--apps/plugins/jpeg.c6
-rw-r--r--apps/plugins/logo.c8
-rw-r--r--apps/plugins/mandelbrot.c6
-rw-r--r--apps/plugins/minesweeper.c2
-rw-r--r--apps/plugins/mosaique.c2
-rw-r--r--apps/plugins/mp3_encoder.c2
-rw-r--r--apps/plugins/plasma.c4
-rw-r--r--apps/plugins/snake2.c2
-rw-r--r--apps/plugins/sokoban.c4
-rw-r--r--apps/plugins/solitaire.c4
-rw-r--r--apps/plugins/star.c4
-rw-r--r--apps/plugins/stopwatch.c2
-rw-r--r--apps/plugins/sudoku.c2
-rw-r--r--apps/plugins/viewer.c2
-rw-r--r--apps/recorder/keyboard.c4
-rw-r--r--apps/settings.h2
-rw-r--r--apps/tree.h10
-rw-r--r--firmware/drivers/button.c45
-rw-r--r--firmware/export/adc.h3
-rw-r--r--firmware/export/button.h6
32 files changed, 98 insertions, 56 deletions
diff --git a/apps/bookmark.h b/apps/bookmark.h
index f6f6bc8019..2d1dc3e27f 100644
--- a/apps/bookmark.h
+++ b/apps/bookmark.h
@@ -44,7 +44,7 @@
44#define BOOKMARK_DOWN BUTTON_DOWN 44#define BOOKMARK_DOWN BUTTON_DOWN
45 45
46#elif CONFIG_KEYPAD == IAUDIO_X5_PAD 46#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
47#define BOOKMARK_SELECT BUTTON_MENU 47#define BOOKMARK_SELECT BUTTON_SELECT
48#define BOOKMARK_DELETE BUTTON_REC | BUTTON_REPEAT 48#define BOOKMARK_DELETE BUTTON_REC | BUTTON_REPEAT
49#define BOOKMARK_DOWN BUTTON_DOWN 49#define BOOKMARK_DOWN BUTTON_DOWN
50 50
diff --git a/apps/eq_menu.c b/apps/eq_menu.c
index 80cdec3f65..0e754dd979 100644
--- a/apps/eq_menu.c
+++ b/apps/eq_menu.c
@@ -74,7 +74,7 @@
74#define EQ_BTN_NEXT_BAND BUTTON_DOWN 74#define EQ_BTN_NEXT_BAND BUTTON_DOWN
75#define EQ_BTN_PREV_BAND BUTTON_UP 75#define EQ_BTN_PREV_BAND BUTTON_UP
76#define EQ_BTN_CHANGE_MODE BUTTON_REC 76#define EQ_BTN_CHANGE_MODE BUTTON_REC
77#define EQ_BTN_EXIT BUTTON_MENU 77#define EQ_BTN_EXIT BUTTON_SELECT
78 78
79#elif (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) 79#elif (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD)
80 80
diff --git a/apps/gui/gwps.h b/apps/gui/gwps.h
index 2f63a4d1e4..dc6841b881 100644
--- a/apps/gui/gwps.h
+++ b/apps/gui/gwps.h
@@ -228,10 +228,10 @@
228#define WPS_DECVOL BUTTON_DOWN 228#define WPS_DECVOL BUTTON_DOWN
229#define WPS_PAUSE BUTTON_PLAY 229#define WPS_PAUSE BUTTON_PLAY
230/* #define WPS_MENU iAudioX5 can't have both main menu and context menu in wps (unless we use BUTTON_REC?) */ 230/* #define WPS_MENU iAudioX5 can't have both main menu and context menu in wps (unless we use BUTTON_REC?) */
231#define WPS_BROWSE (BUTTON_MENU | BUTTON_REL) 231#define WPS_BROWSE (BUTTON_SELECT | BUTTON_REL)
232#define WPS_BROWSE_PRE BUTTON_MENU 232#define WPS_BROWSE_PRE BUTTON_SELECT
233#define WPS_EXIT (BUTTON_PLAY | BUTTON_REPEAT) 233#define WPS_EXIT (BUTTON_PLAY | BUTTON_REPEAT)
234#define WPS_CONTEXT (BUTTON_MENU | BUTTON_REPEAT) 234#define WPS_CONTEXT (BUTTON_SELECT | BUTTON_REPEAT)
235 235
236#endif 236#endif
237 237
diff --git a/apps/gui/select.h b/apps/gui/select.h
index d0e545bd51..ff552950d7 100644
--- a/apps/gui/select.h
+++ b/apps/gui/select.h
@@ -88,7 +88,7 @@
88#elif CONFIG_KEYPAD == IAUDIO_X5_PAD 88#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
89#define SELECT_INC BUTTON_UP 89#define SELECT_INC BUTTON_UP
90#define SELECT_DEC BUTTON_DOWN 90#define SELECT_DEC BUTTON_DOWN
91#define SELECT_OK BUTTON_MENU 91#define SELECT_OK BUTTON_SELECT
92#define SELECT_OK2 BUTTON_LEFT 92#define SELECT_OK2 BUTTON_LEFT
93#define SELECT_CANCEL BUTTON_PLAY 93#define SELECT_CANCEL BUTTON_PLAY
94#define SELECT_CANCEL2 BUTTON_POWER 94#define SELECT_CANCEL2 BUTTON_POWER
diff --git a/apps/menu.h b/apps/menu.h
index 2130a00683..31e8730831 100644
--- a/apps/menu.h
+++ b/apps/menu.h
@@ -92,7 +92,7 @@
92#define MENU_NEXT BUTTON_DOWN 92#define MENU_NEXT BUTTON_DOWN
93#define MENU_PREV BUTTON_UP 93#define MENU_PREV BUTTON_UP
94#define MENU_EXIT BUTTON_LEFT 94#define MENU_EXIT BUTTON_LEFT
95#define MENU_EXIT_MENU BUTTON_MENU 95#define MENU_EXIT_MENU BUTTON_REC
96#define MENU_ENTER BUTTON_RIGHT 96#define MENU_ENTER BUTTON_RIGHT
97 97
98#endif 98#endif
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index 2584062fd7..fb31d3d516 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -148,8 +148,8 @@ PLUGIN_HEADER
148#define CALCULATOR_UP BUTTON_UP 148#define CALCULATOR_UP BUTTON_UP
149#define CALCULATOR_DOWN BUTTON_DOWN 149#define CALCULATOR_DOWN BUTTON_DOWN
150#define CALCULATOR_QUIT BUTTON_POWER 150#define CALCULATOR_QUIT BUTTON_POWER
151#define CALCULATOR_INPUT_CALC_PRE BUTTON_MENU 151#define CALCULATOR_INPUT_CALC_PRE BUTTON_SELECT
152#define CALCULATOR_INPUT (BUTTON_MENU | BUTTON_REL) 152#define CALCULATOR_INPUT (BUTTON_SELECT | BUTTON_REL)
153#define CALCULATOR_CALC BUTTON_PLAY 153#define CALCULATOR_CALC BUTTON_PLAY
154#define CALCULATOR_CLEAR BUTTON_REC 154#define CALCULATOR_CLEAR BUTTON_REC
155 155
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index 6f1837ca2b..84979ab401 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -90,10 +90,10 @@ PLUGIN_HEADER
90#define CHC_QUIT BUTTON_REC 90#define CHC_QUIT BUTTON_REC
91#define CHC_STARTSTOP BUTTON_PLAY 91#define CHC_STARTSTOP BUTTON_PLAY
92#define CHC_RESET BUTTON_POWER 92#define CHC_RESET BUTTON_POWER
93#define CHC_MENU BUTTON_MENU 93#define CHC_MENU BUTTON_SELECT
94#define CHC_SETTINGS_INC BUTTON_RIGHT 94#define CHC_SETTINGS_INC BUTTON_RIGHT
95#define CHC_SETTINGS_DEC BUTTON_LEFT 95#define CHC_SETTINGS_DEC BUTTON_LEFT
96#define CHC_SETTINGS_OK BUTTON_MENU 96#define CHC_SETTINGS_OK BUTTON_SELECT
97#define CHC_SETTINGS_CANCEL BUTTON_REC 97#define CHC_SETTINGS_CANCEL BUTTON_REC
98 98
99#endif 99#endif
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index 66a2bfd70e..1be48823ed 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -988,7 +988,7 @@ STATIC void chip8 (void)
988#define CHIP8_OFF BUTTON_POWER 988#define CHIP8_OFF BUTTON_POWER
989#define CHIP8_KEY2 BUTTON_UP 989#define CHIP8_KEY2 BUTTON_UP
990#define CHIP8_KEY4 BUTTON_LEFT 990#define CHIP8_KEY4 BUTTON_LEFT
991#define CHIP8_KEY5 BUTTON_MENU 991#define CHIP8_KEY5 BUTTON_SELECT
992#define CHIP8_KEY6 BUTTON_RIGHT 992#define CHIP8_KEY6 BUTTON_RIGHT
993#define CHIP8_KEY8 BUTTON_DOWN 993#define CHIP8_KEY8 BUTTON_DOWN
994 994
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index d37eb41c09..63dcce4c33 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -115,7 +115,7 @@ PLUGIN_HEADER
115#define CUBE_Y_DEC BUTTON_DOWN 115#define CUBE_Y_DEC BUTTON_DOWN
116#define CUBE_Z_INC (BUTTON_PLAY | BUTTON_UP) 116#define CUBE_Z_INC (BUTTON_PLAY | BUTTON_UP)
117#define CUBE_Z_DEC (BUTTON_PLAY | BUTTON_DOWN) 117#define CUBE_Z_DEC (BUTTON_PLAY | BUTTON_DOWN)
118#define CUBE_MODE BUTTON_MENU 118#define CUBE_MODE BUTTON_SELECT
119#define CUBE_PAUSE_PRE BUTTON_PLAY 119#define CUBE_PAUSE_PRE BUTTON_PLAY
120#define CUBE_PAUSE (BUTTON_PLAY | BUTTON_REL) 120#define CUBE_PAUSE (BUTTON_PLAY | BUTTON_REL)
121#define CUBE_HIGHSPEED (BUTTON_REC | BUTTON_REL) 121#define CUBE_HIGHSPEED (BUTTON_REC | BUTTON_REL)
diff --git a/apps/plugins/databox/databox.c b/apps/plugins/databox/databox.c
index 996134d37d..d7e6f28ccb 100644
--- a/apps/plugins/databox/databox.c
+++ b/apps/plugins/databox/databox.c
@@ -41,7 +41,7 @@ PLUGIN_HEADER
41#define DBX_SELECT BUTTON_SELECT 41#define DBX_SELECT BUTTON_SELECT
42#define DBX_STOP BUTTON_PLAY 42#define DBX_STOP BUTTON_PLAY
43#elif CONFIG_KEYPAD == IAUDIO_X5_PAD 43#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
44#define DBX_SELECT BUTTON_MENU 44#define DBX_SELECT BUTTON_SELECT
45#define DBX_STOP BUTTON_PLAY 45#define DBX_STOP BUTTON_PLAY
46#endif 46#endif
47 47
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index 13efac18a1..4b7ef42376 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -71,8 +71,8 @@ PLUGIN_HEADER
71#define FLIPIT_SHUFFLE (BUTTON_PLAY | BUTTON_LEFT) 71#define FLIPIT_SHUFFLE (BUTTON_PLAY | BUTTON_LEFT)
72#define FLIPIT_SOLVE (BUTTON_PLAY | BUTTON_RIGHT) 72#define FLIPIT_SOLVE (BUTTON_PLAY | BUTTON_RIGHT)
73#define FLIPIT_STEP_BY_STEP (BUTTON_PLAY | BUTTON_UP) 73#define FLIPIT_STEP_BY_STEP (BUTTON_PLAY | BUTTON_UP)
74#define FLIPIT_TOGGLE_PRE BUTTON_MENU 74#define FLIPIT_TOGGLE_PRE BUTTON_SELECT
75#define FLIPIT_TOGGLE (BUTTON_MENU | BUTTON_REL) 75#define FLIPIT_TOGGLE (BUTTON_SELECT | BUTTON_REL)
76 76
77#endif 77#endif
78 78
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index eb44e4bd81..9e4ab66cbf 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -73,7 +73,7 @@ PLUGIN_HEADER
73#define BEJEWELED_DOWN BUTTON_DOWN 73#define BEJEWELED_DOWN BUTTON_DOWN
74#define BEJEWELED_LEFT BUTTON_LEFT 74#define BEJEWELED_LEFT BUTTON_LEFT
75#define BEJEWELED_RIGHT BUTTON_RIGHT 75#define BEJEWELED_RIGHT BUTTON_RIGHT
76#define BEJEWELED_SELECT BUTTON_MENU 76#define BEJEWELED_SELECT BUTTON_SELECT
77#define BEJEWELED_CANCEL BUTTON_PLAY 77#define BEJEWELED_CANCEL BUTTON_PLAY
78 78
79#else 79#else
diff --git a/apps/plugins/jpeg.c b/apps/plugins/jpeg.c
index d574bdada8..ecd42b6234 100644
--- a/apps/plugins/jpeg.c
+++ b/apps/plugins/jpeg.c
@@ -86,9 +86,9 @@ PLUGIN_HEADER
86#define JPEG_PREVIOUS (BUTTON_SELECT |BUTTON_LEFT) 86#define JPEG_PREVIOUS (BUTTON_SELECT |BUTTON_LEFT)
87 87
88#elif CONFIG_KEYPAD == IAUDIO_X5_PAD 88#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
89#define JPEG_ZOOM_IN_PRE BUTTON_MENU 89#define JPEG_ZOOM_IN_PRE BUTTON_SELECT
90#define JPEG_ZOOM_IN (BUTTON_MENU | BUTTON_REL) 90#define JPEG_ZOOM_IN (BUTTON_SELECT | BUTTON_REL)
91#define JPEG_ZOOM_OUT (BUTTON_MENU | BUTTON_REPEAT) 91#define JPEG_ZOOM_OUT (BUTTON_SELECT | BUTTON_REPEAT)
92#define JPEG_UP BUTTON_UP 92#define JPEG_UP BUTTON_UP
93#define JPEG_DOWN BUTTON_DOWN 93#define JPEG_DOWN BUTTON_DOWN
94#define JPEG_LEFT BUTTON_LEFT 94#define JPEG_LEFT BUTTON_LEFT
diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c
index 7fa00ee3b8..1a16e5d2a3 100644
--- a/apps/plugins/logo.c
+++ b/apps/plugins/logo.c
@@ -196,13 +196,7 @@ const unsigned char rockbox16x7[] = {
196#define LP_DEC_Y BUTTON_DOWN 196#define LP_DEC_Y BUTTON_DOWN
197#define LP_INC_Y BUTTON_UP 197#define LP_INC_Y BUTTON_UP
198#elif CONFIG_KEYPAD == IAUDIO_X5_PAD 198#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
199#define LP_QUIT BUTTON_MENU 199#define LP_QUIT BUTTON_SELECT
200#define LP_DEC_X BUTTON_LEFT
201#define LP_INC_X BUTTON_RIGHT
202#define LP_DEC_Y BUTTON_DOWN
203#define LP_INC_Y BUTTON_UP
204#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
205#define LP_QUIT BUTTON_MENU
206#define LP_DEC_X BUTTON_LEFT 200#define LP_DEC_X BUTTON_LEFT
207#define LP_INC_X BUTTON_RIGHT 201#define LP_INC_X BUTTON_RIGHT
208#define LP_DEC_Y BUTTON_DOWN 202#define LP_DEC_Y BUTTON_DOWN
diff --git a/apps/plugins/mandelbrot.c b/apps/plugins/mandelbrot.c
index db478d5e25..4054ef35d9 100644
--- a/apps/plugins/mandelbrot.c
+++ b/apps/plugins/mandelbrot.c
@@ -84,9 +84,9 @@ PLUGIN_HEADER
84#define MANDELBROT_DOWN BUTTON_DOWN 84#define MANDELBROT_DOWN BUTTON_DOWN
85#define MANDELBROT_LEFT BUTTON_LEFT 85#define MANDELBROT_LEFT BUTTON_LEFT
86#define MANDELBROT_RIGHT BUTTON_RIGHT 86#define MANDELBROT_RIGHT BUTTON_RIGHT
87#define MANDELBROT_ZOOM_IN_PRE BUTTON_MENU 87#define MANDELBROT_ZOOM_IN_PRE BUTTON_SELECT
88#define MANDELBROT_ZOOM_IN (BUTTON_MENU | BUTTON_REL) 88#define MANDELBROT_ZOOM_IN (BUTTON_SELECT | BUTTON_REL)
89#define MANDELBROT_ZOOM_OUT (BUTTON_MENU | BUTTON_REPEAT) 89#define MANDELBROT_ZOOM_OUT (BUTTON_SELECT | BUTTON_REPEAT)
90#define MANDELBROT_MAXITER_INC (BUTTON_PLAY | BUTTON_RIGHT) 90#define MANDELBROT_MAXITER_INC (BUTTON_PLAY | BUTTON_RIGHT)
91#define MANDELBROT_MAXITER_DEC (BUTTON_PLAY | BUTTON_LEFT) 91#define MANDELBROT_MAXITER_DEC (BUTTON_PLAY | BUTTON_LEFT)
92#define MANDELBROT_RESET BUTTON_REC 92#define MANDELBROT_RESET BUTTON_REC
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index b6a6172f51..149bf92ed6 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -86,7 +86,7 @@ PLUGIN_HEADER
86#define MINESWP_QUIT BUTTON_POWER 86#define MINESWP_QUIT BUTTON_POWER
87#define MINESWP_START BUTTON_REC 87#define MINESWP_START BUTTON_REC
88#define MINESWP_TOGGLE BUTTON_PLAY 88#define MINESWP_TOGGLE BUTTON_PLAY
89#define MINESWP_DISCOVER BUTTON_MENU 89#define MINESWP_DISCOVER BUTTON_SELECT
90#define MINESWP_INFO (BUTTON_REC | BUTTON_PLAY) 90#define MINESWP_INFO (BUTTON_REC | BUTTON_PLAY)
91 91
92#endif 92#endif
diff --git a/apps/plugins/mosaique.c b/apps/plugins/mosaique.c
index 56c6a18921..12f35e40c8 100644
--- a/apps/plugins/mosaique.c
+++ b/apps/plugins/mosaique.c
@@ -65,7 +65,7 @@ PLUGIN_HEADER
65 65
66#elif CONFIG_KEYPAD == IAUDIO_X5_PAD 66#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
67#define MOSAIQUE_QUIT BUTTON_POWER 67#define MOSAIQUE_QUIT BUTTON_POWER
68#define MOSAIQUE_SPEED BUTTON_MENU 68#define MOSAIQUE_SPEED BUTTON_SELECT
69#define MOSAIQUE_RESTART BUTTON_PLAY 69#define MOSAIQUE_RESTART BUTTON_PLAY
70 70
71#endif 71#endif
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index 6e3a6e375e..d1a967b1a3 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -1889,7 +1889,7 @@ char *get_mp3_filename(char *wav_name)
1889#define MP3ENC_PREV BUTTON_UP 1889#define MP3ENC_PREV BUTTON_UP
1890#define MP3ENC_NEXT BUTTON_DOWN 1890#define MP3ENC_NEXT BUTTON_DOWN
1891#define MP3ENC_DONE BUTTON_POWER 1891#define MP3ENC_DONE BUTTON_POWER
1892#define MP3ENC_SELECT BUTTON_MENU 1892#define MP3ENC_SELECT BUTTON_SELECT
1893#endif 1893#endif
1894 1894
1895enum plugin_status plugin_start(struct plugin_api* api, void* parameter) 1895enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
diff --git a/apps/plugins/plasma.c b/apps/plugins/plasma.c
index 71039f8bb2..83aef91890 100644
--- a/apps/plugins/plasma.c
+++ b/apps/plugins/plasma.c
@@ -55,6 +55,10 @@ static int plasma_frequency;
55#define PLASMA_QUIT BUTTON_MENU 55#define PLASMA_QUIT BUTTON_MENU
56#define PLASMA_INCREASE_FREQUENCY BUTTON_SCROLL_FWD 56#define PLASMA_INCREASE_FREQUENCY BUTTON_SCROLL_FWD
57#define PLASMA_DECREASE_FREQUENCY BUTTON_SCROLL_BACK 57#define PLASMA_DECREASE_FREQUENCY BUTTON_SCROLL_BACK
58#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD)
59#define PLASMA_QUIT BUTTON_REC
60#define PLASMA_INCREASE_FREQUENCY BUTTON_UP
61#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN
58#else 62#else
59#define PLASMA_QUIT BUTTON_OFF 63#define PLASMA_QUIT BUTTON_OFF
60#define PLASMA_INCREASE_FREQUENCY BUTTON_UP 64#define PLASMA_INCREASE_FREQUENCY BUTTON_UP
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index 6093da0f7e..23b60734df 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -111,7 +111,7 @@ PLUGIN_HEADER
111#define SNAKE2_LEVEL_DOWN BUTTON_PLAY 111#define SNAKE2_LEVEL_DOWN BUTTON_PLAY
112#define SNAKE2_SELECT_MAZE BUTTON_LEFT 112#define SNAKE2_SELECT_MAZE BUTTON_LEFT
113#define SNAKE2_SELECT_TYPE BUTTON_RIGHT 113#define SNAKE2_SELECT_TYPE BUTTON_RIGHT
114#define SNAKE2_PLAYPAUSE BUTTON_MENU 114#define SNAKE2_PLAYPAUSE BUTTON_SELECT
115 115
116#else 116#else
117#error "lacks keymapping" 117#error "lacks keymapping"
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index 31b74ec2a2..73b014f457 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -80,8 +80,8 @@ PLUGIN_HEADER
80#define SOKOBAN_UP BUTTON_UP 80#define SOKOBAN_UP BUTTON_UP
81#define SOKOBAN_DOWN BUTTON_DOWN 81#define SOKOBAN_DOWN BUTTON_DOWN
82#define SOKOBAN_QUIT BUTTON_POWER 82#define SOKOBAN_QUIT BUTTON_POWER
83#define SOKOBAN_UNDO_PRE BUTTON_MENU 83#define SOKOBAN_UNDO_PRE BUTTON_SELECT
84#define SOKOBAN_UNDO (BUTTON_MENU | BUTTON_REL) 84#define SOKOBAN_UNDO (BUTTON_SELECT | BUTTON_REL)
85#define SOKOBAN_LEVEL_UP (BUTTON_PLAY | BUTTON_UP) 85#define SOKOBAN_LEVEL_UP (BUTTON_PLAY | BUTTON_UP)
86#define SOKOBAN_LEVEL_DOWN (BUTTON_PLAY | BUTTON_DOWN) 86#define SOKOBAN_LEVEL_DOWN (BUTTON_PLAY | BUTTON_DOWN)
87#define SOKOBAN_LEVEL_REPEAT BUTTON_REC 87#define SOKOBAN_LEVEL_REPEAT BUTTON_REC
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index 83f203c4aa..9dc6c52b62 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -129,12 +129,12 @@ static struct plugin_api* rb;
129#define SOL_DOWN BUTTON_DOWN 129#define SOL_DOWN BUTTON_DOWN
130#define SOL_LEFT BUTTON_LEFT 130#define SOL_LEFT BUTTON_LEFT
131#define SOL_RIGHT BUTTON_RIGHT 131#define SOL_RIGHT BUTTON_RIGHT
132#define SOL_MOVE BUTTON_MENU 132#define SOL_MOVE BUTTON_SELECT
133#define SOL_DRAW BUTTON_PLAY 133#define SOL_DRAW BUTTON_PLAY
134#define SOL_REM2CUR (BUTTON_REC | BUTTON_LEFT) 134#define SOL_REM2CUR (BUTTON_REC | BUTTON_LEFT)
135#define SOL_CUR2STACK (BUTTON_REC | BUTTON_UP) 135#define SOL_CUR2STACK (BUTTON_REC | BUTTON_UP)
136#define SOL_REM2STACK (BUTTON_REC | BUTTON_DOWN) 136#define SOL_REM2STACK (BUTTON_REC | BUTTON_DOWN)
137#define SOL_MENU_RUN BUTTON_MENU 137#define SOL_MENU_RUN BUTTON_SELECT
138#define SOL_MENU_INFO BUTTON_PLAY 138#define SOL_MENU_INFO BUTTON_PLAY
139 139
140#endif 140#endif
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index ddacfbcae2..a6d30eefec 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -115,8 +115,8 @@ PLUGIN_HEADER
115#define STAR_QUIT BUTTON_POWER 115#define STAR_QUIT BUTTON_POWER
116#define STAR_UP BUTTON_UP 116#define STAR_UP BUTTON_UP
117#define STAR_DOWN BUTTON_DOWN 117#define STAR_DOWN BUTTON_DOWN
118#define STAR_TOGGLE_CONTROL_PRE BUTTON_MENU 118#define STAR_TOGGLE_CONTROL_PRE BUTTON_SELECT
119#define STAR_TOGGLE_CONTROL (BUTTON_MENU | BUTTON_REL) 119#define STAR_TOGGLE_CONTROL (BUTTON_SELECT | BUTTON_REL)
120#define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_UP) 120#define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_UP)
121#define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_DOWN) 121#define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_DOWN)
122#define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_RIGHT) 122#define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_RIGHT)
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index bccca7ea36..c5b22404ed 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -81,7 +81,7 @@ PLUGIN_HEADER
81#define STOPWATCH_QUIT BUTTON_POWER 81#define STOPWATCH_QUIT BUTTON_POWER
82#define STOPWATCH_START_STOP BUTTON_PLAY 82#define STOPWATCH_START_STOP BUTTON_PLAY
83#define STOPWATCH_RESET_TIMER BUTTON_REC 83#define STOPWATCH_RESET_TIMER BUTTON_REC
84#define STOPWATCH_LAP_TIMER BUTTON_MENU 84#define STOPWATCH_LAP_TIMER BUTTON_SELECT
85#define STOPWATCH_SCROLL_UP BUTTON_UP 85#define STOPWATCH_SCROLL_UP BUTTON_UP
86#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN 86#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
87#endif 87#endif
diff --git a/apps/plugins/sudoku.c b/apps/plugins/sudoku.c
index 767a33fec7..7894877e23 100644
--- a/apps/plugins/sudoku.c
+++ b/apps/plugins/sudoku.c
@@ -107,7 +107,7 @@ PLUGIN_HEADER
107#define SUDOKU_BUTTON_QUIT BUTTON_POWER 107#define SUDOKU_BUTTON_QUIT BUTTON_POWER
108#define SUDOKU_BUTTON_UP BUTTON_UP 108#define SUDOKU_BUTTON_UP BUTTON_UP
109#define SUDOKU_BUTTON_DOWN BUTTON_DOWN 109#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
110#define SUDOKU_BUTTON_TOGGLE BUTTON_MENU 110#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT
111#define SUDOKU_BUTTON_MENU BUTTON_PLAY 111#define SUDOKU_BUTTON_MENU BUTTON_PLAY
112#define SUDOKU_BUTTON_POSSIBLE BUTTON_REC 112#define SUDOKU_BUTTON_POSSIBLE BUTTON_REC
113 113
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c
index 7ab0d39447..8e72229c5a 100644
--- a/apps/plugins/viewer.c
+++ b/apps/plugins/viewer.c
@@ -150,7 +150,7 @@ PLUGIN_HEADER
150#define VIEWER_SCREEN_RIGHT BUTTON_RIGHT 150#define VIEWER_SCREEN_RIGHT BUTTON_RIGHT
151#define VIEWER_MODE_WRAP (BUTTON_PLAY | BUTTON_REL) 151#define VIEWER_MODE_WRAP (BUTTON_PLAY | BUTTON_REL)
152#define VIEWER_MODE_LINE (BUTTON_PLAY | BUTTON_REPEAT) 152#define VIEWER_MODE_LINE (BUTTON_PLAY | BUTTON_REPEAT)
153#define VIEWER_MODE_WIDTH BUTTON_MENU 153#define VIEWER_MODE_WIDTH BUTTON_SELECT
154 154
155#endif 155#endif
156 156
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c
index 13e7625bc4..d45717c6dd 100644
--- a/apps/recorder/keyboard.c
+++ b/apps/recorder/keyboard.c
@@ -133,8 +133,8 @@
133/* TODO: Check keyboard mappings */ 133/* TODO: Check keyboard mappings */
134 134
135#define KBD_MODES /* iAudio X5 uses 2 modes, picker and line edit */ 135#define KBD_MODES /* iAudio X5 uses 2 modes, picker and line edit */
136#define KBD_SELECT (BUTTON_MENU | BUTTON_REL) /* backspace in line edit */ 136#define KBD_SELECT (BUTTON_SELECT | BUTTON_REL) /* backspace in line edit */
137#define KBD_SELECT_PRE BUTTON_MENU 137#define KBD_SELECT_PRE BUTTON_SELECT
138#define KBD_DONE BUTTON_PLAY 138#define KBD_DONE BUTTON_PLAY
139#define KBD_ABORT BUTTON_REC 139#define KBD_ABORT BUTTON_REC
140#define KBD_LEFT BUTTON_LEFT 140#define KBD_LEFT BUTTON_LEFT
diff --git a/apps/settings.h b/apps/settings.h
index 9220f79595..c7f70c3a19 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -113,7 +113,7 @@
113#elif CONFIG_KEYPAD == IAUDIO_X5_PAD 113#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
114#define SETTINGS_INC BUTTON_UP 114#define SETTINGS_INC BUTTON_UP
115#define SETTINGS_DEC BUTTON_DOWN 115#define SETTINGS_DEC BUTTON_DOWN
116#define SETTINGS_OK BUTTON_MENU 116#define SETTINGS_OK BUTTON_SELECT
117#define SETTINGS_CANCEL BUTTON_REC 117#define SETTINGS_CANCEL BUTTON_REC
118#define SETTINGS_PREV BUTTON_LEFT 118#define SETTINGS_PREV BUTTON_LEFT
119#define SETTINGS_NEXT BUTTON_RIGHT 119#define SETTINGS_NEXT BUTTON_RIGHT
diff --git a/apps/tree.h b/apps/tree.h
index d1b57d6991..92a2fcf770 100644
--- a/apps/tree.h
+++ b/apps/tree.h
@@ -149,11 +149,11 @@
149#define TREE_ABORT BUTTON_PLAY 149#define TREE_ABORT BUTTON_PLAY
150#define TREE_RUN (BUTTON_RIGHT | BUTTON_REL) 150#define TREE_RUN (BUTTON_RIGHT | BUTTON_REL)
151#define TREE_RUN_PRE BUTTON_RIGHT 151#define TREE_RUN_PRE BUTTON_RIGHT
152#define TREE_MENU (BUTTON_MENU | BUTTON_REPEAT) 152#define TREE_MENU (BUTTON_REC | BUTTON_REPEAT)
153#define TREE_MENU_PRE BUTTON_MENU 153#define TREE_MENU_PRE BUTTON_REC
154#define TREE_WPS (BUTTON_MENU | BUTTON_REL) 154#define TREE_WPS (BUTTON_REC | BUTTON_REL)
155#define TREE_WPS_PRE BUTTON_MENU 155#define TREE_WPS_PRE BUTTON_REC
156#define TREE_CONTEXT (BUTTON_RIGHT | BUTTON_REPEAT) 156#define TREE_CONTEXT (BUTTON_SELECT | BUTTON_REPEAT)
157#define TREE_POWER_BTN (BUTTON_PLAY | BUTTON_REPEAT) 157#define TREE_POWER_BTN (BUTTON_PLAY | BUTTON_REPEAT)
158#endif 158#endif
159 159
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c
index 3d14eb147c..f47df82e8c 100644
--- a/firmware/drivers/button.c
+++ b/firmware/drivers/button.c
@@ -70,6 +70,9 @@ static bool flipped; /* buttons can be flipped to match the LCD flip */
70 (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) 70 (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD)
71#define POWEROFF_BUTTON BUTTON_PLAY 71#define POWEROFF_BUTTON BUTTON_PLAY
72#define POWEROFF_COUNT 40 72#define POWEROFF_COUNT 40
73#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD)
74#define POWEROFF_BUTTON BUTTON_POWER
75#define POWEROFF_COUNT 10
73#else 76#else
74#define POWEROFF_BUTTON BUTTON_OFF 77#define POWEROFF_BUTTON BUTTON_OFF
75#define POWEROFF_COUNT 10 78#define POWEROFF_COUNT 10
@@ -530,6 +533,11 @@ void button_init(void)
530 /* Set GPIO33, GPIO37, GPIO38 and GPIO52 as general purpose inputs */ 533 /* Set GPIO33, GPIO37, GPIO38 and GPIO52 as general purpose inputs */
531 GPIO1_ENABLE &= ~0x00100060; 534 GPIO1_ENABLE &= ~0x00100060;
532 GPIO1_FUNCTION |= 0x00100062; 535 GPIO1_FUNCTION |= 0x00100062;
536#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
537 /* Hold switch */
538 GPIO_FUNCTION |= 0x08000000;
539 GPIO_ENABLE &= ~0x08000000;
540
533#elif CONFIG_KEYPAD == RECORDER_PAD 541#elif CONFIG_KEYPAD == RECORDER_PAD
534 /* Set PB4 and PB8 as input pins */ 542 /* Set PB4 and PB8 as input pins */
535 PBCR1 &= 0xfffc; /* PB8MD = 00 */ 543 PBCR1 &= 0xfffc; /* PB8MD = 00 */
@@ -698,6 +706,7 @@ void button_set_flip(bool flip)
698 706
699#endif /* CONFIG_KEYPAD */ 707#endif /* CONFIG_KEYPAD */
700 708
709int counter;
701/* 710/*
702 * Get button pressed from hardware 711 * Get button pressed from hardware
703 */ 712 */
@@ -1039,6 +1048,40 @@ static int button_read(void)
1039 (void)data; 1048 (void)data;
1040 /* The int_btn variable is set in the button interrupt handler */ 1049 /* The int_btn variable is set in the button interrupt handler */
1041 btn = int_btn; 1050 btn = int_btn;
1051#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD)
1052 static bool hold_button = false;
1053 static bool remote_hold_button = false;
1054
1055 counter ++;
1056
1057 hold_button = button_hold();
1058 remote_hold_button = remote_button_hold();
1059
1060 /* normal buttons */
1061 if (!hold_button)
1062 {
1063 data = adc_scan(ADC_BUTTONS);
1064 if(data < 0x7c)
1065 if(data < 0x42)
1066 btn = BUTTON_LEFT;
1067 else
1068 if(data < 0x62)
1069 btn = BUTTON_RIGHT;
1070 else
1071 btn = BUTTON_SELECT;
1072 else
1073 if(data < 0xb6)
1074 if(data < 0x98)
1075 btn = BUTTON_PLAY;
1076 else
1077 btn = BUTTON_REC;
1078 else
1079 if(data < 0xd3)
1080 btn = BUTTON_DOWN;
1081 else
1082 if(data < 0xf0)
1083 btn = BUTTON_UP;
1084 }
1042#endif /* CONFIG_KEYPAD */ 1085#endif /* CONFIG_KEYPAD */
1043 1086
1044 1087
@@ -1100,7 +1143,7 @@ bool button_hold(void)
1100#if (CONFIG_KEYPAD == IAUDIO_X5_PAD) 1143#if (CONFIG_KEYPAD == IAUDIO_X5_PAD)
1101bool button_hold(void) 1144bool button_hold(void)
1102{ 1145{
1103 return (GPIO_READ & 0x08000000)?true:false; 1146 return (GPIO_READ & 0x08000000)?false:true;
1104} 1147}
1105 1148
1106bool remote_button_hold(void) 1149bool remote_button_hold(void)
diff --git a/firmware/export/adc.h b/firmware/export/adc.h
index 027c7154f0..454c102403 100644
--- a/firmware/export/adc.h
+++ b/firmware/export/adc.h
@@ -92,7 +92,8 @@
92unsigned short adc_read(int channel); 92unsigned short adc_read(int channel);
93void adc_init(void); 93void adc_init(void);
94 94
95#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES) 95#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES)\
96 || defined(IAUDIO_X5)
96unsigned char adc_scan(int channel); 97unsigned char adc_scan(int channel);
97#endif 98#endif
98 99
diff --git a/firmware/export/button.h b/firmware/export/button.h
index 1d6acfa275..484698e492 100644
--- a/firmware/export/button.h
+++ b/firmware/export/button.h
@@ -23,7 +23,8 @@
23#include <stdbool.h> 23#include <stdbool.h>
24#include "config.h" 24#include "config.h"
25#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ 25#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
26 (CONFIG_KEYPAD == IRIVER_H300_PAD) 26 (CONFIG_KEYPAD == IRIVER_H300_PAD) || \
27 (CONFIG_KEYPAD == IAUDIO_X5_PAD)
27#define HAS_BUTTON_HOLD 28#define HAS_BUTTON_HOLD
28#define HAS_REMOTE_BUTTON_HOLD 29#define HAS_REMOTE_BUTTON_HOLD
29#elif (CONFIG_KEYPAD == IPOD_4G_PAD) 30#elif (CONFIG_KEYPAD == IPOD_4G_PAD)
@@ -192,8 +193,7 @@ bool button_hold(void);
192#define BUTTON_POWER 0x0004 193#define BUTTON_POWER 0x0004
193#define BUTTON_UP 0x0008 194#define BUTTON_UP 0x0008
194#define BUTTON_DOWN 0x0010 195#define BUTTON_DOWN 0x0010
195#define BUTTON_MENU 0x0020 196#define BUTTON_SELECT 0x0020
196#define BUTTON_OFF 0x0040 /* DOES NOT EXIST!!! */
197 197
198#define BUTTON_RC_REC (BUTTON_REMOTE | 0x00400000) 198#define BUTTON_RC_REC (BUTTON_REMOTE | 0x00400000)
199 199