summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/keymaps/keymap-c200.c10
-rw-r--r--apps/plugins/SOURCES14
-rw-r--r--apps/plugins/SUBDIRS6
-rw-r--r--apps/plugins/battery_bench.c3
-rw-r--r--apps/plugins/bitmaps/native/SOURCES16
-rwxr-xr-xapps/plugins/bitmaps/native/clock_binary.132x80x16.bmpbin0 -> 2854 bytes
-rwxr-xr-xapps/plugins/bitmaps/native/clock_digits.132x80x16.bmpbin0 -> 14406 bytes
-rwxr-xr-xapps/plugins/bitmaps/native/clock_logo.132x80x16.bmpbin0 -> 26190 bytes
-rwxr-xr-xapps/plugins/bitmaps/native/clock_messages.132x80x16.bmpbin0 -> 33318 bytes
-rwxr-xr-xapps/plugins/bitmaps/native/clock_segments.132x80x16.bmpbin0 -> 14406 bytes
-rwxr-xr-xapps/plugins/bitmaps/native/clock_smalldigits.132x80x16.bmpbin0 -> 4786 bytes
-rwxr-xr-xapps/plugins/bitmaps/native/clock_smallsegments.132x80x16.bmpbin0 -> 4786 bytes
-rwxr-xr-xapps/plugins/bitmaps/native/jewels.132x80x16.bmpbin0 -> 7414 bytes
-rwxr-xr-xapps/plugins/bitmaps/native/rockblox_background.132x80x16.bmpbin0 -> 31734 bytes
-rwxr-xr-xapps/plugins/bitmaps/native/sudoku_inverse.132x80x16.bmpbin0 -> 2358 bytes
-rwxr-xr-xapps/plugins/bitmaps/native/sudoku_normal.132x80x16.bmpbin0 -> 3894 bytes
-rwxr-xr-xapps/plugins/bitmaps/native/sudoku_start.132x80x16.bmpbin0 -> 3894 bytes
-rw-r--r--apps/plugins/blackjack.c15
-rw-r--r--apps/plugins/bounce.c6
-rw-r--r--apps/plugins/calculator.c15
-rw-r--r--apps/plugins/chessclock.c3
-rw-r--r--apps/plugins/chip8.c8
-rw-r--r--apps/plugins/chopper.c3
-rw-r--r--apps/plugins/cube.c15
-rw-r--r--apps/plugins/dict.c3
-rw-r--r--apps/plugins/disktidy.c3
-rw-r--r--apps/plugins/doom/i_video.c10
-rw-r--r--apps/plugins/fire.c3
-rw-r--r--apps/plugins/fireworks.c3
-rw-r--r--apps/plugins/jewels.c13
-rw-r--r--apps/plugins/jpeg.c15
-rw-r--r--apps/plugins/lib/pluginlib_actions.h15
-rw-r--r--apps/plugins/logo.c3
-rw-r--r--apps/plugins/mandelbrot.c12
-rw-r--r--apps/plugins/maze.c3
-rw-r--r--apps/plugins/mazezam.c3
-rw-r--r--apps/plugins/midiplay.c3
-rw-r--r--apps/plugins/mosaique.c3
-rw-r--r--apps/plugins/mp3_encoder.c3
-rw-r--r--apps/plugins/mpegplayer/mpegplayer.c7
-rw-r--r--apps/plugins/oscilloscope.c11
-rw-r--r--apps/plugins/plasma.c6
-rw-r--r--apps/plugins/pong.c3
-rw-r--r--apps/plugins/reversi/reversi-gui.c8
-rw-r--r--apps/plugins/reversi/reversi-gui.h3
-rw-r--r--apps/plugins/rockblox.c25
-rw-r--r--apps/plugins/rockpaint.c3
-rw-r--r--apps/plugins/sliding_puzzle.c3
-rw-r--r--apps/plugins/snake.c3
-rw-r--r--apps/plugins/snake2.c3
-rw-r--r--apps/plugins/snow.c3
-rw-r--r--apps/plugins/solitaire.c19
-rw-r--r--apps/plugins/spacerocks.c13
-rw-r--r--apps/plugins/star.c3
-rw-r--r--apps/plugins/starfield.c3
-rw-r--r--apps/plugins/stats.c3
-rw-r--r--apps/plugins/stopwatch.c7
-rw-r--r--apps/plugins/sudoku/sudoku.c8
-rw-r--r--apps/plugins/sudoku/sudoku.h14
-rw-r--r--apps/plugins/viewer.c12
-rw-r--r--apps/plugins/vu_meter.c9
-rw-r--r--apps/plugins/wormlet.c8
-rw-r--r--apps/plugins/xobox.c3
-rw-r--r--apps/plugins/zxbox/keymaps.h3
-rw-r--r--apps/plugins/zxbox/zxbox_keyb.c3
-rw-r--r--docs/CREDITS2
-rwxr-xr-xtools/configure2
67 files changed, 344 insertions, 55 deletions
diff --git a/apps/keymaps/keymap-c200.c b/apps/keymaps/keymap-c200.c
index 9a4c2b4c75..6e541579f7 100644
--- a/apps/keymaps/keymap-c200.c
+++ b/apps/keymaps/keymap-c200.c
@@ -269,19 +269,16 @@ static const struct button_mapping button_context_radio[] = {
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 @@ static const struct button_mapping button_context_keyboard[] = {
{ 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 31d94d5811..8479cd8b9b 100644
--- a/apps/plugins/SOURCES
+++ b/apps/plugins/SOURCES
@@ -34,7 +34,9 @@ wavrecord.c
#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 @@ plasma.c
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 @@ chip8.c
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 11643a5b2f..f537fb8965 100644
--- a/apps/plugins/SUBDIRS
+++ b/apps/plugins/SUBDIRS
@@ -16,7 +16,9 @@ rockboy
/* For all targets with a bitmap display */
#ifdef HAVE_LCD_BITMAP
+#ifndef SANSA_C200
chessbox
+#endif
sudoku
reversi
#endif
@@ -27,8 +29,8 @@ zxbox
#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 85377e22a9..43bfc7255f 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -80,7 +80,8 @@ PLUGIN_HEADER
#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 93939c95f7..55ad8392c3 100644
--- a/apps/plugins/bitmaps/native/SOURCES
+++ b/apps/plugins/bitmaps/native/SOURCES
@@ -167,6 +167,14 @@ clock_segments.138x110x2.bmp
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
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.176x220x16.bmp
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_inverse.112x64x1.bmp
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 0000000000..fcf7097f8a
--- /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 0000000000..eff4c370a8
--- /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 0000000000..b3d620954e
--- /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 0000000000..e8a25d5bf5
--- /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 0000000000..0b9d436e1c
--- /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 0000000000..e82dbe8727
--- /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 0000000000..e4bd944865
--- /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 0000000000..c6c8e04eba
--- /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 0000000000..d4d720f088
--- /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 0000000000..491593c3a0
--- /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 0000000000..ff2a824464
--- /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 0000000000..ab6e978e0b
--- /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 c4b424143d..2ece48d75d 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -173,6 +173,21 @@ PLUGIN_HEADER
#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 eac6933815..9373050292 100644
--- a/apps/plugins/bounce.c
+++ b/apps/plugins/bounce.c
@@ -82,6 +82,12 @@ PLUGIN_HEADER
#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 e16f58a412..103ce50a07 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -176,14 +176,15 @@ PLUGIN_HEADER
#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 73c49767f9..56d2709bb7 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -119,7 +119,8 @@ PLUGIN_HEADER
#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 0b06ace784..ae6e3bfd29 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1028,6 +1028,14 @@ STATIC void chip8 (void)
#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 5e27a5e6e7..46acf2c74e 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -64,7 +64,8 @@ Still To do:
#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 f5158e9b7a..3294b37fab 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -163,6 +163,21 @@ PLUGIN_HEADER
#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 32793cbc9f..257a0c6147 100644
--- a/apps/plugins/dict.c
+++ b/apps/plugins/dict.c
@@ -114,7 +114,8 @@ long reverse (long N) {
#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 aba78afb3e..a1c51d762a 100644
--- a/apps/plugins/disktidy.c
+++ b/apps/plugins/disktidy.c
@@ -66,7 +66,8 @@ enum tidy_system
#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 24079a0f71..32990f3923 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -192,6 +192,16 @@ void I_ShutdownGraphics(void)
#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 5d6f0618a7..7b8a104ec0 100644
--- a/apps/plugins/fire.c
+++ b/apps/plugins/fire.c
@@ -96,7 +96,8 @@ static unsigned char draw_buffer[8*LCD_WIDTH];
#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 e8439dff15..bedf82ffda 100644
--- a/apps/plugins/fireworks.c
+++ b/apps/plugins/fireworks.c
@@ -57,7 +57,8 @@ static struct plugin_api* rb;
#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 cb4ab88048..dde53a0933 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -95,7 +95,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_C200_PAD)
#define JEWELS_UP BUTTON_UP
#define JEWELS_DOWN BUTTON_DOWN
#define JEWELS_LEFT BUTTON_LEFT
@@ -159,6 +160,13 @@ PLUGIN_HEADER
#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 @@ static int jewels_main(struct game_context* bj) {
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 2c8942f8bc..09f7455f8b 100644
--- a/apps/plugins/jpeg.c
+++ b/apps/plugins/jpeg.c
@@ -142,6 +142,21 @@ PLUGIN_HEADER
#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 c38745a4f1..7b2b0a42e2 100644
--- a/apps/plugins/lib/pluginlib_actions.h
+++ b/apps/plugins/lib/pluginlib_actions.h
@@ -94,7 +94,8 @@ static const struct button_mapping generic_directions[] =
|| (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 @@ static const struct button_mapping generic_directions[] =
{ 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 @@ static const struct button_mapping generic_left_right_fire[] =
{ 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 @@ static const struct button_mapping generic_actions[] =
{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 6a37e3602d..88821c8a78 100644
--- a/apps/plugins/logo.c
+++ b/apps/plugins/logo.c
@@ -210,7 +210,8 @@ const unsigned char rockbox16x7[] = {
#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 48450ae455..b1f243b01c 100644
--- a/apps/plugins/mandelbrot.c
+++ b/apps/plugins/mandelbrot.c
@@ -132,6 +132,18 @@ PLUGIN_HEADER
#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 2948eb2aec..8967f59132 100644
--- a/apps/plugins/maze.c
+++ b/apps/plugins/maze.c
@@ -89,6 +89,9 @@ const struct button_mapping *plugin_contexts[]
#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 48c564ab8a..41edd3a5e5 100644
--- a/apps/plugins/mazezam.c
+++ b/apps/plugins/mazezam.c
@@ -116,7 +116,8 @@ MEM_FUNCTION_WRAPPERS(rb);
#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 59594a97f7..f8a6929661 100644
--- a/apps/plugins/midiplay.c
+++ b/apps/plugins/midiplay.c
@@ -55,7 +55,8 @@ PLUGIN_IRAM_DECLARE
#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 bfcd53af66..45d2319101 100644
--- a/apps/plugins/mosaique.c
+++ b/apps/plugins/mosaique.c
@@ -91,7 +91,8 @@ PLUGIN_HEADER
#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 55cfac3899..453c755f10 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2343,7 +2343,8 @@ void get_mp3_filename(char *wav_name)
#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 481454dc87..af0567c0d1 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -160,6 +160,13 @@ PLUGIN_IRAM_DECLARE
#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 bd16341008..ee4b089ac1 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -109,6 +109,17 @@ PLUGIN_HEADER
#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 1fae239e53..76c54122e0 100644
--- a/apps/plugins/plasma.c
+++ b/apps/plugins/plasma.c
@@ -63,7 +63,8 @@ static int plasma_frequency;
#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 @@ static int plasma_frequency;
#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 b88b95bb91..79069b9285 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -100,7 +100,8 @@ PLUGIN_HEADER
#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 374cc0f151..f99f616668 100644
--- a/apps/plugins/reversi/reversi-gui.c
+++ b/apps/plugins/reversi/reversi-gui.c
@@ -67,6 +67,14 @@ static struct plugin_api* rb;
#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 b82e40d275..5543ea8fd6 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 8625e35cfb..0b3382ff19 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -121,6 +121,18 @@ PLUGIN_HEADER
#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 @@ PLUGIN_HEADER
#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 3038a06bee..41519f66e1 100644
--- a/apps/plugins/rockpaint.c
+++ b/apps/plugins/rockpaint.c
@@ -82,7 +82,8 @@ PLUGIN_HEADER
#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 b819f354cc..17a96baf2a 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -77,7 +77,8 @@ PLUGIN_HEADER
#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 eeca6bd547..2beeaa4c5b 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -83,7 +83,8 @@ PLUGIN_HEADER
#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 385af159e4..1d13b0523b 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -232,7 +232,8 @@ PLUGIN_HEADER
#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 c815471e11..6078f87708 100644
--- a/apps/plugins/snow.c
+++ b/apps/plugins/snow.c
@@ -46,7 +46,8 @@ PLUGIN_HEADER
#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 05ff25b721..ae1294cbc5 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -213,6 +213,25 @@ static struct plugin_api* rb;
# 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 1278a611ce..d98041da39 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -135,6 +135,19 @@ static 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_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 c9d31a6c9a..1c2501d6a4 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -144,7 +144,8 @@ PLUGIN_HEADER
#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 278d24fbc7..333fd32fcd 100644
--- a/apps/plugins/starfield.c
+++ b/apps/plugins/starfield.c
@@ -57,7 +57,8 @@ static struct plugin_api* rb; /* global api struct pointer */
#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 a33331a429..03dc9fa038 100644
--- a/apps/plugins/stats.c
+++ b/apps/plugins/stats.c
@@ -53,7 +53,8 @@ static bool abort;
#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 6f18617d2d..d36a774447 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -100,10 +100,11 @@ PLUGIN_HEADER
#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 9485f2de23..1d548ace6d 100644
--- a/apps/plugins/sudoku/sudoku.c
+++ b/apps/plugins/sudoku/sudoku.c
@@ -108,6 +108,14 @@ static const char default_game[9][9] =
#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 d41c0b879d..f888bd7090 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 055ace08c5..7f87b7caa2 100644
--- a/apps/plugins/viewer.c
+++ b/apps/plugins/viewer.c
@@ -184,6 +184,18 @@ PLUGIN_HEADER
#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 f054a5946e..9175e1d4d3 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -94,6 +94,15 @@ PLUGIN_HEADER
#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 1c78f33ad0..c05918e9b4 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -148,7 +148,8 @@ PLUGIN_HEADER
#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 @@ PLUGIN_HEADER
#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 c91e20aedd..f51e98ecff 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -74,7 +74,8 @@ PLUGIN_HEADER
#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 603869d454..6af84719ff 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 5bea491a51..2b1d171c11 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 9edfa7ffcc..edbea3515f 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -331,6 +331,8 @@ Sofian Babai
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 a928e3060c..63e5512c01 100755
--- a/tools/configure
+++ b/tools/configure
@@ -1349,7 +1349,7 @@ EOF
appextra="recorder:gui"
archosrom=""
flash=""
- plugins=""
+ plugins="yes"
swcodec="yes"
boottool="$rootdir/tools/scramble -mi4v3 -model=c200 -type=RBBL"
bootoutput="firmware.mi4"