Enable plugins on the Sansa C200. Large parts taken from patch FS#7749 by Max Kelley with tweaks, bit of cleanup and additional bitmaps by me. Some of the now enabled plugins could still be improved in regard to screen size adaptation or keymaps but this way it can easily be done later and one by one. The rather ugly 'ifndef's I added temporaryly in plugins/SOURCES will also go one by one. Plugin button actions cause some quirks in a few plugins (e.g. 'clock') but since it's not critical , the bitmaps were already done and it makes a good example for discussing plugin button actions, I thought it could go in.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14771 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/keymaps/keymap-c200.c b/apps/keymaps/keymap-c200.c
index 9a4c2b4..6e54157 100644
--- a/apps/keymaps/keymap-c200.c
+++ b/apps/keymaps/keymap-c200.c
@@ -269,19 +269,16 @@
static const struct button_mapping button_context_keyboard[] = {
{ ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
-
{ ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_CURSOR_LEFT, BUTTON_REC|BUTTON_LEFT, BUTTON_NONE },
+ { ACTION_KBD_CURSOR_LEFT, BUTTON_REC|BUTTON_LEFT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_REC|BUTTON_LEFT|BUTTON_REPEAT,BUTTON_NONE },
-
- { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT, BUTTON_NONE },
+ { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT|BUTTON_REPEAT,BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
-
{ ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
@@ -291,7 +288,8 @@
{ ACTION_KBD_PAGE_FLIP, BUTTON_REC|BUTTON_SELECT, BUTTON_REC },
{ ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
- { ACTION_KBD_DONE, BUTTON_UP, BUTTON_NONE },
+ { ACTION_KBD_DONE, BUTTON_VOL_UP, BUTTON_NONE },
+ { ACTION_KBD_DONE, BUTTON_VOL_DOWN, BUTTON_NONE },
{ ACTION_KBD_ABORT, BUTTON_POWER, BUTTON_NONE },
LAST_ITEM_IN_LIST
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES
index 31d94d5..8479cd8 100644
--- a/apps/plugins/SOURCES
+++ b/apps/plugins/SOURCES
@@ -34,7 +34,9 @@
#ifndef IRIVER_IFP7XX_SERIES /* Temporarily disable plugins for iFP7xx */
dice.c
disktidy.c
+#ifndef SANSA_C200
flipit.c
+#endif
#ifdef HAVE_LCD_BITMAP /* Not for the Player */
maze.c
@@ -50,14 +52,16 @@
blackjack.c
bounce.c
+#ifndef SANSA_C200
bubbles.c
+#endif
-#if (LCD_DEPTH >= 2) && !defined(IPOD_MINI) && !defined(IPOD_MINI2G) && !defined(IRIVER_H10_5GB)
+#if (LCD_WIDTH >= 160)
invadrox.c
#endif
-#if LCD_WIDTH != 128
-/* These need adjusting for the iRiver if'p screen */
+#if LCD_WIDTH != 128 && !defined SANSA_C200
+/* These need adjusting for the iRiver if'p and Sansa c200, small H10 screen */
brickmania.c
#endif
calculator.c
@@ -65,14 +69,18 @@
chopper.c
demystify.c
jewels.c
+#ifndef SANSA_C200
minesweeper.c
+#endif
oscilloscope.c
pong.c
sliding_puzzle.c
snake.c
snake2.c
solitaire.c
+#ifndef SANSA_C200
sokoban.c
+#endif
star.c
starfield.c
#if CONFIG_LCD == LCD_SSD1815
diff --git a/apps/plugins/SUBDIRS b/apps/plugins/SUBDIRS
index 11643a5..f537fb8 100644
--- a/apps/plugins/SUBDIRS
+++ b/apps/plugins/SUBDIRS
@@ -16,7 +16,9 @@
/* For all targets with a bitmap display */
#ifdef HAVE_LCD_BITMAP
+#ifndef SANSA_C200
chessbox
+#endif
sudoku
reversi
#endif
@@ -27,8 +29,8 @@
#endif
/* For all the colour targets, iriver H1x0 and iAudio M5 */
-#if defined(HAVE_LCD_COLOR) || defined(IRIVER_H100_SERIES) \
- || defined(IAUDIO_M5)
+#if defined(HAVE_LCD_COLOR) && !defined (SANSA_C200)\
+ || defined(IRIVER_H100_SERIES) || defined(IAUDIO_M5)
pacbox
#endif
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index 85377e2..43bfc72 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -80,7 +80,8 @@
#define BATTERY_ON BUTTON_SELECT
#define BATTERY_OFF BUTTON_PLAY
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define BATTERY_ON BUTTON_SELECT
#define BATTERY_OFF BUTTON_POWER
diff --git a/apps/plugins/bitmaps/native/SOURCES b/apps/plugins/bitmaps/native/SOURCES
index 93939c9..55ad839 100644
--- a/apps/plugins/bitmaps/native/SOURCES
+++ b/apps/plugins/bitmaps/native/SOURCES
@@ -167,6 +167,14 @@
clock_smallsegments.160x128x2.bmp
clock_logo.138x110x2.bmp
clock_messages.138x110x2.bmp
+#elif (LCD_WIDTH >= 132) && (LCD_HEIGHT >= 80) && (LCD_DEPTH >= 16)
+clock_binary.132x80x16.bmp
+clock_digits.132x80x16.bmp
+clock_smalldigits.132x80x16.bmp
+clock_segments.132x80x16.bmp
+clock_smallsegments.132x80x16.bmp
+clock_logo.132x80x16.bmp
+clock_messages.132x80x16.bmp
#elif (LCD_WIDTH >= 112) && (LCD_HEIGHT >= 64) && (LCD_DEPTH >= 1)
clock_binary.112x64x1.bmp
clock_digits.112x64x1.bmp
@@ -237,6 +245,8 @@
jewels.112x64x1.bmp
#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 128)
jewels.128x128x16.bmp
+#elif (LCD_WIDTH == 132) && (LCD_HEIGHT == 80)
+jewels.132x80x16.bmp
#elif (LCD_WIDTH == 138) && (LCD_HEIGHT == 110)
jewels.138x110x2.bmp
#elif (LCD_WIDTH == 160) && (LCD_HEIGHT == 128) && !defined(HAVE_LCD_COLOR)
@@ -283,6 +293,8 @@
rockblox_background.160x128x16.bmp
#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 128) && (LCD_DEPTH == 16)
rockblox_background.128x128x16.bmp
+#elif (LCD_WIDTH == 132) && (LCD_HEIGHT == 80) && (LCD_DEPTH == 16)
+rockblox_background.132x80x16.bmp
#elif (LCD_WIDTH == 160) && (LCD_HEIGHT == 128) && (LCD_DEPTH == 2)
rockblox_background.160x128x2.bmp
#elif (LCD_WIDTH == 138) && (LCD_HEIGHT == 110) && (LCD_DEPTH == 2)
@@ -426,6 +438,10 @@
sudoku_start.138x110x2.bmp
sudoku_normal.138x110x2.bmp
sudoku_inverse.138x110x2.bmp
+#elif (LCD_WIDTH == 132) && (LCD_HEIGHT == 80) && (LCD_DEPTH >= 16)
+sudoku_start.132x80x16.bmp
+sudoku_normal.132x80x16.bmp
+sudoku_inverse.132x80x16.bmp
#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 128) && (LCD_DEPTH == 16)
sudoku_start.128x128x16.bmp
sudoku_normal.128x128x16.bmp
diff --git a/apps/plugins/bitmaps/native/clock_binary.132x80x16.bmp b/apps/plugins/bitmaps/native/clock_binary.132x80x16.bmp
new file mode 100755
index 0000000..fcf7097
--- /dev/null
+++ b/apps/plugins/bitmaps/native/clock_binary.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/clock_digits.132x80x16.bmp b/apps/plugins/bitmaps/native/clock_digits.132x80x16.bmp
new file mode 100755
index 0000000..eff4c37
--- /dev/null
+++ b/apps/plugins/bitmaps/native/clock_digits.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/clock_logo.132x80x16.bmp b/apps/plugins/bitmaps/native/clock_logo.132x80x16.bmp
new file mode 100755
index 0000000..b3d6209
--- /dev/null
+++ b/apps/plugins/bitmaps/native/clock_logo.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/clock_messages.132x80x16.bmp b/apps/plugins/bitmaps/native/clock_messages.132x80x16.bmp
new file mode 100755
index 0000000..e8a25d5
--- /dev/null
+++ b/apps/plugins/bitmaps/native/clock_messages.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/clock_segments.132x80x16.bmp b/apps/plugins/bitmaps/native/clock_segments.132x80x16.bmp
new file mode 100755
index 0000000..0b9d436
--- /dev/null
+++ b/apps/plugins/bitmaps/native/clock_segments.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/clock_smalldigits.132x80x16.bmp b/apps/plugins/bitmaps/native/clock_smalldigits.132x80x16.bmp
new file mode 100755
index 0000000..e82dbe8
--- /dev/null
+++ b/apps/plugins/bitmaps/native/clock_smalldigits.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/clock_smallsegments.132x80x16.bmp b/apps/plugins/bitmaps/native/clock_smallsegments.132x80x16.bmp
new file mode 100755
index 0000000..e4bd944
--- /dev/null
+++ b/apps/plugins/bitmaps/native/clock_smallsegments.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/jewels.132x80x16.bmp b/apps/plugins/bitmaps/native/jewels.132x80x16.bmp
new file mode 100755
index 0000000..c6c8e04
--- /dev/null
+++ b/apps/plugins/bitmaps/native/jewels.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/rockblox_background.132x80x16.bmp b/apps/plugins/bitmaps/native/rockblox_background.132x80x16.bmp
new file mode 100755
index 0000000..d4d720f
--- /dev/null
+++ b/apps/plugins/bitmaps/native/rockblox_background.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/sudoku_inverse.132x80x16.bmp b/apps/plugins/bitmaps/native/sudoku_inverse.132x80x16.bmp
new file mode 100755
index 0000000..491593c
--- /dev/null
+++ b/apps/plugins/bitmaps/native/sudoku_inverse.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/sudoku_normal.132x80x16.bmp b/apps/plugins/bitmaps/native/sudoku_normal.132x80x16.bmp
new file mode 100755
index 0000000..ff2a824
--- /dev/null
+++ b/apps/plugins/bitmaps/native/sudoku_normal.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/bitmaps/native/sudoku_start.132x80x16.bmp b/apps/plugins/bitmaps/native/sudoku_start.132x80x16.bmp
new file mode 100755
index 0000000..ab6e978
--- /dev/null
+++ b/apps/plugins/bitmaps/native/sudoku_start.132x80x16.bmp
Binary files differ
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index c4b4241..2ece48d 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -173,6 +173,21 @@
#define BJACK_RIGHT BUTTON_RIGHT
#define BJACK_LEFT BUTTON_LEFT
+#elif CONFIG_KEYPAD == SANSA_C200_PAD
+#define BJACK_START BUTTON_SELECT
+#define BJACK_QUIT BUTTON_POWER
+#define BJACK_MAX (BUTTON_REC|BUTTON_UP)
+#define BJACK_MIN (BUTTON_REC|BUTTON_VOL_DOWN)
+#define BJACK_HIT BUTTON_SELECT
+#define BJACK_STAY BUTTON_RIGHT
+#define BJACK_DOUBLEDOWN BUTTON_LEFT
+#define BJACK_SCORES BUTTON_VOL_UP
+#define BJACK_RESUME BUTTON_REC
+#define BJACK_UP BUTTON_UP
+#define BJACK_DOWN BUTTON_DOWN
+#define BJACK_RIGHT BUTTON_RIGHT
+#define BJACK_LEFT BUTTON_LEFT
+
#elif CONFIG_KEYPAD == ELIO_TPJ1022_PAD
#define BJACK_START BUTTON_MAIN
#define BJACK_QUIT BUTTON_POWER
diff --git a/apps/plugins/bounce.c b/apps/plugins/bounce.c
index eac6933..9373050 100644
--- a/apps/plugins/bounce.c
+++ b/apps/plugins/bounce.c
@@ -82,6 +82,12 @@
#define BOUNCE_QUIT BUTTON_POWER
#define BOUNCE_MODE BUTTON_SELECT
+#elif CONFIG_KEYPAD == SANSA_C200_PAD
+#define BOUNCE_UP BUTTON_UP
+#define BOUNCE_DOWN BUTTON_DOWN
+#define BOUNCE_QUIT BUTTON_POWER
+#define BOUNCE_MODE BUTTON_SELECT
+
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define BOUNCE_UP BUTTON_SCROLL_UP
#define BOUNCE_DOWN BUTTON_SCROLL_DOWN
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index e16f58a..103ce50 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -176,14 +176,15 @@
#define CALCULATOR_CALC BUTTON_SELECT
#define CALCULATOR_CLEAR BUTTON_A
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
-#define CALCULATOR_UP BUTTON_UP
-#define CALCULATOR_DOWN BUTTON_DOWN
-#define CALCULATOR_QUIT BUTTON_POWER
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
+#define CALCULATOR_UP BUTTON_UP
+#define CALCULATOR_DOWN BUTTON_DOWN
+#define CALCULATOR_QUIT BUTTON_POWER
#define CALCULATOR_INPUT_CALC_PRE BUTTON_SELECT
-#define CALCULATOR_INPUT (BUTTON_SELECT|BUTTON_REL)
-#define CALCULATOR_CALC BUTTON_SELECT
-#define CALCULATOR_CLEAR BUTTON_REC
+#define CALCULATOR_INPUT (BUTTON_SELECT|BUTTON_REL)
+#define CALCULATOR_CALC (BUTTON_SELECT|BUTTON_REPEAT)
+#define CALCULATOR_CLEAR BUTTON_REC
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index 73c4976..56d2709 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -119,7 +119,8 @@
#define CHC_SETTINGS_OK BUTTON_SELECT
#define CHC_SETTINGS_CANCEL BUTTON_POWER
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_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 0b06ace..ae6e3bf 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1028,6 +1028,14 @@
#define CHIP8_KEY6 BUTTON_RIGHT
#define CHIP8_KEY8 BUTTON_SCROLL_DOWN
+#elif CONFIG_KEYPAD == SANSA_C200_PAD
+#define CHIP8_OFF BUTTON_POWER
+#define CHIP8_KEY2 BUTTON_VOL_UP
+#define CHIP8_KEY4 BUTTON_LEFT
+#define CHIP8_KEY5 BUTTON_SELECT
+#define CHIP8_KEY6 BUTTON_RIGHT
+#define CHIP8_KEY8 BUTTON_VOL_DOWN
+
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define CHIP8_OFF BUTTON_POWER
#define CHIP8_KEY2 BUTTON_SCROLL_UP
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index 5e27a5e..46acf2c 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -64,7 +64,8 @@
#define ACTION BUTTON_RIGHT
#define ACTIONTEXT "RIGHT"
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_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 f5158e9..3294b37 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -163,6 +163,21 @@
#define CUBE_PAUSE (BUTTON_SELECT|BUTTON_REL)
#define CUBE_HIGHSPEED BUTTON_REC
+#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
+#define CUBE_QUIT BUTTON_POWER
+#define CUBE_X_INC BUTTON_LEFT
+#define CUBE_X_DEC BUTTON_RIGHT
+#define CUBE_Y_INC BUTTON_VOL_UP
+#define CUBE_Y_DEC BUTTON_VOL_DOWN
+#define CUBE_Z_INC BUTTON_UP
+#define CUBE_Z_DEC BUTTON_DOWN
+#define CUBE_MODE_PRE BUTTON_SELECT
+#define CUBE_MODE (BUTTON_SELECT|BUTTON_REPEAT)
+#define CUBE_PAUSE_PRE BUTTON_SELECT
+#define CUBE_PAUSE (BUTTON_SELECT|BUTTON_REL)
+#define CUBE_HIGHSPEED BUTTON_REC
+
+
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define CUBE_QUIT BUTTON_POWER
#define CUBE_X_INC BUTTON_LEFT
diff --git a/apps/plugins/dict.c b/apps/plugins/dict.c
index 32793cb..257a0c6 100644
--- a/apps/plugins/dict.c
+++ b/apps/plugins/dict.c
@@ -114,7 +114,8 @@
#define LP_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define LP_QUIT BUTTON_POWER
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define LP_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define LP_QUIT BUTTON_POWER
diff --git a/apps/plugins/disktidy.c b/apps/plugins/disktidy.c
index aba78af..a1c51d7 100644
--- a/apps/plugins/disktidy.c
+++ b/apps/plugins/disktidy.c
@@ -66,7 +66,8 @@
#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define TIDY_STOP BUTTON_POWER
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define TIDY_STOP BUTTON_POWER
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index 24079a0..32990f3 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -192,6 +192,16 @@
#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
+#define DOOMBUTTON_LEFT BUTTON_LEFT
+#define DOOMBUTTON_RIGHT BUTTON_RIGHT
+#define DOOMBUTTON_SHOOT BUTTON_SELECT
+#define DOOMBUTTON_OPEN BUTTON_REC
+#define DOOMBUTTON_ESC BUTTON_POWER
+#define DOOMBUTTON_ENTER BUTTON_SELECT
+#define DOOMBUTTON_WEAPON BUTTON_VOL_UP
#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define DOOMBUTTON_UP BUTTON_UP
#define DOOMBUTTON_DOWN BUTTON_DOWN
diff --git a/apps/plugins/fire.c b/apps/plugins/fire.c
index 5d6f061..7b8a104 100644
--- a/apps/plugins/fire.c
+++ b/apps/plugins/fire.c
@@ -96,7 +96,8 @@
#define FIRE_INCREASE_MULT BUTTON_UP
#define FIRE_DECREASE_MULT BUTTON_DOWN
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define FIRE_QUIT BUTTON_POWER
#define FIRE_SWITCH_FLAMES_TYPE BUTTON_LEFT
#define FIRE_SWITCH_FLAMES_MOVING BUTTON_RIGHT
diff --git a/apps/plugins/fireworks.c b/apps/plugins/fireworks.c
index e8439df..bedf82f 100644
--- a/apps/plugins/fireworks.c
+++ b/apps/plugins/fireworks.c
@@ -57,7 +57,8 @@
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
#define BTN_MENU BUTTON_MENU
#define BTN_FIRE BUTTON_SELECT
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define BTN_MENU BUTTON_POWER
#define BTN_FIRE BUTTON_SELECT
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index cb4ab88..dde53a0 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -95,7 +95,8 @@
#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_C200_PAD)
#define JEWELS_UP BUTTON_UP
#define JEWELS_DOWN BUTTON_DOWN
#define JEWELS_LEFT BUTTON_LEFT
@@ -159,6 +160,13 @@
#define YOFS 6
#define NUM_SCORES 10
++/* use 10x10 tiles (Sansa c200) */
+#elif (LCD_HEIGHT == 80) && (LCD_WIDTH == 132)
+#define TILE_WIDTH 10
+#define TILE_HEIGHT 10
+#define YOFS 0
+#define NUM_SCORES 8
+
/* use 10x8 tiles (iFP 700) */
#elif (LCD_HEIGHT == 64) && (LCD_WIDTH == 128)
#define TILE_WIDTH 10
@@ -1480,7 +1488,8 @@
rb->lcd_puts(0, 9, "SELECT to select");
rb->lcd_puts(0, 10, "Long SELECT to show menu");
rb->lcd_puts(0, 11, "POWER to cancel");
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif CONFIG_KEYPAD == SANSA_E200_PAD \
+ || CONFIG_KEYPAD == SANSA_C200_PAD
rb->lcd_puts(0, 2, "Swap pairs of jewels to");
rb->lcd_puts(0, 3, "form connected segments");
rb->lcd_puts(0, 4, "of three or more of the");
diff --git a/apps/plugins/jpeg.c b/apps/plugins/jpeg.c
index 2c8942f..09f7455 100644
--- a/apps/plugins/jpeg.c
+++ b/apps/plugins/jpeg.c
@@ -142,6 +142,21 @@
#define JPEG_PREVIOUS BUTTON_SCROLL_UP
#define JPEG_PREVIOUS_REPEAT (BUTTON_SCROLL_UP|BUTTON_REPEAT)
+#elif CONFIG_KEYPAD == SANSA_C200_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_REC
+#define JPEG_NEXT BUTTON_VOL_UP
+#define JPEG_NEXT_REPEAT (BUTTON_VOL_UP|BUTTON_REPEAT)
+#define JPEG_PREVIOUS BUTTON_VOL_DOWN
+#define JPEG_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT)
+
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define JPEG_ZOOM_PRE BUTTON_PLAY
#define JPEG_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
diff --git a/apps/plugins/lib/pluginlib_actions.h b/apps/plugins/lib/pluginlib_actions.h
index c38745a..7b2b0a4 100644
--- a/apps/plugins/lib/pluginlib_actions.h
+++ b/apps/plugins/lib/pluginlib_actions.h
@@ -94,7 +94,8 @@
|| (CONFIG_KEYPAD == GIGABEAT_PAD) \
|| (CONFIG_KEYPAD == RECORDER_PAD) \
|| (CONFIG_KEYPAD == ARCHOS_AV300_PAD) \
- || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD)
+ || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) \
+ || (CONFIG_KEYPAD == SANSA_C200_PAD)
{ PLA_UP, BUTTON_UP, BUTTON_NONE},
{ PLA_DOWN, BUTTON_DOWN, BUTTON_NONE},
{ PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
@@ -142,6 +143,7 @@
{ PLA_DOWN_REPEAT, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
{ PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
{ PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
+
#else
#error pluginlib_actions: Unsupported keypad
#endif
@@ -191,14 +193,15 @@
{ PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
{ PLA_FIRE, BUTTON_PLAY, BUTTON_NONE},
{ PLA_FIRE_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
-#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
+#elif (CONFIG_KEYPAD == SANSA_C200_PAD) \
+ || (CONFIG_KEYPAD == ARCHOS_AV300_PAD)
{ PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
{ PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
{ PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
{ 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)
{ PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
{ PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
{ PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
@@ -285,6 +288,12 @@
{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
+ {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 == IRIVER_H10_PAD
{PLA_QUIT, BUTTON_POWER, BUTTON_NONE},
{PLA_START, BUTTON_PLAY, BUTTON_NONE},
diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c
index 6a37e36..88821c8 100644
--- a/apps/plugins/logo.c
+++ b/apps/plugins/logo.c
@@ -210,7 +210,8 @@
#define LP_DEC_Y BUTTON_DOWN
#define LP_INC_Y BUTTON_UP
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_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 48450ae..b1f243b 100644
--- a/apps/plugins/mandelbrot.c
+++ b/apps/plugins/mandelbrot.c
@@ -132,6 +132,18 @@
#define MANDELBROT_MAXITER_DEC (BUTTON_SELECT | BUTTON_LEFT)
#define MANDELBROT_RESET BUTTON_REC
+#elif CONFIG_KEYPAD == SANSA_C200_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_VOL_UP
+#define MANDELBROT_ZOOM_OUT BUTTON_VOL_DOWN
+#define MANDELBROT_MAXITER_INC (BUTTON_SELECT | BUTTON_RIGHT)
+#define MANDELBROT_MAXITER_DEC (BUTTON_SELECT | BUTTON_LEFT)
+#define MANDELBROT_RESET BUTTON_REC
+
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define MANDELBROT_QUIT BUTTON_POWER
#define MANDELBROT_UP BUTTON_SCROLL_UP
diff --git a/apps/plugins/maze.c b/apps/plugins/maze.c
index 2948eb2..8967f59 100644
--- a/apps/plugins/maze.c
+++ b/apps/plugins/maze.c
@@ -89,6 +89,9 @@
#if ( LCD_WIDTH == 112 )
#define MAZE_WIDTH 16
#define MAZE_HEIGHT 12
+#elif( LCD_WIDTH == 132 )
+#define MAZE_WIDTH 26
+#define MAZE_HEIGHT 16
#else
#define MAZE_WIDTH 32
#define MAZE_HEIGHT 24
diff --git a/apps/plugins/mazezam.c b/apps/plugins/mazezam.c
index 48c564a..41edd3a 100644
--- a/apps/plugins/mazezam.c
+++ b/apps/plugins/mazezam.c
@@ -116,7 +116,8 @@
#define MAZEZAM_QUIT BUTTON_POWER
#define MAZEZAM_QUIT_KEYNAME "[POWER]"
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define MAZEZAM_UP BUTTON_UP
#define MAZEZAM_DOWN BUTTON_DOWN
#define MAZEZAM_LEFT BUTTON_LEFT
diff --git a/apps/plugins/midiplay.c b/apps/plugins/midiplay.c
index 59594a9..f8a6929 100644
--- a/apps/plugins/midiplay.c
+++ b/apps/plugins/midiplay.c
@@ -55,7 +55,8 @@
#define BTN_UP BUTTON_UP
#define BTN_DOWN BUTTON_DOWN
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define BTN_QUIT BUTTON_POWER
#define BTN_RIGHT BUTTON_RIGHT
#define BTN_UP BUTTON_UP
diff --git a/apps/plugins/mosaique.c b/apps/plugins/mosaique.c
index bfcd53a..45d2319 100644
--- a/apps/plugins/mosaique.c
+++ b/apps/plugins/mosaique.c
@@ -91,7 +91,8 @@
#define MOSAIQUE_SPEED BUTTON_A
#define MOSAIQUE_RESTART BUTTON_SELECT
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_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 55cfac3..453c755 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2343,7 +2343,8 @@
#define MP3ENC_NEXT BUTTON_DOWN
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_SELECT
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define MP3ENC_PREV BUTTON_UP
#define MP3ENC_NEXT BUTTON_DOWN
#define MP3ENC_DONE BUTTON_POWER
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index 481454d..af0567c 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -160,6 +160,13 @@
#define MPEG_VOLDOWN BUTTON_SCROLL_UP
#define MPEG_VOLUP BUTTON_SCROLL_DOWN
+#elif CONFIG_KEYPAD == SANSA_C200_PAD
+#define MPEG_MENU BUTTON_SELECT
+#define MPEG_STOP BUTTON_POWER
+#define MPEG_PAUSE BUTTON_UP
+#define MPEG_VOLDOWN BUTTON_VOL_DOWN
+#define MPEG_VOLUP BUTTON_VOL_UP
+
#else
#error MPEGPLAYER: Unsupported keypad
#endif
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c
index bd16341..ee4b089 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -109,6 +109,17 @@
#define OSCILLOSCOPE_VOL_UP BUTTON_SCROLL_DOWN
#define OSCILLOSCOPE_VOL_DOWN BUTTON_SCROLL_UP
+#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
+#define OSCILLOSCOPE_QUIT BUTTON_POWER
+#define OSCILLOSCOPE_DRAWMODE BUTTON_SELECT
+#define OSCILLOSCOPE_ADVMODE BUTTON_DOWN
+#define OSCILLOSCOPE_ORIENTATION BUTTON_UP
+#define OSCILLOSCOPE_PAUSE BUTTON_REC
+#define OSCILLOSCOPE_SPEED_UP BUTTON_RIGHT
+#define OSCILLOSCOPE_SPEED_DOWN BUTTON_LEFT
+#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
+#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
+
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
#define OSCILLOSCOPE_QUIT BUTTON_POWER
#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_SELECT
diff --git a/apps/plugins/plasma.c b/apps/plugins/plasma.c
index 1fae239..76c5412 100644
--- a/apps/plugins/plasma.c
+++ b/apps/plugins/plasma.c
@@ -63,7 +63,8 @@
#define PLASMA_INCREASE_FREQUENCY BUTTON_UP
#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define PLASMA_QUIT BUTTON_POWER
#define PLASMA_INCREASE_FREQUENCY BUTTON_UP
#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN
@@ -90,7 +91,8 @@
#define PLASMA_REGEN_COLORS BUTTON_PLAY
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define PLASMA_REGEN_COLORS BUTTON_PLAY
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_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 b88b95b..79069b9 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -100,7 +100,8 @@
#define PONG_RIGHT_UP BUTTON_VOL_UP
#define PONG_RIGHT_DOWN BUTTON_VOL_DOWN
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_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.c b/apps/plugins/reversi/reversi-gui.c
index 374cc0f..f99f616 100644
--- a/apps/plugins/reversi/reversi-gui.c
+++ b/apps/plugins/reversi/reversi-gui.c
@@ -67,6 +67,14 @@
#define CELL_HEIGHT 6
#define SMALL_BOARD
+#elif (LCD_HEIGHT==80) && (LCD_WIDTH==132)
+/* Sansa C200 - 132x80, 8 cells @ 9x9 with 9 border lines */
+
+/* Internal dimensions of a cell */
+#define CELL_WIDTH 8
+#define CELL_HEIGHT 8
+#define SMALL_BOARD
+
#elif (LCD_HEIGHT==110) && (LCD_WIDTH==138)
/* iPod Mini - 138x110, 8 cells @ 10x10 with 9 border lines */
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h
index b82e40d..5543ea8 100644
--- a/apps/plugins/reversi/reversi-gui.h
+++ b/apps/plugins/reversi/reversi-gui.h
@@ -95,7 +95,8 @@
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_REW
#define REVERSI_BUTTON_MENU BUTTON_PLAY
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define REVERSI_BUTTON_QUIT BUTTON_POWER
#define REVERSI_BUTTON_UP BUTTON_UP
#define REVERSI_BUTTON_DOWN BUTTON_DOWN
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index 8625e35..0b3382f 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -121,6 +121,18 @@
#define ROCKBLOX_DROP BUTTON_SELECT
#define ROCKBLOX_RESTART BUTTON_REC
+#elif CONFIG_KEYPAD == SANSA_C200_PAD
+
+#define ROCKBLOX_OFF BUTTON_POWER
+#define ROCKBLOX_ROTATE_RIGHT BUTTON_UP
+#define ROCKBLOX_ROTATE_RIGHT2 BUTTON_VOL_DOWN
+#define ROCKBLOX_ROTATE_LEFT BUTTON_VOL_UP
+#define ROCKBLOX_DOWN BUTTON_DOWN
+#define ROCKBLOX_LEFT BUTTON_LEFT
+#define ROCKBLOX_RIGHT BUTTON_RIGHT
+#define ROCKBLOX_DROP BUTTON_SELECT
+#define ROCKBLOX_RESTART BUTTON_REC
+
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define ROCKBLOX_OFF BUTTON_POWER
@@ -259,6 +271,19 @@
#define LEVEL_Y 49
#define LINES_Y 82
+#elif (LCD_WIDTH == 132) && (LCD_HEIGHT == 80)
+
+#define BLOCK_WIDTH 4
+#define BLOCK_HEIGHT 4
+#define BOARD_X 10
+#define BOARD_Y 0
+#define PREVIEW_X 89
+#define PREVIEW_Y 61
+#define LABEL_X 78
+#define SCORE_Y 10
+#define LEVEL_Y 30
+#define LINES_Y 50
+
#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 64)
#define BLOCK_WIDTH 3
diff --git a/apps/plugins/rockpaint.c b/apps/plugins/rockpaint.c
index 3038a06..41519f6 100644
--- a/apps/plugins/rockpaint.c
+++ b/apps/plugins/rockpaint.c
@@ -82,7 +82,8 @@
#define ROCKPAINT_LEFT BUTTON_LEFT
#define ROCKPAINT_RIGHT BUTTON_RIGHT
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define ROCKPAINT_QUIT BUTTON_POWER
#define ROCKPAINT_DRAW BUTTON_SELECT
#define ROCKPAINT_MENU ( BUTTON_SELECT | BUTTON_POWER )
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index b819f35..17a96ba 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -77,7 +77,8 @@
#define PUZZLE_SHUFFLE BUTTON_SELECT
#define PUZZLE_PICTURE BUTTON_A
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define PUZZLE_QUIT BUTTON_POWER
#define PUZZLE_UP BUTTON_UP
#define PUZZLE_DOWN BUTTON_DOWN
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index eeca6bd..2beeaa4 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -83,7 +83,8 @@
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_SELECT
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define SNAKE_QUIT BUTTON_POWER
#define SNAKE_UP BUTTON_UP
#define SNAKE_DOWN BUTTON_DOWN
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index 385af15..1d13b05 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -232,7 +232,8 @@
#define SNAKE2_PLAYPAUSE BUTTON_SELECT
#define SNAKE2_PLAYPAUSE_TEXT "Select"
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define SNAKE2_UP BUTTON_UP
#define SNAKE2_DOWN BUTTON_DOWN
#define SNAKE2_QUIT BUTTON_POWER
diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c
index c815471..6078f87 100644
--- a/apps/plugins/snow.c
+++ b/apps/plugins/snow.c
@@ -46,7 +46,8 @@
#define SNOW_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define SNOW_QUIT BUTTON_POWER
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define SNOW_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define SNOW_QUIT BUTTON_POWER
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index 05ff25b..ae1294c 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -213,6 +213,25 @@
# 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
+# define SOL_DOWN BUTTON_DOWN
+# define SOL_LEFT BUTTON_LEFT
+# define SOL_RIGHT BUTTON_RIGHT
+# define SOL_MOVE_PRE BUTTON_SELECT
+# define SOL_MOVE (BUTTON_SELECT | BUTTON_REL)
+# define SOL_DRAW BUTTON_VOL_DOWN
+# define SOL_REM2CUR BUTTON_REC
+# define SOL_CUR2STACK_PRE BUTTON_SELECT
+# define SOL_CUR2STACK (BUTTON_SELECT | BUTTON_REPEAT)
+# define SOL_REM2STACK BUTTON_VOL_UP
+# define HK_MOVE "SELECT"
+# define HK_DRAW "REC"
+# define HK_REM2CUR "LEFT"
+# define HK_CUR2STACK "DOUBLE SELECT"
+# define HK_REM2STACK "RIGHT"
+
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
# define SOL_QUIT BUTTON_POWER
# define SOL_UP BUTTON_SCROLL_UP
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index 1278a61..d98041d 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -135,6 +135,19 @@
#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
+#define AST_THRUST_REP (BUTTON_UP | BUTTON_REPEAT)
+#define AST_THRUST BUTTON_UP
+#define AST_HYPERSPACE BUTTON_DOWN
+#define AST_LEFT BUTTON_LEFT
+#define AST_LEFT_REP (BUTTON_LEFT | BUTTON_REPEAT)
+#define AST_RIGHT BUTTON_RIGHT
+#define AST_RIGHT_REP (BUTTON_RIGHT | BUTTON_REPEAT)
+#define AST_FIRE BUTTON_SELECT
+#define AST_FIRE_REP (BUTTON_SELECT | BUTTON_REPEAT)
+
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define AST_PAUSE BUTTON_PLAY
#define AST_QUIT BUTTON_POWER
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index c9d31a6..1c2501d 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -144,7 +144,8 @@
#define STAR_LEVEL_REPEAT BUTTON_A
#define STAR_MENU_RUN BUTTON_SELECT
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define STAR_QUIT BUTTON_POWER
#define STAR_UP BUTTON_UP
diff --git a/apps/plugins/starfield.c b/apps/plugins/starfield.c
index 278d24f..333fd32 100644
--- a/apps/plugins/starfield.c
+++ b/apps/plugins/starfield.c
@@ -57,7 +57,8 @@
#define STARFIELD_INCREASE_NB_STARS BUTTON_RIGHT
#define STARFIELD_DECREASE_NB_STARS BUTTON_LEFT
#define STARFIELD_TOGGLE_COLOR BUTTON_SELECT
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_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 a33331a..03dc9fa 100644
--- a/apps/plugins/stats.c
+++ b/apps/plugins/stats.c
@@ -53,7 +53,8 @@
#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define STATS_STOP BUTTON_POWER
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define STATS_STOP BUTTON_POWER
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index 6f18617..d36a774 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -100,10 +100,11 @@
#define STOPWATCH_LAP_TIMER BUTTON_MENU
#define STOPWATCH_SCROLL_UP BUTTON_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define STOPWATCH_QUIT BUTTON_POWER
-#define STOPWATCH_START_STOP BUTTON_LEFT
-#define STOPWATCH_RESET_TIMER BUTTON_REC
+#define STOPWATCH_START_STOP BUTTON_RIGHT
+#define STOPWATCH_RESET_TIMER BUTTON_LEFT
#define STOPWATCH_LAP_TIMER BUTTON_SELECT
#define STOPWATCH_SCROLL_UP BUTTON_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
diff --git a/apps/plugins/sudoku/sudoku.c b/apps/plugins/sudoku/sudoku.c
index 9485f2d..1d548ac 100644
--- a/apps/plugins/sudoku/sudoku.c
+++ b/apps/plugins/sudoku/sudoku.c
@@ -108,6 +108,14 @@
#define CELL_HEIGHT 6
#define SMALL_BOARD
+#elif ((LCD_HEIGHT==80) && (LCD_WIDTH==132))
+/* C200, 9 cells @ 8x8 with 8 border lines */
+
+/* Internal dimensions of a cell */
+#define CELL_WIDTH 8
+#define CELL_HEIGHT 8
+#define SMALL_BOARD
+
#elif (LCD_HEIGHT==110) && (LCD_WIDTH==138)
/* iPod Mini - 138x110, 9 cells @ 10x10 with 14 border lines */
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h
index d41c0b8..f888bd7 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -122,6 +122,20 @@
#define SUDOKU_BUTTON_MENU BUTTON_SELECT
#define SUDOKU_BUTTON_POSSIBLE BUTTON_REC
+#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
+#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
+#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
+#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_VOL_DOWN
+#define SUDOKU_BUTTON_TOGGLE BUTTON_VOL_UP
+#define SUDOKU_BUTTON_ALTTOGGLE BUTTON_SELECT
+#define SUDOKU_BUTTON_MENU_PRE BUTTON_POWER
+#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
+#define SUDOKU_BUTTON_POSSIBLE BUTTON_REC
+
#elif
#error SUDOKU: Unsupported keypad
#endif
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c
index 055ace0..7f87b7c 100644
--- a/apps/plugins/viewer.c
+++ b/apps/plugins/viewer.c
@@ -184,6 +184,18 @@
#define VIEWER_LINE_UP BUTTON_SCROLL_UP
#define VIEWER_LINE_DOWN BUTTON_SCROLL_DOWN
+/* Sansa C200 keys */
+#elif CONFIG_KEYPAD == SANSA_C200_PAD
+#define VIEWER_QUIT BUTTON_POWER
+#define VIEWER_PAGE_UP BUTTON_VOL_UP
+#define VIEWER_PAGE_DOWN BUTTON_VOL_DOWN
+#define VIEWER_SCREEN_LEFT BUTTON_LEFT
+#define VIEWER_SCREEN_RIGHT BUTTON_RIGHT
+#define VIEWER_MENU BUTTON_SELECT
+#define VIEWER_AUTOSCROLL BUTTON_REC
+#define VIEWER_LINE_UP BUTTON_UP
+#define VIEWER_LINE_DOWN BUTTON_DOWN
+
/* iriver H10 keys */
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define VIEWER_QUIT BUTTON_POWER
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index f054a59..9175e1d 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -94,6 +94,15 @@
#define VUMETER_UP BUTTON_SCROLL_DOWN
#define VUMETER_DOWN BUTTON_SCROLL_UP
+#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
+#define VUMETER_QUIT BUTTON_POWER
+#define VUMETER_HELP BUTTON_REC
+#define VUMETER_MENU BUTTON_SELECT
+#define VUMETER_MENU_EXIT BUTTON_SELECT
+#define VUMETER_MENU_EXIT2 BUTTON_POWER
+#define VUMETER_UP BUTTON_VOL_UP
+#define VUMETER_DOWN BUTTON_VOL_DOWN
+
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
#define VUMETER_QUIT BUTTON_POWER
#define VUMETER_HELP BUTTON_PLAY
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 1c78f33..c05918e 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -148,7 +148,8 @@
#define WORMS_TEXT "Left/Right"
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define BTN_DIR_UP BUTTON_UP
#define BTN_DIR_DOWN BUTTON_DOWN
@@ -182,6 +183,11 @@
#define ARGH_SIZE 4
#define SPEED 14
#define MAX_WORM_SEGMENTS 128
+#elif (LCD_WIDTH == 132) && (LCD_HEIGHT == 80)
+#define FOOD_SIZE 3
+#define ARGH_SIZE 4
+#define SPEED 14
+#define MAX_WORM_SEGMENTS 128
#elif (LCD_WIDTH == 138) && (LCD_HEIGHT == 110)
#define FOOD_SIZE 4
#define ARGH_SIZE 5
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index c91e20a..f51e98e 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -74,7 +74,8 @@
#define DOWN BUTTON_DOWN
#define PAUSE BUTTON_A
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
#define QUIT BUTTON_POWER
#define LEFT BUTTON_LEFT
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index 603869d..6af8471 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -77,7 +77,8 @@
#define ZX_UP BUTTON_SCROLL_UP
#define ZX_DOWN BUTTON_SCROLL_DOWN
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_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 5bea491..2b1d171 100644
--- a/apps/plugins/zxbox/zxbox_keyb.c
+++ b/apps/plugins/zxbox/zxbox_keyb.c
@@ -101,7 +101,8 @@
#define KBD_UP BUTTON_SCROLL_UP
#define KBD_DOWN BUTTON_SCROLL_DOWN
-#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
+(CONFIG_KEYPAD == SANSA_C200_PAD)
/* TODO: Check keyboard mappings */
diff --git a/docs/CREDITS b/docs/CREDITS
index 9edfa7f..edbea35 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -331,6 +331,8 @@
Costas Calamvokis
Catalin Patulea
Peter Harley
+Max Kelley
+
The libmad team
The wavpack team
The ffmpeg team
diff --git a/tools/configure b/tools/configure
index a928e30..63e5512 100755
--- a/tools/configure
+++ b/tools/configure
@@ -1349,7 +1349,7 @@
appextra="recorder:gui"
archosrom=""
flash=""
- plugins=""
+ plugins="yes"
swcodec="yes"
boottool="$rootdir/tools/scramble -mi4v3 -model=c200 -type=RBBL"
bootoutput="firmware.mi4"