summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/battery_bench.c7
-rw-r--r--apps/plugins/blackjack.c13
-rw-r--r--apps/plugins/bounce.c7
-rw-r--r--apps/plugins/brickmania.c3
-rw-r--r--apps/plugins/bubbles.c7
-rw-r--r--apps/plugins/calculator.c11
-rw-r--r--apps/plugins/calendar.c3
-rw-r--r--apps/plugins/chessbox/chessbox_pgn.h16
-rw-r--r--apps/plugins/chessclock.c7
-rw-r--r--apps/plugins/chip8.c3
-rw-r--r--apps/plugins/chopper.c7
-rw-r--r--apps/plugins/cube.c3
-rw-r--r--apps/plugins/dict.c11
-rw-r--r--apps/plugins/doom/i_video.c19
-rw-r--r--apps/plugins/euroconverter.c1
-rw-r--r--apps/plugins/fireworks.c5
-rw-r--r--apps/plugins/flipit.c16
-rw-r--r--apps/plugins/invadrox.c3
-rw-r--r--apps/plugins/jewels.c4
-rw-r--r--apps/plugins/jpeg/jpeg.h15
-rw-r--r--apps/plugins/keybox.c2
-rw-r--r--apps/plugins/lamp.c3
-rw-r--r--apps/plugins/lib/pluginlib_actions.c23
-rw-r--r--apps/plugins/logo.c7
-rw-r--r--apps/plugins/mandelbrot.c12
-rw-r--r--apps/plugins/matrix.c6
-rw-r--r--apps/plugins/midi/midiplay.c3
-rw-r--r--apps/plugins/minesweeper.c12
-rw-r--r--apps/plugins/mosaique.c8
-rw-r--r--apps/plugins/mp3_encoder.c8
-rw-r--r--apps/plugins/mpegplayer/mpeg_settings.c3
-rw-r--r--apps/plugins/mpegplayer/mpegplayer.c3
-rw-r--r--apps/plugins/nim.c1
-rw-r--r--apps/plugins/oscilloscope.c11
-rw-r--r--apps/plugins/pacbox/pacbox.h11
-rw-r--r--apps/plugins/pegbox.c20
-rw-r--r--apps/plugins/plasma.c13
-rw-r--r--apps/plugins/pong.c5
-rw-r--r--apps/plugins/reversi/reversi-gui.h3
-rw-r--r--apps/plugins/robotfindskitten.c12
-rw-r--r--apps/plugins/rockblox.c21
-rw-r--r--apps/plugins/rockblox1d.c10
-rw-r--r--apps/plugins/rockboy/rockboy.c12
-rw-r--r--apps/plugins/rockpaint.c14
-rw-r--r--apps/plugins/sliding_puzzle.c11
-rw-r--r--apps/plugins/snake.c7
-rw-r--r--apps/plugins/snake2.c14
-rw-r--r--apps/plugins/snow.c3
-rw-r--r--apps/plugins/sokoban.c16
-rw-r--r--apps/plugins/solitaire.c22
-rw-r--r--apps/plugins/spacerocks.c13
-rw-r--r--apps/plugins/star.c15
-rw-r--r--apps/plugins/starfield.c3
-rw-r--r--apps/plugins/stats.c6
-rw-r--r--apps/plugins/stopwatch.c11
-rw-r--r--apps/plugins/sudoku/sudoku.h11
-rw-r--r--apps/plugins/superdom.c3
-rw-r--r--apps/plugins/test_scanrate.c3
-rw-r--r--apps/plugins/viewer.c12
-rw-r--r--apps/plugins/vu_meter.c15
-rw-r--r--apps/plugins/wormlet.c3
-rw-r--r--apps/plugins/xobox.c3
-rw-r--r--apps/plugins/zxbox/keymaps.h7
-rw-r--r--apps/plugins/zxbox/zxbox_keyb.c1
-rwxr-xr-xtools/configure2
65 files changed, 476 insertions, 89 deletions
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index 6559f535af..7c18dc74dd 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -98,9 +98,10 @@ PLUGIN_HEADER
#define BATTERY_OFF_TXT "PLAY"
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD) || \
-(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+ (CONFIG_KEYPAD == SANSA_C200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_M200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define BATTERY_ON BUTTON_SELECT
#define BATTERY_OFF BUTTON_POWER
#define BATTERY_ON_TXT "SELECT - start"
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index 237bd31abd..2aed40fd9e 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -160,16 +160,17 @@ PLUGIN_HEADER
#define BJACK_RIGHT BUTTON_RIGHT
#define BJACK_LEFT BUTTON_LEFT
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif CONFIG_KEYPAD == SANSA_E200_PAD || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define BJACK_START BUTTON_SELECT
#define BJACK_QUIT BUTTON_POWER
-#define BJACK_MAX (BUTTON_REC|BUTTON_UP)
-#define BJACK_MIN (BUTTON_REC|BUTTON_DOWN)
-#define BJACK_HIT BUTTON_SELECT
+#define BJACK_MAX (BUTTON_SELECT|BUTTON_UP)
+#define BJACK_MIN (BUTTON_SELECT|BUTTON_DOWN)
+#define BJACK_HIT (BUTTON_SELECT|BUTTON_REL)
#define BJACK_STAY BUTTON_RIGHT
#define BJACK_DOUBLEDOWN BUTTON_LEFT
-#define BJACK_SCORES BUTTON_UP
-#define BJACK_RESUME BUTTON_REC
+#define BJACK_SCORES BUTTON_DOWN
+#define BJACK_RESUME BUTTON_UP
#define BJACK_UP BUTTON_SCROLL_FWD
#define BJACK_DOWN BUTTON_SCROLL_BACK
#define BJACK_RIGHT BUTTON_RIGHT
diff --git a/apps/plugins/bounce.c b/apps/plugins/bounce.c
index 54b6714990..755f7f7338 100644
--- a/apps/plugins/bounce.c
+++ b/apps/plugins/bounce.c
@@ -92,7 +92,8 @@ PLUGIN_HEADER
#define BOUNCE_QUIT BUTTON_POWER
#define BOUNCE_MODE BUTTON_A
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define BOUNCE_LEFT BUTTON_LEFT
#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_SCROLL_BACK
@@ -101,8 +102,8 @@ PLUGIN_HEADER
#define BOUNCE_MODE BUTTON_SELECT
#elif CONFIG_KEYPAD == SANSA_C200_PAD || \
-CONFIG_KEYPAD == SANSA_CLIP_PAD || \
-CONFIG_KEYPAD == SANSA_M200_PAD
+ CONFIG_KEYPAD == SANSA_CLIP_PAD || \
+ CONFIG_KEYPAD == SANSA_M200_PAD
#define BOUNCE_LEFT BUTTON_LEFT
#define BOUNCE_RIGHT BUTTON_RIGHT
#define BOUNCE_UP BUTTON_UP
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index f9e071aaae..35823b6b99 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -103,7 +103,8 @@ PLUGIN_HEADER
#define DOWN BUTTON_DOWN
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define QUIT BUTTON_POWER
#define LEFT BUTTON_LEFT
diff --git a/apps/plugins/bubbles.c b/apps/plugins/bubbles.c
index ecd9096870..0894c75d4a 100644
--- a/apps/plugins/bubbles.c
+++ b/apps/plugins/bubbles.c
@@ -59,8 +59,11 @@ PLUGIN_HEADER
#define MAX_SHOTTIME 1000
/* keyboard layouts */
-#if CONFIG_KEYPAD != SANSA_E200_PAD
-/* sansa uses the wheel instead of left/right */
+/* FIXME: shouldn't the below be #ifdef HAVE_SCROLLWHEEL rather? */
+
+#if (CONFIG_KEYPAD != SANSA_E200_PAD) && \
+ (CONFIG_KEYPAD != SANSA_FUZE_PAD)
+/* sansas use the wheel instead of left/right if available */
#define BUBBLES_LEFT PLA_LEFT
#define BUBBLES_LEFT_REP PLA_LEFT_REPEAT
#define BUBBLES_RIGHT PLA_RIGHT
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index 214932e0a9..7e6eb92b0e 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -193,12 +193,13 @@ PLUGIN_HEADER
#define CALCULATOR_CLEAR BUTTON_A
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD)
+ (CONFIG_KEYPAD == SANSA_C200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define CALCULATOR_LEFT BUTTON_LEFT
#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
-#if CONFIG_KEYPAD == SANSA_E200_PAD
+#if defined(HAVE_SCROLLWHEEL)
/* c200 does not have a scroll wheel */
#define CALCULATOR_UP_W_SHIFT BUTTON_SCROLL_BACK
#define CALCULATOR_DOWN_W_SHIFT BUTTON_SCROLL_FWD
@@ -207,7 +208,13 @@ PLUGIN_HEADER
#define CALCULATOR_INPUT_CALC_PRE BUTTON_SELECT
#define CALCULATOR_INPUT (BUTTON_SELECT|BUTTON_REL)
#define CALCULATOR_CALC (BUTTON_SELECT|BUTTON_REPEAT)
+#if (CONFIG_KEYPAD == SANSA_E200_PAD)
#define CALCULATOR_CLEAR BUTTON_REC
+/* FIXME: define as soon as HOME works
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+#define CALCULATOR_CLEAR BUTTON_HOME */
+#endif
+
#elif (CONFIG_KEYPAD == SANSA_CLIP_PAD)
#define CALCULATOR_LEFT BUTTON_LEFT
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c
index 55771de919..866adceaee 100644
--- a/apps/plugins/calendar.c
+++ b/apps/plugins/calendar.c
@@ -90,7 +90,8 @@ PLUGIN_HEADER
#define CALENDAR_NEXT_MONTH BUTTON_VOL_DOWN
#define CALENDAR_PREV_MONTH BUTTON_VOL_UP
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif CONFIG_KEYPAD == SANSA_E200_PAD || \
+ CONFIG_KEYPAD == SANSA_FUZE_PAD
#define CALENDAR_QUIT BUTTON_POWER
#define CALENDAR_SELECT BUTTON_SELECT
#define CALENDAR_NEXT_WEEK BUTTON_SCROLL_FWD
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h
index 970bcc466a..351a32ac57 100644
--- a/apps/plugins/chessbox/chessbox_pgn.h
+++ b/apps/plugins/chessbox/chessbox_pgn.h
@@ -201,6 +201,22 @@
#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
+#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
+#define CB_SELECT BUTTON_SELECT
+#define CB_UP BUTTON_UP
+#define CB_DOWN BUTTON_DOWN
+#define CB_LEFT BUTTON_LEFT
+#define CB_RIGHT BUTTON_RIGHT
+#define CB_PLAY (BUTTON_SELECT | BUTTON_RIGHT)
+#define CB_LEVEL (BUTTON_SELECT|BUTTON_LEFT)
+#define CB_RESTART (BUTTON_SELECT | BUTTON_REPEAT)
+#define CB_MENU BUTTON_POWER
+
+#define CB_SCROLL_UP (BUTTON_SCROLL_UP|BUTTON_REPEAT)
+#define CB_SCROLL_DOWN (BUTTON_SCROLL_DOWN|BUTTON_REPEAT)
+#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
+#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
+
#elif CONFIG_KEYPAD == SANSA_CLIP_PAD
#define CB_SELECT BUTTON_SELECT
#define CB_UP BUTTON_UP
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index 725a5cd037..86bcce01db 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -122,9 +122,10 @@ PLUGIN_HEADER
#define CHC_SETTINGS_CANCEL BUTTON_POWER
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD) || \
-(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+ (CONFIG_KEYPAD == SANSA_C200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_M200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define CHC_QUIT BUTTON_POWER
#define CHC_STARTSTOP BUTTON_SELECT
#define CHC_RESET BUTTON_DOWN
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index 29262e481a..ceab1431dd 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1022,7 +1022,8 @@ STATIC void chip8 (void)
#define CHIP8_KEY8 BUTTON_DOWN
#define CHIP8_KEY9 BUTTON_A
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif CONFIG_KEYPAD == SANSA_E200_PAD || \
+ CONFIG_KEYPAD == SANSA_FUZE_PAD
#define CHIP8_OFF BUTTON_POWER
#define CHIP8_KEY2 BUTTON_SCROLL_BACK
#define CHIP8_KEY4 BUTTON_LEFT
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index f30aed4aa5..5c82b1eeea 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -67,9 +67,10 @@ Still To do:
#define ACTIONTEXT "RIGHT"
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD) || \
-(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+ (CONFIG_KEYPAD == SANSA_C200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_M200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define QUIT BUTTON_POWER
#define ACTION BUTTON_SELECT
#define ACTIONTEXT "SELECT"
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index 7c651fca8c..d43f06f4b8 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -130,7 +130,8 @@ PLUGIN_HEADER
#define CUBE_PAUSE BUTTON_SELECT
#define CUBE_HIGHSPEED BUTTON_A
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define CUBE_QUIT BUTTON_POWER
#define CUBE_NEXT BUTTON_RIGHT
#define CUBE_PREV BUTTON_LEFT
diff --git a/apps/plugins/dict.c b/apps/plugins/dict.c
index e263afebb2..7e176e67a5 100644
--- a/apps/plugins/dict.c
+++ b/apps/plugins/dict.c
@@ -104,6 +104,7 @@ long reverse (long N) {
}
#endif
+/* TODO: Clean up, most use BUTTON_POWER, could be the #else case */
/* Button definitions */
#if CONFIG_KEYPAD == PLAYER_PAD
#define LP_QUIT BUTTON_STOP
@@ -118,9 +119,12 @@ long reverse (long N) {
#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define LP_QUIT BUTTON_POWER
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD) || \
-(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+ (CONFIG_KEYPAD == SANSA_C200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_M200_PAD)
+#define LP_QUIT BUTTON_POWER
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+/* TODO: #define LP_QUIT BUTTOM_HOME */
#define LP_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define LP_QUIT BUTTON_POWER
@@ -143,6 +147,7 @@ long reverse (long N) {
#endif
/* data files */
+/* FIXME: use "PLUGIN_APPS_DIR" */
#define DICT_INDEX ROCKBOX_DIR "/rocks/apps/dict.index"
#define DICT_DESC ROCKBOX_DIR "/rocks/apps/dict.desc"
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index 3e41cab460..1d533d40ec 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -193,6 +193,19 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_ESC BUTTON_POWER
#define DOOMBUTTON_ENTER BUTTON_SELECT
#define DOOMBUTTON_WEAPON DOOMBUTTON_SCROLLWHEEL_CW
+#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
+#define DOOMBUTTON_SCROLLWHEEL
+#define DOOMBUTTON_SCROLLWHEEL_CC BUTTON_SCROLL_BACK
+#define DOOMBUTTON_SCROLLWHEEL_CW BUTTON_SCROLL_FWD
+#define DOOMBUTTON_UP BUTTON_UP
+#define DOOMBUTTON_DOWN BUTTON_DOWN
+#define DOOMBUTTON_LEFT BUTTON_LEFT
+#define DOOMBUTTON_RIGHT BUTTON_RIGHT
+#define DOOMBUTTON_SHOOT BUTTON_SELECT
+#define DOOMBUTTON_OPEN BUTTON_HOME
+#define DOOMBUTTON_ESC BUTTON_POWER
+#define DOOMBUTTON_ENTER BUTTON_SELECT
+#define DOOMBUTTON_WEAPON DOOMBUTTON_SCROLLWHEEL_CW
#elif CONFIG_KEYPAD == SANSA_C200_PAD
#define DOOMBUTTON_UP BUTTON_UP
#define DOOMBUTTON_DOWN BUTTON_DOWN
@@ -628,11 +641,11 @@ void I_FinishUpdate (void)
/* ASM screen update (drops ~230 tics) */
asm volatile (
"clr.w (%[LCD]) \n" /* Setup the LCD controller */
- "move.w #(33<<1), (%[LCD]) \n"
+ "move.w #(33<<1), (%[LCD]) \n"
"clr.w (%[LCD2]) \n"
"clr.w (%[LCD2]) \n"
"clr.w (%[LCD]) \n" /* End LCD controller setup */
- "move.w #(34<<1), (%[LCD]) \n"
+ "move.w #(34<<1), (%[LCD]) \n"
"clr.l %%d1 \n"
".loop: \n"
"move.l (%[scrp])+, %%d0 \n"
@@ -686,7 +699,7 @@ void I_FinishUpdate (void)
if(rotate_screen)
{
int y;
-
+
for (y = 1; y <= SCREENHEIGHT; y++)
{
fb_data *dst = rb->lcd_framebuffer + LCD_WIDTH - y;
diff --git a/apps/plugins/euroconverter.c b/apps/plugins/euroconverter.c
index 02617abc39..827c7db586 100644
--- a/apps/plugins/euroconverter.c
+++ b/apps/plugins/euroconverter.c
@@ -21,6 +21,7 @@
#include "plugin.h"
#include "lib/configfile.h"
+/* FIXME: Only for LCD_CHARCELL ?? */
#ifdef HAVE_LCD_CHARCELLS
/* Euro converter for the player */
diff --git a/apps/plugins/fireworks.c b/apps/plugins/fireworks.c
index eee72906a4..64b30dc36e 100644
--- a/apps/plugins/fireworks.c
+++ b/apps/plugins/fireworks.c
@@ -62,9 +62,12 @@ static const struct plugin_api* rb;
#define BTN_MENU BUTTON_MENU
#define BTN_FIRE BUTTON_SELECT
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD)
+ (CONFIG_KEYPAD == SANSA_C200_PAD)
#define BTN_MENU BUTTON_POWER
#define BTN_FIRE BUTTON_SELECT
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+#define BTN_MENU BUTTON_DOWN
+#define BTN_FIRE BUTTON_SELECT
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define BTN_MENU BUTTON_POWER
#define BTN_FIRE BUTTON_PLAY
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index e5863bd4b1..f4725e4fa0 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -143,6 +143,22 @@ PLUGIN_HEADER
#define FLIPIT_STEP_BY_STEP (BUTTON_REC | BUTTON_SELECT)
#define FLIPIT_TOGGLE BUTTON_SELECT
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+
+#define FLIPIT_SCROLLWHEEL
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
+#define FLIPIT_UP BUTTON_UP
+#define FLIPIT_DOWN BUTTON_DOWN
+#define FLIPIT_NEXT BUTTON_SCROLL_FWD
+#define FLIPIT_PREV BUTTON_SCROLL_BACK
+#define FLIPIT_QUIT (BUTTON_SELECT | BUTTON_UP)
+#define FLIPIT_SHUFFLE (BUTTON_SELECT | BUTTON_LEFT)
+#define FLIPIT_SOLVE (BUTTON_SELECT | BUTTON_DOWN)
+#define FLIPIT_STEP_BY_STEP (BUTTON_SELECT | BUTTON_RIGHT)
+#define FLIPIT_TOGGLE_PRE BUTTON_SELECT
+#define FLIPIT_TOGGLE (BUTTON_SELECT | BUTTON_REL)
+
#elif CONFIG_KEYPAD == SANSA_C200_PAD
#define FLIPIT_LEFT BUTTON_LEFT
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c
index ae89985f91..0d50c67e73 100644
--- a/apps/plugins/invadrox.c
+++ b/apps/plugins/invadrox.c
@@ -93,7 +93,8 @@ PLUGIN_HEADER
#define RIGHT BUTTON_RIGHT
#define FIRE BUTTON_SELECT
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif CONFIG_KEYPAD == SANSA_E200_PAD || \
+ CONFIG_KEYPAD == SANSA_FUZE_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_LEFT
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index 8c53ddcaab..645135a918 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -97,7 +97,8 @@ PLUGIN_HEADER
#define JEWELS_SELECT BUTTON_SELECT
#define JEWELS_CANCEL BUTTON_POWER
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif CONFIG_KEYPAD == SANSA_E200_PAD || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define JEWELS_SCROLLWHEEL
#define JEWELS_UP BUTTON_UP
#define JEWELS_DOWN BUTTON_DOWN
@@ -1585,6 +1586,7 @@ static int jewels_main(struct game_context* bj) {
#elif CONFIG_KEYPAD == SANSA_E200_PAD \
|| CONFIG_KEYPAD == SANSA_C200_PAD \
|| CONFIG_KEYPAD == SANSA_CLIP_PAD \
+ || CONFIG_KEYPAD == SANSA_FUZE_PAD \
|| CONFIG_KEYPAD == SANSA_M200_PAD
rb->lcd_puts(0, 2, "Swap pairs of jewels to");
rb->lcd_puts(0, 3, "form connected segments");
diff --git a/apps/plugins/jpeg/jpeg.h b/apps/plugins/jpeg/jpeg.h
index 23347b9e2a..ee93694955 100644
--- a/apps/plugins/jpeg/jpeg.h
+++ b/apps/plugins/jpeg/jpeg.h
@@ -133,6 +133,21 @@
#define JPEG_PREVIOUS BUTTON_SCROLL_BACK
#define JPEG_PREVIOUS_REPEAT (BUTTON_SCROLL_BACK|BUTTON_REPEAT)
+#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
+#define JPEG_ZOOM_PRE BUTTON_SELECT
+#define JPEG_ZOOM_IN (BUTTON_SELECT | BUTTON_REL)
+#define JPEG_ZOOM_OUT (BUTTON_SELECT | BUTTON_REPEAT)
+#define JPEG_UP BUTTON_UP
+#define JPEG_DOWN BUTTON_DOWN
+#define JPEG_LEFT BUTTON_LEFT
+#define JPEG_RIGHT BUTTON_RIGHT
+#define JPEG_MENU BUTTON_POWER
+#define JPEG_SLIDE_SHOW BUTTON_RECd
+#define JPEG_NEXT BUTTON_SCROLL_FWD
+#define JPEG_NEXT_REPEAT (BUTTON_SCROLL_FWD|BUTTON_REPEAT)
+#define JPEG_PREVIOUS BUTTON_SCROLL_BACK
+#define JPEG_PREVIOUS_REPEAT (BUTTON_SCROLL_BACK|BUTTON_REPEAT)
+
#elif CONFIG_KEYPAD == SANSA_C200_PAD
#define JPEG_ZOOM_PRE BUTTON_SELECT
#define JPEG_ZOOM_IN (BUTTON_SELECT | BUTTON_REL)
diff --git a/apps/plugins/keybox.c b/apps/plugins/keybox.c
index 6ec86f6950..0e657f3bcc 100644
--- a/apps/plugins/keybox.c
+++ b/apps/plugins/keybox.c
@@ -22,6 +22,8 @@
#include "lib/md5.h"
PLUGIN_HEADER
+
+/* FIXME: use "PLUGIN_APPS_DIR" */
#define KEYBOX_FILE PLUGIN_DIR "/apps/keybox.dat"
#define BLOCK_SIZE 8
#define MAX_ENTRIES 12*BLOCK_SIZE /* keep this a multiple of BLOCK_SIZE */
diff --git a/apps/plugins/lamp.c b/apps/plugins/lamp.c
index b5e25daa65..337ea85f43 100644
--- a/apps/plugins/lamp.c
+++ b/apps/plugins/lamp.c
@@ -52,7 +52,8 @@ PLUGIN_HEADER
# define LAMP_LEFT BUTTON_LEFT
# define LAMP_RIGHT BUTTON_RIGHT
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
# define LAMP_LEFT BUTTON_LEFT
# define LAMP_RIGHT BUTTON_RIGHT
# define LAMP_NEXT BUTTON_SCROLL_FWD
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index af6dc55f80..2ec6cf6cf2 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -101,8 +101,9 @@ const struct button_mapping generic_directions[] =
{ PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \
|| (CONFIG_KEYPAD == IPOD_3G_PAD) \
+ || (CONFIG_KEYPAD == IPOD_4G_PAD) \
|| (CONFIG_KEYPAD == SANSA_E200_PAD) \
- || (CONFIG_KEYPAD == IPOD_4G_PAD)
+ || (CONFIG_KEYPAD == SANSA_FUZE_PAD)
{ PLA_UP, BUTTON_SCROLL_BACK, BUTTON_NONE},
{ PLA_DOWN, BUTTON_SCROLL_FWD, BUTTON_NONE},
{ PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
@@ -236,7 +237,8 @@ const struct button_mapping generic_left_right_fire[] =
{ PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
{ PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
{ PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_NONE},
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) \
+ || (CONFIG_KEYPAD == SANSA_FUZE_PAD)
{ PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
{ PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
{ PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
@@ -365,15 +367,11 @@ const struct button_mapping generic_actions[] =
{PLA_MENU, BUTTON_MENU, BUTTON_NONE},
{PLA_FIRE, BUTTON_ON, BUTTON_NONE},
{PLA_FIRE_REPEAT, BUTTON_ON|BUTTON_REPEAT, BUTTON_NONE},
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
- {PLA_QUIT, BUTTON_POWER, BUTTON_NONE},
- {PLA_START, BUTTON_UP, BUTTON_NONE},
- {PLA_MENU, BUTTON_DOWN, BUTTON_NONE},
- {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
- {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
-#elif CONFIG_KEYPAD == SANSA_C200_PAD || \
-CONFIG_KEYPAD == SANSA_CLIP_PAD || \
-CONFIG_KEYPAD == SANSA_M200_PAD
+#elif CONFIG_KEYPAD == SANSA_E200_PAD || \
+ CONFIG_KEYPAD == SANSA_C200_PAD || \
+ CONFIG_KEYPAD == SANSA_CLIP_PAD || \
+ CONFIG_KEYPAD == SANSA_M200_PAD || \
+ CONFIG_KEYPAD == SANSA_FUZE_PAD
{PLA_QUIT, BUTTON_POWER, BUTTON_NONE},
{PLA_START, BUTTON_UP, BUTTON_NONE},
{PLA_MENU, BUTTON_DOWN, BUTTON_NONE},
@@ -472,8 +470,9 @@ const struct button_mapping generic_increase_decrease[] =
{PLA_DEC_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \
|| (CONFIG_KEYPAD == IPOD_3G_PAD) \
+ || (CONFIG_KEYPAD == IPOD_4G_PAD) \
|| (CONFIG_KEYPAD == SANSA_E200_PAD) \
- || (CONFIG_KEYPAD == IPOD_4G_PAD)
+ || (CONFIG_KEYPAD == SANSA_FUZE_PAD)
{PLA_INC, BUTTON_SCROLL_FWD, BUTTON_NONE},
{PLA_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE},
{PLA_INC_REPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE},
diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c
index 5fd87a6bb7..c96b45adf0 100644
--- a/apps/plugins/logo.c
+++ b/apps/plugins/logo.c
@@ -96,9 +96,10 @@ const unsigned char rockbox16x7[] = {
#define LP_INC_Y BUTTON_UP
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD) || \
-(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+ (CONFIG_KEYPAD == SANSA_C200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_M200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define LP_QUIT BUTTON_POWER
#define LP_DEC_X BUTTON_LEFT
#define LP_INC_X BUTTON_RIGHT
diff --git a/apps/plugins/mandelbrot.c b/apps/plugins/mandelbrot.c
index 536ef09e60..379022ec96 100644
--- a/apps/plugins/mandelbrot.c
+++ b/apps/plugins/mandelbrot.c
@@ -138,6 +138,18 @@ PLUGIN_HEADER
#define MANDELBROT_MAXITER_DEC (BUTTON_SELECT | BUTTON_LEFT)
#define MANDELBROT_RESET BUTTON_REC
+#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
+#define MANDELBROT_QUIT BUTTON_POWER
+#define MANDELBROT_UP BUTTON_UP
+#define MANDELBROT_DOWN BUTTON_DOWN
+#define MANDELBROT_LEFT BUTTON_LEFT
+#define MANDELBROT_RIGHT BUTTON_RIGHT
+#define MANDELBROT_ZOOM_IN BUTTON_SCROLL_FWD
+#define MANDELBROT_ZOOM_OUT BUTTON_SCROLL_BACK
+#define MANDELBROT_MAXITER_INC (BUTTON_SELECT | BUTTON_RIGHT)
+#define MANDELBROT_MAXITER_DEC (BUTTON_SELECT | BUTTON_LEFT)
+#define MANDELBROT_RESET (BUTTON_SELECT | BUTTON_REPEAT)
+
#elif CONFIG_KEYPAD == SANSA_C200_PAD
#define MANDELBROT_QUIT BUTTON_POWER
#define MANDELBROT_UP BUTTON_UP
diff --git a/apps/plugins/matrix.c b/apps/plugins/matrix.c
index c7d797e09d..986eb72e48 100644
--- a/apps/plugins/matrix.c
+++ b/apps/plugins/matrix.c
@@ -49,6 +49,7 @@ extern const fb_data matrix_normal[];
#define LEFTMARGIN (LCD_WIDTH-(COLS*COL_W))/2
#define TOPMARGIN (LCD_HEIGHT-(ROWS*COL_H))/2
+/* FIXME: could use plugin lib actions */
#if (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
@@ -82,6 +83,11 @@ extern const fb_data matrix_normal[];
#define MATRIX_SLEEP_MORE BUTTON_SCROLL_BACK|BUTTON_REPEAT
#define MATRIX_SLEEP_LESS BUTTON_SCROLL_FWD|BUTTON_REPEAT
#define MATRIX_PAUSE BUTTON_SELECT
+#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
+#define MATRIX_EXIT BUTTON_DOWN
+#define MATRIX_SLEEP_MORE BUTTON_SCROLL_BACK|BUTTON_REPEAT
+#define MATRIX_SLEEP_LESS BUTTON_SCROLL_FWD|BUTTON_REPEAT
+#define MATRIX_PAUSE BUTTON_SELECT
#elif CONFIG_KEYPAD == SANSA_C200_PAD
#define MATRIX_EXIT BUTTON_POWER
#define MATRIX_SLEEP_MORE BUTTON_UP
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c
index 40141f496e..5f4613a37b 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -83,7 +83,8 @@ PLUGIN_IRAM_DECLARE
#define BTN_PLAY BUTTON_PLAY
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) \
+ || (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define BTN_QUIT BUTTON_POWER
#define BTN_RIGHT BUTTON_RIGHT
#define BTN_LEFT BUTTON_LEFT
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 071c5d786c..183ce0fd9b 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -120,6 +120,7 @@ enum minesweeper_status {
# define MINESWP_INFO BUTTON_MENU
#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+
# define MINESWP_SCROLLWHEEL
# define MINESWP_LEFT BUTTON_LEFT
# define MINESWP_RIGHT BUTTON_RIGHT
@@ -132,6 +133,17 @@ enum minesweeper_status {
# define MINESWP_DISCOVER BUTTON_SELECT
# define MINESWP_INFO (BUTTON_REC|BUTTON_REPEAT)
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
+# define MINESWP_UP BUTTON_UP
+# define MINESWP_DOWN BUTTON_DOWN
+# define MINESWP_QUIT BUTTON_POWER
+# define MINESWP_TOGGLE BUTTON_SCROLL_FWD
+# define MINESWP_DISCOVER BUTTON_SELECT
+# define MINESWP_INFO BUTTON_SCROLL_BACK
+
#elif (CONFIG_KEYPAD == SANSA_C200_PAD) || \
(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
(CONFIG_KEYPAD == SANSA_M200_PAD)
diff --git a/apps/plugins/mosaique.c b/apps/plugins/mosaique.c
index 4d543e1d36..c8031e8b3b 100644
--- a/apps/plugins/mosaique.c
+++ b/apps/plugins/mosaique.c
@@ -42,6 +42,7 @@ PLUGIN_HEADER
#define GFX_HEIGHT 6
#endif
+/* FIXME: could use plugin lib actions */
/* variable button definitions */
#if CONFIG_KEYPAD == RECORDER_PAD
#define MOSAIQUE_QUIT BUTTON_OFF
@@ -94,9 +95,10 @@ PLUGIN_HEADER
#define MOSAIQUE_RESTART BUTTON_SELECT
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD) || \
-(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+ (CONFIG_KEYPAD == SANSA_C200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_M200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define MOSAIQUE_QUIT BUTTON_POWER
#define MOSAIQUE_SPEED BUTTON_DOWN
#define MOSAIQUE_RESTART BUTTON_SELECT
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index 8c060799d7..1de89bda97 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2429,6 +2429,7 @@ void get_mp3_filename(const char *wav_name)
#define MP3ENC_NEXT BUTTON_DOWN
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_SELECT
+/* FIXME: e200 could use scrollwheel */
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD) || \
(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
@@ -2437,6 +2438,13 @@ void get_mp3_filename(const char *wav_name)
#define MP3ENC_NEXT BUTTON_DOWN
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_SELECT
+
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+#define MP3ENC_PREV BUTTON_SCROLL_BACK
+#define MP3ENC_NEXT BUTTON_SCROLL_FWD
+#define MP3ENC_DONE BUTTON_UP
+#define MP3ENC_SELECT BUTTON_SELECT
+
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define MP3ENC_PREV BUTTON_SCROLL_UP
#define MP3ENC_NEXT BUTTON_SCROLL_DOWN
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index 2b423d28e9..cf7af09469 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -73,7 +73,8 @@ struct mpeg_settings settings;
#define MPEG_START_TIME_DOWN BUTTON_SCROLL_DOWN
#define MPEG_START_TIME_EXIT BUTTON_POWER
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) \
+ || (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define MPEG_START_TIME_SELECT BUTTON_SELECT
#define MPEG_START_TIME_SCROLL_UP BUTTON_SCROLL_BACK
#define MPEG_START_TIME_SCROLL_DOWN BUTTON_SCROLL_FWD
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index 02eb0863ff..cb5d4edb76 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -180,7 +180,8 @@ PLUGIN_IRAM_DECLARE
#define MPEG_RW BUTTON_REW
#define MPEG_FF BUTTON_FF
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif CONFIG_KEYPAD == SANSA_E200_PAD \
+ || CONFIG_KEYPAD == SANSA_FUZE_PAD
#define MPEG_MENU BUTTON_SELECT
#define MPEG_STOP BUTTON_POWER
#define MPEG_PAUSE BUTTON_UP
diff --git a/apps/plugins/nim.c b/apps/plugins/nim.c
index ce61d7a383..1500407f49 100644
--- a/apps/plugins/nim.c
+++ b/apps/plugins/nim.c
@@ -20,6 +20,7 @@
****************************************************************************/
#include "plugin.h"
+/* FIXME: Why only for charcell? */
#ifdef HAVE_LCD_CHARCELLS
/* NIM game for the player
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c
index d197272e9a..5915604b74 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -111,6 +111,17 @@ PLUGIN_HEADER
#define OSCILLOSCOPE_VOL_UP BUTTON_SCROLL_FWD
#define OSCILLOSCOPE_VOL_DOWN BUTTON_SCROLL_BACK
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+#define OSCILLOSCOPE_QUIT BUTTON_DOWN
+#define OSCILLOSCOPE_DRAWMODE (BUTTON_SELECT | BUTTON_REL)
+#define OSCILLOSCOPE_ADVMODE (BUTTON_SELECT | BUTTON_RIGHT)
+#define OSCILLOSCOPE_ORIENTATION (BUTTON_SELECT | BUTTON_LEFT)
+#define OSCILLOSCOPE_PAUSE BUTTON_UP
+#define OSCILLOSCOPE_SPEED_UP BUTTON_RIGHT
+#define OSCILLOSCOPE_SPEED_DOWN BUTTON_LEFT
+#define OSCILLOSCOPE_VOL_UP BUTTON_SCROLL_FWD
+#define OSCILLOSCOPE_VOL_DOWN BUTTON_SCROLL_BACK
+
#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
#define OSCILLOSCOPE_QUIT BUTTON_POWER
#define OSCILLOSCOPE_DRAWMODE BUTTON_SELECT
diff --git a/apps/plugins/pacbox/pacbox.h b/apps/plugins/pacbox/pacbox.h
index e454b17ae7..2d559fd6df 100644
--- a/apps/plugins/pacbox/pacbox.h
+++ b/apps/plugins/pacbox/pacbox.h
@@ -112,6 +112,17 @@
#define PACMAN_COIN (BUTTON_SELECT | BUTTON_DOWN)
#define PACMAN_MENU BUTTON_POWER
+#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
+
+#define PACMAN_UP BUTTON_UP
+#define PACMAN_DOWN BUTTON_DOWN
+#define PACMAN_LEFT BUTTON_LEFT
+#define PACMAN_RIGHT BUTTON_RIGHT
+#define PACMAN_1UP BUTTON_SELECT
+#define PACMAN_COIN_PRE BUTTON_SELECT
+#define PACMAN_COIN (BUTTON_SELECT | BUTTON_DOWN)
+#define PACMAN_MENU BUTTON_POWER
+
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#if defined(IRIVER_H10_5GB)
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c
index bf40032cf8..25f8adfbed 100644
--- a/apps/plugins/pegbox.c
+++ b/apps/plugins/pegbox.c
@@ -41,6 +41,7 @@ PLUGIN_HEADER
#define PB_USB 2
#define PB_QUIT 1
+/* FIXME: USE PLUGIN_GAMES_DIR */
#define DATA_FILE PLUGIN_DIR "/games/pegbox.data"
#define SAVE_FILE PLUGIN_DIR "/games/pegbox.save"
@@ -194,6 +195,25 @@ PLUGIN_HEADER
#define LVL_UP_TEXT "SCROLL BACK"
#define LVL_DOWN_TEXT "SCROLL FWD"
+#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
+#define PEGBOX_SAVE BUTTON_SELECT|BUTTON_REL
+#define PEGBOX_QUIT BUTTON_POWER
+/* FIXME:
+#define PEGBOX_RESTART BUTTON_HOME */
+#define PEGBOX_RESTART BUTTON_SELECT|BUTTON_LEFT
+#define PEGBOX_LVL_UP BUTTON_SCROLL_BACK
+#define PEGBOX_LVL_DOWN BUTTON_SCROLL_FWD
+#define PEGBOX_UP BUTTON_UP
+#define PEGBOX_DOWN BUTTON_DOWN
+#define PEGBOX_RIGHT BUTTON_RIGHT
+#define PEGBOX_LEFT BUTTON_LEFT
+
+#define SAVE_TEXT "SELECT"
+#define QUIT_TEXT "POWER"
+#define RESTART_TEXT "SELECT & LEFT"
+#define LVL_UP_TEXT "SCROLL BACK"
+#define LVL_DOWN_TEXT "SCROLL FWD"
+
#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define PEGBOX_SAVE BUTTON_SELECT
#define PEGBOX_QUIT BUTTON_POWER
diff --git a/apps/plugins/plasma.c b/apps/plugins/plasma.c
index 7c74a86917..8e85bf08c4 100644
--- a/apps/plugins/plasma.c
+++ b/apps/plugins/plasma.c
@@ -55,6 +55,7 @@ static size_t gbuf_size = 0;
static unsigned char sp1, sp2, sp3, sp4; /* Speed of plasma */
static int plasma_frequency;
+/* FIXME: Could use plugin lib actions */
/* Key assignement, all bitmapped models */
#if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
@@ -67,10 +68,12 @@ static int plasma_frequency;
#define PLASMA_INCREASE_FREQUENCY BUTTON_UP
#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN
+/* FIXME: Clip/fuze should use HOME instead of POWER */
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD) || \
-(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+ (CONFIG_KEYPAD == SANSA_C200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_M200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define PLASMA_QUIT BUTTON_POWER
#define PLASMA_INCREASE_FREQUENCY BUTTON_UP
#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN
@@ -145,13 +148,15 @@ static int plasma_frequency;
#define PLASMA_RC_QUIT BUTTON_RC_STOP
#endif
+/* FIXME: cleanup */
#ifdef HAVE_LCD_COLOR
#if CONFIG_KEYPAD == IAUDIO_X5M5_PAD
#define PLASMA_REGEN_COLORS BUTTON_PLAY
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define PLASMA_REGEN_COLORS BUTTON_PLAY
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD)
+(CONFIG_KEYPAD == SANSA_C200_PAD) || \
+(CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define PLASMA_REGEN_COLORS BUTTON_SELECT
#elif CONFIG_KEYPAD == IPOD_4G_PAD
#define PLASMA_REGEN_COLORS BUTTON_SELECT
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index eeda405ae4..220bcf641c 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -103,8 +103,9 @@ PLUGIN_HEADER
#define PONG_RIGHT_DOWN BUTTON_VOL_DOWN
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+ (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_M200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define PONG_QUIT BUTTON_POWER
#define PONG_PAUSE BUTTON_SELECT
#define PONG_LEFT_UP BUTTON_LEFT
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h
index 2db10fed6a..50effc03a7 100644
--- a/apps/plugins/reversi/reversi-gui.h
+++ b/apps/plugins/reversi/reversi-gui.h
@@ -109,7 +109,8 @@
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD) || \
(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+(CONFIG_KEYPAD == SANSA_M200_PAD) || \
+(CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define REVERSI_BUTTON_QUIT BUTTON_POWER
#define REVERSI_BUTTON_UP BUTTON_UP
#define REVERSI_BUTTON_DOWN BUTTON_DOWN
diff --git a/apps/plugins/robotfindskitten.c b/apps/plugins/robotfindskitten.c
index d46a7380b0..b4021fe91c 100644
--- a/apps/plugins/robotfindskitten.c
+++ b/apps/plugins/robotfindskitten.c
@@ -483,6 +483,18 @@ static char* messages[] =
# define RFK_RUP (BUTTON_MENU | BUTTON_REPEAT)
# define RFK_RDOWN (BUTTON_PLAY | BUTTON_REPEAT)
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+# undef __PLUGINLIB_ACTIONS_H__
+# define RFK_QUIT (BUTTON_SELECT | BUTTON_REPEAT)
+# define RFK_RIGHT BUTTON_RIGHT
+# define RFK_LEFT BUTTON_LEFT
+# define RFK_UP BUTTON_UP
+# define RFK_DOWN BUTTON_DOWN
+# define RFK_RRIGHT (BUTTON_RIGHT | BUTTON_REPEAT)
+# define RFK_RLEFT (BUTTON_LEFT | BUTTON_REPEAT)
+# define RFK_RUP (BUTTON_UP | BUTTON_REPEAT)
+# define RFK_RDOWN (BUTTON_DOWN | BUTTON_REPEAT)
+
#else
# define RFK_QUIT PLA_QUIT
# define RFK_RIGHT PLA_RIGHT
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index 6c403e76ed..89971c3153 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -41,6 +41,7 @@ PLUGIN_HEADER
#define ROCKBLOX_RESTART (BUTTON_SELECT | BUTTON_PLAY)
#define ROCKBLOX_DROP (BUTTON_SELECT | BUTTON_REL)
+/* FIXME: use HAVE_SCROLLWHEEL */
#define SCROLL_WHEEL
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
@@ -114,6 +115,7 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == SANSA_E200_PAD
+/* FIXME: No #define SCROLL_WHEEL here? */
#define ROCKBLOX_OFF BUTTON_POWER
#define ROCKBLOX_ROTATE_RIGHT BUTTON_SCROLL_BACK
#define ROCKBLOX_ROTATE_LEFT BUTTON_SCROLL_FWD
@@ -123,6 +125,21 @@ PLUGIN_HEADER
#define ROCKBLOX_DROP BUTTON_SELECT
#define ROCKBLOX_RESTART BUTTON_REC
+#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
+
+/* FIXME: No #define SCROLL_WHEEL here? */
+#define ROCKBLOX_OFF BUTTON_POWER
+#define ROCKBLOX_ROTATE_RIGHT BUTTON_SCROLL_BACK
+#define ROCKBLOX_ROTATE_LEFT BUTTON_SCROLL_FWD
+#define ROCKBLOX_DOWN BUTTON_DOWN
+#define ROCKBLOX_LEFT BUTTON_LEFT
+#define ROCKBLOX_RIGHT BUTTON_RIGHT
+#define ROCKBLOX_DROP BUTTON_SELECT
+/* FIXME:
+#define ROCKBLOX_RESTART BUTTON_HOME */
+#define ROCKBLOX_RESTART BUTTON_SELECT|BUTTON_DOWN
+
+
#elif CONFIG_KEYPAD == SANSA_C200_PAD
#define ROCKBLOX_OFF BUTTON_POWER
@@ -543,8 +560,8 @@ extern const fb_data rockblox_background[];
% % % %%% - L has 4 orientations
%% %%% % %
- % %%s
- % % % %%% - J has 4 orientations
+ % %%
+ % % % %%% - J has 4 orientations
%% %%% % %
% % %%%
diff --git a/apps/plugins/rockblox1d.c b/apps/plugins/rockblox1d.c
index 12f939a319..7c948e2d4f 100644
--- a/apps/plugins/rockblox1d.c
+++ b/apps/plugins/rockblox1d.c
@@ -24,6 +24,8 @@
PLUGIN_HEADER
+/* FIXME: Could use plugin lib action */
+
#ifdef HAVE_LCD_BITMAP
#if CONFIG_KEYPAD == RECORDER_PAD
@@ -57,9 +59,11 @@ PLUGIN_HEADER
#define ONEDROCKBLOX_DOWN BUTTON_SELECT
#define ONEDROCKBLOX_QUIT BUTTON_POWER
-#elif CONFIG_KEYPAD == SANSA_E200_PAD || CONFIG_KEYPAD == SANSA_C200_PAD || \
-CONFIG_KEYPAD == SANSA_CLIP_PAD || \
-CONFIG_KEYPAD == SANSA_M200_PAD
+#elif CONFIG_KEYPAD == SANSA_E200_PAD || \
+ CONFIG_KEYPAD == SANSA_C200_PAD || \
+ CONFIG_KEYPAD == SANSA_CLIP_PAD || \
+ CONFIG_KEYPAD == SANSA_M200_PAD || \
+ CONFIG_KEYPAD == SANSA_FUZE_PAD
#define ONEDROCKBLOX_DOWN BUTTON_SELECT
#define ONEDROCKBLOX_QUIT BUTTON_POWER
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index 5244bf0b3d..6733bf8551 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -163,7 +163,17 @@ static void setoptions (void)
options.START=BUTTON_SCROLL_BACK;
options.SELECT=BUTTON_SCROLL_FWD;
options.MENU=BUTTON_POWER;
-
+
+#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
+ options.UP=BUTTON_UP;
+ options.DOWN=BUTTON_DOWN;
+
+ options.A=BUTTON_SELECT;
+ options.B=BUTTON_HOME;
+ options.START=BUTTON_SCROLL_BACK;
+ options.SELECT=BUTTON_SCROLL_FWD;
+ options.MENU=BUTTON_POWER;
+
#elif CONFIG_KEYPAD == SANSA_C200_PAD
options.UP=BUTTON_UP;
options.DOWN=BUTTON_DOWN;
diff --git a/apps/plugins/rockpaint.c b/apps/plugins/rockpaint.c
index 40d19101fc..b66324c85b 100644
--- a/apps/plugins/rockpaint.c
+++ b/apps/plugins/rockpaint.c
@@ -95,6 +95,20 @@ PLUGIN_HEADER
#define ROCKPAINT_LEFT BUTTON_LEFT
#define ROCKPAINT_RIGHT BUTTON_RIGHT
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+#define ROCKPAINT_QUIT BUTTON_POWER
+#define ROCKPAINT_DRAW BUTTON_SELECT
+#define ROCKPAINT_MENU ( BUTTON_SELECT | BUTTON_DOWN )
+/* FIXME:
+#define ROCKPAINT_TOOLBAR BUTTON_HOME
+#define ROCKPAINT_TOOLBAR2 ( BUTTON_HOME | BUTTON_LEFT ) */
+#define ROCKPAINT_TOOLBAR ( BUTTON_SELECT | BUTTON_LEFT )
+#define ROCKPAINT_TOOLBAR2 ( BUTTON_SELECT | BUTTON_RIGHT )
+#define ROCKPAINT_UP BUTTON_UP
+#define ROCKPAINT_DOWN BUTTON_DOWN
+#define ROCKPAINT_LEFT BUTTON_LEFT
+#define ROCKPAINT_RIGHT BUTTON_RIGHT
+
#elif ( CONFIG_KEYPAD == IRIVER_H10_PAD )
#define ROCKPAINT_QUIT BUTTON_POWER
#define ROCKPAINT_DRAW BUTTON_FF
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index 8a607c9272..7aa1ed36a8 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -103,6 +103,17 @@ PLUGIN_HEADER
#define PUZZLE_SHUFFLE BUTTON_REC
#define PUZZLE_PICTURE BUTTON_SELECT
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+#define PUZZLE_QUIT BUTTON_POWER
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
+#define PUZZLE_UP BUTTON_UP
+#define PUZZLE_DOWN BUTTON_DOWN
+/* FIXME:
+#define PUZZLE_SHUFFLE BUTTON_HOME */
+#define PUZZLE_SHUFFLE BUTTON_SELECT|BUTTON_DOWN
+#define PUZZLE_PICTURE BUTTON_SELECT
+
#elif (CONFIG_KEYPAD == SANSA_CLIP_PAD)
#define PUZZLE_QUIT BUTTON_POWER
#define PUZZLE_LEFT BUTTON_LEFT
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index b2a592883c..56e8c7854b 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -100,9 +100,10 @@ PLUGIN_HEADER
#define SNAKE_PLAYPAUSE BUTTON_SELECT
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD) || \
-(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+ (CONFIG_KEYPAD == SANSA_C200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_M200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define SNAKE_QUIT BUTTON_POWER
#define SNAKE_LEFT BUTTON_LEFT
#define SNAKE_RIGHT BUTTON_RIGHT
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index 061fdb2a5d..5b470f5f82 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -249,6 +249,20 @@ PLUGIN_HEADER
#define SNAKE2_PLAYPAUSE BUTTON_SELECT
#define SNAKE2_PLAYPAUSE_TEXT "Select"
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
+#define SNAKE2_UP BUTTON_UP
+#define SNAKE2_DOWN BUTTON_DOWN
+#define SNAKE2_QUIT BUTTON_POWER
+#define SNAKE2_LEVEL_UP BUTTON_UP
+#define SNAKE2_LEVEL_DOWN BUTTON_DOWN
+#define SNAKE2_MAZE_NEXT BUTTON_RIGHT
+#define SNAKE2_MAZE_LAST BUTTON_LEFT
+#define SNAKE2_SELECT_TYPE BUTTON_SELECT|BUTTON_REL
+#define SNAKE2_PLAYPAUSE BUTTON_SELECT|BUTTON_REPEAT
+#define SNAKE2_PLAYPAUSE_TEXT "Hold Select"
+
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define SNAKE2_LEFT BUTTON_LEFT
#define SNAKE2_RIGHT BUTTON_RIGHT
diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c
index c73fd2e58b..8e3d712f8f 100644
--- a/apps/plugins/snow.c
+++ b/apps/plugins/snow.c
@@ -35,6 +35,7 @@ PLUGIN_HEADER
#define MYLCD(fn) pgfx_ ## fn
#endif
+/* FIXME: Could use pluginlib actions, or at least cleaned up */
/* variable button definitions */
#if CONFIG_KEYPAD == PLAYER_PAD
#define SNOW_QUIT BUTTON_STOP
@@ -53,6 +54,8 @@ PLUGIN_HEADER
(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
(CONFIG_KEYPAD == SANSA_M200_PAD)
#define SNOW_QUIT BUTTON_POWER
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+#define SNOW_QUIT BUTTON_DOWN
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define SNOW_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == MROBE500_PAD
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index 4d2de8aedb..98faf7961f 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -220,6 +220,22 @@ PLUGIN_HEADER
#define BUTTON_SAVE BUTTON_SELECT
#define BUTTON_SAVE_NAME "SELECT"
+#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
+#define SOKOBAN_UP BUTTON_UP
+#define SOKOBAN_DOWN BUTTON_DOWN
+#define SOKOBAN_MENU BUTTON_POWER
+#define SOKOBAN_UNDO_PRE BUTTON_SELECT
+#define SOKOBAN_UNDO (BUTTON_SELECT | BUTTON_REL)
+#define SOKOBAN_REDO (BUTTON_SELECT | BUTTON_LEFT)
+#define SOKOBAN_LEVEL_DOWN (BUTTON_SELECT | BUTTON_DOWN)
+#define SOKOBAN_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_RIGHT)
+#define SOKOBAN_LEVEL_UP (BUTTON_SELECT | BUTTON_UP)
+#define SOKOBAN_PAUSE BUTTON_SELECT
+#define BUTTON_SAVE BUTTON_SELECT
+#define BUTTON_SAVE_NAME "SELECT"
+
#elif CONFIG_KEYPAD == SANSA_C200_PAD
#define SOKOBAN_LEFT BUTTON_LEFT
#define SOKOBAN_RIGHT BUTTON_RIGHT
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index 1526cecd47..3a11d02bda 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -201,6 +201,28 @@ static const struct plugin_api* rb;
# define HK_CUR2STACK "DOUBLE SELECT"
# define HK_REM2STACK "RIGHT"
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+# define SOL_QUIT BUTTON_POWER
+# define SOL_UP BUTTON_UP
+# define SOL_DOWN BUTTON_DOWN
+# define SOL_LEFT BUTTON_SCROLL_BACK
+# define SOL_RIGHT BUTTON_SCROLL_FWD
+# define SOL_MOVE (BUTTON_SELECT|BUTTON_REL)
+# define SOL_DRAW (BUTTON_SELECT|BUTTON_UP)
+# define SOL_REM2CUR BUTTON_LEFT
+/* FIXME:
+# define SOL_CUR2STACK_PRE BUTTON_HOME
+# define SOL_CUR2STACK (BUTTON_HOME | BUTTON_RIGHT) */
+# define SOL_CUR2STACK_PRE (BUTTON_RIGHT | BUTTON_REPEAT)
+# define SOL_CUR2STACK BUTTON_RIGHT
+# define SOL_REM2STACK (BUTTON_LEFT|BUTTON_REPEAT)
+# define SOL_REM2STACK_PRE BUTTON_LEFT
+# define HK_MOVE "SELECT"
+# define HK_DRAW "REC"
+# define HK_REM2CUR "LEFT"
+# define HK_CUR2STACK "DOUBLE SELECT"
+# define HK_REM2STACK "RIGHT"
+
#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
# define SOL_QUIT BUTTON_POWER
# define SOL_UP BUTTON_UP
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index 2b22bb491e..6c2496a781 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -135,6 +135,19 @@ static const struct plugin_api* rb; /* global api struct pointer */
#define AST_FIRE BUTTON_SELECT
#define AST_FIRE_REP (BUTTON_SELECT | BUTTON_REPEAT)
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+#define AST_PAUSE BUTTON_HOME
+#define AST_QUIT BUTTON_POWER
+#define AST_THRUST_REP (BUTTON_UP | BUTTON_REPEAT)
+#define AST_THRUST BUTTON_UP
+#define AST_HYPERSPACE BUTTON_DOWN
+#define AST_LEFT BUTTON_SCROLL_BACK
+#define AST_LEFT_REP (BUTTON_SCROLL_BACK | BUTTON_REPEAT)
+#define AST_RIGHT BUTTON_SCROLL_FWD
+#define AST_RIGHT_REP (BUTTON_SCROLL_FWD | BUTTON_REPEAT)
+#define AST_FIRE BUTTON_SELECT
+#define AST_FIRE_REP (BUTTON_SELECT | BUTTON_REPEAT)
+
#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
#define AST_PAUSE BUTTON_REC
#define AST_QUIT BUTTON_POWER
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index c217fb922f..2c4be27c34 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -163,18 +163,19 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD) || \
(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+(CONFIG_KEYPAD == SANSA_M200_PAD) || \
+(CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define STAR_QUIT BUTTON_POWER
#define STAR_LEFT BUTTON_LEFT
#define STAR_RIGHT BUTTON_RIGHT
-#define STAR_UP BUTTON_UP
-#define STAR_DOWN BUTTON_DOWN
+#define STAR_UP BUTTON_UP
+#define STAR_DOWN BUTTON_DOWN
#define STAR_TOGGLE_CONTROL BUTTON_SELECT
-#define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT)
-#define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT)
-#define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN)
-#define STAR_MENU_RUN BUTTON_SELECT
+#define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT)
+#define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT)
+#define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN)
+#define STAR_MENU_RUN BUTTON_SELECT
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
diff --git a/apps/plugins/starfield.c b/apps/plugins/starfield.c
index 6fe01d5509..7f39d5121b 100644
--- a/apps/plugins/starfield.c
+++ b/apps/plugins/starfield.c
@@ -62,7 +62,8 @@ static const struct plugin_api* rb; /* global api struct pointer */
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD) || \
(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+(CONFIG_KEYPAD == SANSA_M200_PAD) || \
+(CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define STARFIELD_QUIT BUTTON_POWER
#define STARFIELD_INCREASE_ZMOVE BUTTON_UP
#define STARFIELD_DECREASE_ZMOVE BUTTON_DOWN
diff --git a/apps/plugins/stats.c b/apps/plugins/stats.c
index 18cd30465e..ff47389e5d 100644
--- a/apps/plugins/stats.c
+++ b/apps/plugins/stats.c
@@ -27,6 +27,7 @@ static int files, dirs, musicfiles, largestdir;
static int lasttick;
static bool abort;
+/* FIXME: Could use plugin lib actions or be cleaned up */
#if CONFIG_KEYPAD == PLAYER_PAD
#define STATS_STOP BUTTON_STOP
@@ -61,6 +62,11 @@ static bool abort;
(CONFIG_KEYPAD == SANSA_M200_PAD)
#define STATS_STOP BUTTON_POWER
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+/* FIXME:
+#define STATS_STOP BUTTON_HOME */
+#define STATS_STOP BUTTON_DOWN
+
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define STATS_STOP BUTTON_POWER
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index debdd5b8b2..d53937acb2 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -32,6 +32,7 @@ PLUGIN_HEADER
#define LAP_Y TIMER_Y+1
#define MAX_LAPS 64
+/* FIXME: Use PLUGIN_APPS_DIR */
#define STOPWATCH_FILE ROCKBOX_DIR "/apps/stopwatch.dat"
/* variable button definitions */
@@ -105,6 +106,7 @@ PLUGIN_HEADER
#define STOPWATCH_SCROLL_UP BUTTON_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
+/* FIXME: e200 could use scrollwheel */
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD) || \
(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
@@ -116,6 +118,15 @@ PLUGIN_HEADER
#define STOPWATCH_SCROLL_UP BUTTON_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+#define STOPWATCH_QUIT BUTTON_POWER
+#define STOPWATCH_START_STOP BUTTON_RIGHT
+#define STOPWATCH_RESET_TIMER BUTTON_LEFT
+#define STOPWATCH_LAP_TIMER BUTTON_SELECT
+/* FIXME: ipods scroll other way around, investigate */
+#define STOPWATCH_SCROLL_UP BUTTON_SCROLL_BACK
+#define STOPWATCH_SCROLL_DOWN BUTTON_SCROLL_FWD
+
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define STOPWATCH_QUIT BUTTON_POWER
#define STOPWATCH_START_STOP BUTTON_PLAY
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h
index 1cc996d172..2b3e18f401 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -134,6 +134,17 @@
#define SUDOKU_BUTTON_MENU BUTTON_SELECT
#define SUDOKU_BUTTON_POSSIBLE BUTTON_REC
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+#define SUDOKU_BUTTON_QUIT BUTTON_POWER
+#define SUDOKU_BUTTON_UP BUTTON_UP
+#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
+#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
+#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
+#define SUDOKU_BUTTON_TOGGLEBACK BUTTON_SCROLL_BACK
+#define SUDOKU_BUTTON_TOGGLE BUTTON_SCROLL_FWD
+#define SUDOKU_BUTTON_MENU BUTTON_SELECT
+#define SUDOKU_BUTTON_POSSIBLE BUTTON_HOME
+
#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
diff --git a/apps/plugins/superdom.c b/apps/plugins/superdom.c
index c9ad603d8b..652b474336 100644
--- a/apps/plugins/superdom.c
+++ b/apps/plugins/superdom.c
@@ -113,7 +113,8 @@ char buf[255];
#define SUPERDOM_RIGHT BUTTON_RIGHT
#define SUPERDOM_CANCEL BUTTON_POWER
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif CONFIG_KEYPAD == SANSA_E200_PAD || \
+ CONFIG_KEYPAD == SANSA_FUZE_PAD
#define SUPERDOM_OK BUTTON_SELECT
#define SUPERDOM_UP BUTTON_SCROLL_BACK
#define SUPERDOM_DOWN BUTTON_SCROLL_FWD
diff --git a/apps/plugins/test_scanrate.c b/apps/plugins/test_scanrate.c
index 0c291261db..e869d3be12 100644
--- a/apps/plugins/test_scanrate.c
+++ b/apps/plugins/test_scanrate.c
@@ -35,7 +35,8 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \
|| (CONFIG_KEYPAD == MROBE100_PAD) \
- || (CONFIG_KEYPAD == SANSA_CLIP_PAD)
+ || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \
+ || (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define SCANRATE_DONE BUTTON_POWER
#define SCANRATE_FASTINC BUTTON_UP
#define SCANRATE_FASTDEC BUTTON_DOWN
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c
index 625ab93cc4..9a4b25bffd 100644
--- a/apps/plugins/viewer.c
+++ b/apps/plugins/viewer.c
@@ -185,6 +185,18 @@ PLUGIN_HEADER
#define VIEWER_LINE_UP BUTTON_SCROLL_BACK
#define VIEWER_LINE_DOWN BUTTON_SCROLL_FWD
+/* Sansa Fuze keys */
+#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
+#define VIEWER_QUIT BUTTON_POWER
+#define VIEWER_PAGE_UP BUTTON_UP
+#define VIEWER_PAGE_DOWN BUTTON_DOWN
+#define VIEWER_SCREEN_LEFT BUTTON_LEFT
+#define VIEWER_SCREEN_RIGHT BUTTON_RIGHT
+#define VIEWER_MENU BUTTON_SELECT|BUTTON_REPEAT
+#define VIEWER_AUTOSCROLL BUTTON_SELECT|BUTTON_DOWN
+#define VIEWER_LINE_UP BUTTON_SCROLL_BACK
+#define VIEWER_LINE_DOWN BUTTON_SCROLL_FWD
+
/* Sansa C200 keys */
#elif CONFIG_KEYPAD == SANSA_C200_PAD
#define VIEWER_QUIT BUTTON_POWER
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index 7b29589428..bedf0ddc35 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -124,6 +124,21 @@ PLUGIN_HEADER
#define LABEL_MENU "SELECT"
#define LABEL_VOLUME "Wheel"
+#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
+/* FIXME:
+#define VUMETER_QUIT BUTTON_HOME */
+#define VUMETER_QUIT BUTTON_DOWN
+#define VUMETER_HELP BUTTON_SELECT|BUTTON_REPEAT
+#define VUMETER_MENU BUTTON_SELECT|BUTTON_REL
+#define VUMETER_MENU_EXIT BUTTON_SELECT
+#define VUMETER_MENU_EXIT2 BUTTON_DOWN
+#define VUMETER_UP BUTTON_SCROLL_FWD
+#define VUMETER_DOWN BUTTON_SCROLL_BACK
+#define LABEL_HELP "Hold Select"
+#define LABEL_QUIT "Down"
+#define LABEL_MENU "Select"
+#define LABEL_VOLUME "Scrollwheel"
+
#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
#define VUMETER_QUIT BUTTON_POWER
#define VUMETER_HELP BUTTON_REC
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 6c44bb486d..42b93c2f2e 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -165,7 +165,8 @@ PLUGIN_HEADER
#define WORMS_TEXT "Left/Right"
-#elif (CONFIG_KEYPAD == SANSA_CLIP_PAD)
+#elif (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define BTN_DIR_UP BUTTON_UP
#define BTN_DIR_DOWN BUTTON_DOWN
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index dc102b61f5..3cf66637d1 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -87,7 +87,8 @@ PLUGIN_HEADER
#define PAUSE BUTTON_REC
-#elif (CONFIG_KEYPAD == SANSA_CLIP_PAD)
+#elif (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define QUIT BUTTON_POWER
#define LEFT BUTTON_LEFT
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index 4d2b4a9384..9262c856cd 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -87,9 +87,10 @@
#define ZX_DOWN BUTTON_SCROLL_DOWN
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
-(CONFIG_KEYPAD == SANSA_C200_PAD) || \
-(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
-(CONFIG_KEYPAD == SANSA_M200_PAD)
+ (CONFIG_KEYPAD == SANSA_C200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
+ (CONFIG_KEYPAD == SANSA_M200_PAD) || \
+ (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define ZX_SELECT BUTTON_SELECT
#define ZX_MENU BUTTON_POWER
#define ZX_LEFT BUTTON_LEFT
diff --git a/apps/plugins/zxbox/zxbox_keyb.c b/apps/plugins/zxbox/zxbox_keyb.c
index 36f1d519d9..253ab63655 100644
--- a/apps/plugins/zxbox/zxbox_keyb.c
+++ b/apps/plugins/zxbox/zxbox_keyb.c
@@ -114,6 +114,7 @@
(CONFIG_KEYPAD == SANSA_C200_PAD) || \
(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
(CONFIG_KEYPAD == SANSA_M200_PAD) || \
+(CONFIG_KEYPAD == SANSA_FUZE_PAD) || \
(CONFIG_KEYPAD == MROBE100_PAD)
/* TODO: Check keyboard mappings */
diff --git a/tools/configure b/tools/configure
index 1bf72f89dc..459dd9c7a9 100755
--- a/tools/configure
+++ b/tools/configure
@@ -1749,7 +1749,7 @@ fi
output="rockbox.sansa"
bootoutput="bootloader-fuze.sansa"
appextra="recorder:gui"
- plugins=""
+ plugins="yes"
swcodec="yes"
toolset=$scramblebitmaptools
t_cpu="arm"