summaryrefslogtreecommitdiffstats
path: root/apps/plugins
diff options
context:
space:
mode:
authorSolomon Peachy <pizza@shaftnet.org>2018-06-29 16:09:28 -0400
committerSolomon Peachy <pizza@shaftnet.org>2019-01-02 08:10:01 -0500
commitd4942cc74c82c465ea395637c77ed06565b8b497 (patch)
tree8c1fa737c93f8a2ade5a1566857dc4dc8f578bd6 /apps/plugins
parentaf9459a7992596e932c6d8cc0a6366ff0f0b0fca (diff)
downloadrockbox-d4942cc74c82c465ea395637c77ed06565b8b497.tar.gz
rockbox-d4942cc74c82c465ea395637c77ed06565b8b497.tar.bz2
rockbox-d4942cc74c82c465ea395637c77ed06565b8b497.zip
Add Xuelin iHIFI 770/770C/800 support
Taken from the xvortex fork (Roman Stolyarov) Ported, rebased, and cleaned up by myself. Change-Id: I7b2bca2d29502f2e4544e42f3d122786dd4b7978
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/battery_bench.c12
-rw-r--r--apps/plugins/blackjack.c32
-rw-r--r--apps/plugins/brickmania.c20
-rw-r--r--apps/plugins/calculator.c22
-rw-r--r--apps/plugins/calendar.c20
-rw-r--r--apps/plugins/chessbox/chessbox_pgn.h28
-rw-r--r--apps/plugins/chessclock.c20
-rw-r--r--apps/plugins/chip8.c16
-rw-r--r--apps/plugins/chopper.c10
-rw-r--r--apps/plugins/clix.c16
-rw-r--r--apps/plugins/cube.c20
-rw-r--r--apps/plugins/doom/i_video.c24
-rw-r--r--apps/plugins/fft/fft.c18
-rw-r--r--apps/plugins/flipit.c24
-rw-r--r--apps/plugins/fractals/fractal.h24
-rw-r--r--apps/plugins/goban/goban.h26
-rw-r--r--apps/plugins/imageviewer/imageviewer_button.h30
-rw-r--r--apps/plugins/invadrox.c16
-rw-r--r--apps/plugins/jewels.c20
-rw-r--r--apps/plugins/lib/keymaps.h28
-rw-r--r--apps/plugins/lib/pluginlib_actions.c31
-rw-r--r--apps/plugins/midi/midiplay.c16
-rw-r--r--apps/plugins/minesweeper.c26
-rw-r--r--apps/plugins/mp3_encoder.c12
-rw-r--r--apps/plugins/mpegplayer/mpeg_settings.c20
-rw-r--r--apps/plugins/mpegplayer/mpegplayer.c18
-rw-r--r--apps/plugins/oscilloscope.c28
-rw-r--r--apps/plugins/pacbox/pacbox.h21
-rw-r--r--apps/plugins/pegbox.c34
-rw-r--r--apps/plugins/pong.c16
-rw-r--r--apps/plugins/reversi/reversi-gui.h22
-rw-r--r--apps/plugins/rockblox.c24
-rw-r--r--apps/plugins/rockboy/rockboy.c20
-rw-r--r--apps/plugins/rockpaint.c22
-rw-r--r--apps/plugins/sliding_puzzle.c18
-rw-r--r--apps/plugins/snake.c16
-rw-r--r--apps/plugins/snake2.c18
-rw-r--r--apps/plugins/sokoban.c32
-rw-r--r--apps/plugins/solitaire.c38
-rw-r--r--apps/plugins/spacerocks.c18
-rw-r--r--apps/plugins/star.c32
-rw-r--r--apps/plugins/stopwatch.c16
-rw-r--r--apps/plugins/sudoku/sudoku.h28
-rw-r--r--apps/plugins/text_viewer/tv_button.h26
-rw-r--r--apps/plugins/vu_meter.c22
-rw-r--r--apps/plugins/wormlet.c18
-rw-r--r--apps/plugins/xobox.c18
-rw-r--r--apps/plugins/zxbox/keymaps.h16
-rw-r--r--apps/plugins/zxbox/zxbox_keyb.c18
49 files changed, 1063 insertions, 7 deletions
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index 9a48ef2fdb..13f01d7867 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -285,6 +285,18 @@
#define BATTERY_ON_TXT "PLAY - start"
#define BATTERY_OFF_TXT "POWER"
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define BATTERY_ON BUTTON_PLAY
+#define BATTERY_OFF BUTTON_POWER
+#define BATTERY_ON_TXT "PLAY - start"
+#define BATTERY_OFF_TXT "POWER"
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define BATTERY_ON BUTTON_PLAY
+#define BATTERY_OFF BUTTON_POWER
+#define BATTERY_ON_TXT "PLAY - start"
+#define BATTERY_OFF_TXT "POWER"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index 6c3e487bf2..27881bf6e9 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -589,6 +589,38 @@ enum {
#define BJACK_RIGHT BUTTON_NEXT
#define BJACK_LEFT BUTTON_PREV
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define BJACK_SELECT_NAME "PLAY"
+#define BJACK_STAY_NAME "NEXT"
+#define BJACK_QUIT_NAME "POWER"
+#define BJACK_DOUBLE_NAME "PREV"
+#define BJACK_SELECT BUTTON_PLAY
+#define BJACK_QUIT BUTTON_POWER
+#define BJACK_MAX BUTTON_VOL_UP
+#define BJACK_MIN BUTTON_VOL_DOWN
+#define BJACK_STAY BUTTON_NEXT
+#define BJACK_DOUBLEDOWN BUTTON_PREV
+#define BJACK_UP BUTTON_HOME
+#define BJACK_DOWN (BUTTON_POWER | BUTTON_HOME)
+#define BJACK_RIGHT BUTTON_NEXT
+#define BJACK_LEFT BUTTON_PREV
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define BJACK_SELECT_NAME "PLAY"
+#define BJACK_STAY_NAME "NEXT"
+#define BJACK_QUIT_NAME "POWER"
+#define BJACK_DOUBLE_NAME "PREV"
+#define BJACK_SELECT BUTTON_PLAY
+#define BJACK_QUIT BUTTON_POWER
+#define BJACK_MAX BUTTON_VOL_UP
+#define BJACK_MIN BUTTON_VOL_DOWN
+#define BJACK_STAY BUTTON_NEXT
+#define BJACK_DOUBLEDOWN BUTTON_PREV
+#define BJACK_UP BUTTON_HOME
+#define BJACK_DOWN (BUTTON_POWER | BUTTON_HOME)
+#define BJACK_RIGHT BUTTON_NEXT
+#define BJACK_LEFT BUTTON_PREV
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index 24c6fab613..f7c9f9adf2 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -342,6 +342,26 @@ CONFIG_KEYPAD == SANSA_CONNECT_PAD
#define UP BUTTON_HOME
#define DOWN BUTTON_OPTION
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define QUIT BUTTON_POWER
+#define LEFT BUTTON_HOME
+#define RIGHT BUTTON_VOL_DOWN
+#define ALTLEFT (BUTTON_POWER | BUTTON_HOME)
+#define ALTRIGHT (BUTTON_POWER | BUTTON_VOL_UP)
+#define SELECT BUTTON_PLAY
+#define UP BUTTON_PREV
+#define DOWN BUTTON_NEXT
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define QUIT BUTTON_POWER
+#define LEFT BUTTON_HOME
+#define RIGHT BUTTON_VOL_DOWN
+#define ALTLEFT (BUTTON_POWER | BUTTON_HOME)
+#define ALTRIGHT (BUTTON_POWER | BUTTON_VOL_UP)
+#define SELECT BUTTON_PLAY
+#define UP BUTTON_PREV
+#define DOWN BUTTON_NEXT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index f10bca66ec..a4a29ff6ac 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -536,6 +536,28 @@ F3: equal to "="
#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define CALCULATOR_LEFT BUTTON_HOME
+#define CALCULATOR_RIGHT BUTTON_VOL_DOWN
+#define CALCULATOR_UP BUTTON_PREV
+#define CALCULATOR_DOWN BUTTON_NEXT
+#define CALCULATOR_QUIT BUTTON_POWER
+#define CALCULATOR_INPUT_CALC_PRE (BUTTON_HOME|BUTTON_REPEAT)
+#define CALCULATOR_INPUT (BUTTON_PLAY|BUTTON_REL)
+#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
+#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define CALCULATOR_LEFT BUTTON_HOME
+#define CALCULATOR_RIGHT BUTTON_VOL_DOWN
+#define CALCULATOR_UP BUTTON_PREV
+#define CALCULATOR_DOWN BUTTON_NEXT
+#define CALCULATOR_QUIT BUTTON_POWER
+#define CALCULATOR_INPUT_CALC_PRE (BUTTON_HOME|BUTTON_REPEAT)
+#define CALCULATOR_INPUT (BUTTON_PLAY|BUTTON_REL)
+#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
+#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c
index 74ee49904b..56f9bde193 100644
--- a/apps/plugins/calendar.c
+++ b/apps/plugins/calendar.c
@@ -423,6 +423,26 @@
#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define CALENDAR_QUIT BUTTON_POWER
+#define CALENDAR_SELECT BUTTON_PLAY
+#define CALENDAR_NEXT_WEEK (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define CALENDAR_PREV_WEEK (BUTTON_POWER | BUTTON_VOL_UP)
+#define CALENDAR_NEXT_DAY BUTTON_NEXT
+#define CALENDAR_PREV_DAY BUTTON_PREV
+#define CALENDAR_NEXT_MONTH BUTTON_VOL_DOWN
+#define CALENDAR_PREV_MONTH BUTTON_VOL_UP
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define CALENDAR_QUIT BUTTON_POWER
+#define CALENDAR_SELECT BUTTON_PLAY
+#define CALENDAR_NEXT_WEEK (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define CALENDAR_PREV_WEEK (BUTTON_POWER | BUTTON_VOL_UP)
+#define CALENDAR_NEXT_DAY BUTTON_NEXT
+#define CALENDAR_PREV_DAY BUTTON_PREV
+#define CALENDAR_NEXT_MONTH BUTTON_VOL_DOWN
+#define CALENDAR_PREV_MONTH BUTTON_VOL_UP
+
#else
#error "No keypad setting."
#endif
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h
index 8f3032fe15..1159d0c7d1 100644
--- a/apps/plugins/chessbox/chessbox_pgn.h
+++ b/apps/plugins/chessbox/chessbox_pgn.h
@@ -572,6 +572,34 @@
#define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT)
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define CB_SELECT BUTTON_PLAY
+#define CB_UP BUTTON_PREV
+#define CB_DOWN BUTTON_NEXT
+#define CB_LEFT BUTTON_HOME
+#define CB_RIGHT BUTTON_VOL_DOWN
+#define CB_PLAY BUTTON_VOL_UP
+#define CB_LEVEL (BUTTON_PLAY|BUTTON_REPEAT)
+#define CB_MENU BUTTON_POWER
+#define CB_SCROLL_UP (BUTTON_PREV|BUTTON_REPEAT)
+#define CB_SCROLL_DOWN (BUTTON_NEXT|BUTTON_REPEAT)
+#define CB_SCROLL_LEFT (BUTTON_HOME|BUTTON_REPEAT)
+#define CB_SCROLL_RIGHT (BUTTON_VOL_UP|BUTTON_REPEAT)
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define CB_SELECT BUTTON_PLAY
+#define CB_UP BUTTON_PREV
+#define CB_DOWN BUTTON_NEXT
+#define CB_LEFT BUTTON_HOME
+#define CB_RIGHT BUTTON_VOL_DOWN
+#define CB_PLAY BUTTON_VOL_UP
+#define CB_LEVEL (BUTTON_PLAY|BUTTON_REPEAT)
+#define CB_MENU BUTTON_POWER
+#define CB_SCROLL_UP (BUTTON_PREV|BUTTON_REPEAT)
+#define CB_SCROLL_DOWN (BUTTON_NEXT|BUTTON_REPEAT)
+#define CB_SCROLL_LEFT (BUTTON_HOME|BUTTON_REPEAT)
+#define CB_SCROLL_RIGHT (BUTTON_VOL_UP|BUTTON_REPEAT)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index ae7889ed95..6b07e1bab5 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -422,6 +422,26 @@
#define CHC_SETTINGS_OK BUTTON_PLAY
#define CHC_SETTINGS_CANCEL BUTTON_POWER
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define CHC_QUIT BUTTON_POWER
+#define CHC_STARTSTOP BUTTON_PLAY
+#define CHC_RESET (BUTTON_PLAY|BUTTON_REPEAT)
+#define CHC_MENU BUTTON_HOME
+#define CHC_SETTINGS_INC BUTTON_VOL_UP
+#define CHC_SETTINGS_DEC BUTTON_VOL_DOWN
+#define CHC_SETTINGS_OK BUTTON_PLAY
+#define CHC_SETTINGS_CANCEL BUTTON_HOME
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define CHC_QUIT BUTTON_POWER
+#define CHC_STARTSTOP BUTTON_PLAY
+#define CHC_RESET (BUTTON_PLAY|BUTTON_REPEAT)
+#define CHC_MENU BUTTON_HOME
+#define CHC_SETTINGS_INC BUTTON_VOL_UP
+#define CHC_SETTINGS_DEC BUTTON_VOL_DOWN
+#define CHC_SETTINGS_OK BUTTON_PLAY
+#define CHC_SETTINGS_CANCEL BUTTON_HOME
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index 153558667e..58d80a2ccf 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1291,6 +1291,22 @@ CONFIG_KEYPAD == MROBE500_PAD
#define CHIP8_KEY6 BUTTON_NEXT
#define CHIP8_KEY8 BUTTON_OPTION
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define CHIP8_OFF BUTTON_POWER
+#define CHIP8_KEY2 BUTTON_NEXT
+#define CHIP8_KEY4 BUTTON_HOME
+#define CHIP8_KEY5 BUTTON_VOL_UP
+#define CHIP8_KEY6 BUTTON_VOL_DOWN
+#define CHIP8_KEY8 BUTTON_PREV
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define CHIP8_OFF BUTTON_POWER
+#define CHIP8_KEY2 BUTTON_NEXT
+#define CHIP8_KEY4 BUTTON_HOME
+#define CHIP8_KEY5 BUTTON_VOL_UP
+#define CHIP8_KEY6 BUTTON_VOL_DOWN
+#define CHIP8_KEY8 BUTTON_PREV
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index 1732a16ecb..249cfe9715 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -214,6 +214,16 @@ CONFIG_KEYPAD == MROBE500_PAD
#define ACTION BUTTON_PLAY
#define ACTIONTEXT "PLAY"
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define QUIT BUTTON_POWER
+#define ACTION BUTTON_PLAY
+#define ACTIONTEXT "PLAY"
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define QUIT BUTTON_POWER
+#define ACTION BUTTON_PLAY
+#define ACTIONTEXT "PLAY"
+
#elif !defined(HAVE_TOUCHSCREEN)
#error No keymap defined!
#endif
diff --git a/apps/plugins/clix.c b/apps/plugins/clix.c
index b2580a1630..c6364b14b4 100644
--- a/apps/plugins/clix.c
+++ b/apps/plugins/clix.c
@@ -284,6 +284,22 @@
#define CLIX_BUTTON_RIGHT BUTTON_NEXT
#define CLIX_BUTTON_CLICK BUTTON_PLAY
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define CLIX_BUTTON_QUIT BUTTON_POWER
+#define CLIX_BUTTON_UP BUTTON_PREV
+#define CLIX_BUTTON_DOWN BUTTON_NEXT
+#define CLIX_BUTTON_LEFT BUTTON_HOME
+#define CLIX_BUTTON_RIGHT BUTTON_VOL_DOWN
+#define CLIX_BUTTON_CLICK BUTTON_VOL_UP
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define CLIX_BUTTON_QUIT BUTTON_POWER
+#define CLIX_BUTTON_UP BUTTON_PREV
+#define CLIX_BUTTON_DOWN BUTTON_NEXT
+#define CLIX_BUTTON_LEFT BUTTON_HOME
+#define CLIX_BUTTON_RIGHT BUTTON_VOL_DOWN
+#define CLIX_BUTTON_CLICK BUTTON_VOL_UP
+
#else
#error "no keymap"
#endif
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index 9a67c337d1..cad57f9ed6 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -423,6 +423,26 @@
#define CUBE_PAUSE BUTTON_HOME
#define CUBE_HIGHSPEED BUTTON_PLAY
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+#define CUBE_QUIT BUTTON_POWER
+#define CUBE_NEXT BUTTON_NEXT
+#define CUBE_PREV BUTTON_PREV
+#define CUBE_INC BUTTON_VOL_UP
+#define CUBE_DEC BUTTON_VOL_DOWN
+#define CUBE_MODE (BUTTON_HOME | BUTTON_POWER)
+#define CUBE_PAUSE BUTTON_HOME
+#define CUBE_HIGHSPEED BUTTON_PLAY
+
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+#define CUBE_QUIT BUTTON_POWER
+#define CUBE_NEXT BUTTON_NEXT
+#define CUBE_PREV BUTTON_PREV
+#define CUBE_INC BUTTON_VOL_UP
+#define CUBE_DEC BUTTON_VOL_DOWN
+#define CUBE_MODE (BUTTON_HOME | BUTTON_POWER)
+#define CUBE_PAUSE BUTTON_HOME
+#define CUBE_HIGHSPEED BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index d734e1e12b..41194670bf 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -566,6 +566,30 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_ENTER BUTTON_PLAY
#define DOOMBUTTON_WEAPON BUTTON_VOL_UP
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define DOOMBUTTON_UP BUTTON_PREV
+#define DOOMBUTTON_DOWN BUTTON_NEXT
+#define DOOMBUTTON_LEFT BUTTON_HOME
+#define DOOMBUTTON_RIGHT BUTTON_VOL_DOWN
+#define DOOMBUTTON_OPEN BUTTON_PLAY
+#define DOOMBUTTON_ESC BUTTON_POWER
+#define DOOMBUTTON_ENTER BUTTON_VOL_UP
+#define DOOMBUTTON_SHOOT BUTTON_VOL_UP
+#define DOOMBUTTON_WEAPON (BUTTON_PLAY|BUTTON_REPEAT)
+#define DOOMBUTTON_MAP (BUTTON_POWER|BUTTON_REPEAT)
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define DOOMBUTTON_UP BUTTON_PREV
+#define DOOMBUTTON_DOWN BUTTON_NEXT
+#define DOOMBUTTON_LEFT BUTTON_HOME
+#define DOOMBUTTON_RIGHT BUTTON_VOL_DOWN
+#define DOOMBUTTON_OPEN BUTTON_PLAY
+#define DOOMBUTTON_ESC BUTTON_POWER
+#define DOOMBUTTON_ENTER BUTTON_VOL_UP
+#define DOOMBUTTON_SHOOT BUTTON_VOL_UP
+#define DOOMBUTTON_WEAPON (BUTTON_PLAY|BUTTON_REPEAT)
+#define DOOMBUTTON_MAP (BUTTON_POWER|BUTTON_REPEAT)
+
#else
#error Keymap not defined!
#endif
diff --git a/apps/plugins/fft/fft.c b/apps/plugins/fft/fft.c
index e5750c109a..d56e37f9e2 100644
--- a/apps/plugins/fft/fft.c
+++ b/apps/plugins/fft/fft.c
@@ -343,6 +343,24 @@ GREY_INFO_STRUCT
# define FFT_AMP_SCALE BUTTON_PLAY
# define FFT_QUIT BUTTON_POWER
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+# define FFT_PREV_GRAPH BUTTON_PREV
+# define FFT_NEXT_GRAPH BUTTON_NEXT
+# define FFT_ORIENTATION BUTTON_HOME
+# define FFT_FREQ_SCALE BUTTON_VOL_UP
+# define FFT_WINDOW BUTTON_VOL_DOWN
+# define FFT_AMP_SCALE BUTTON_PLAY
+# define FFT_QUIT BUTTON_POWER
+
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+# define FFT_PREV_GRAPH BUTTON_PREV
+# define FFT_NEXT_GRAPH BUTTON_NEXT
+# define FFT_ORIENTATION BUTTON_HOME
+# define FFT_FREQ_SCALE BUTTON_VOL_UP
+# define FFT_WINDOW BUTTON_VOL_DOWN
+# define FFT_AMP_SCALE BUTTON_PLAY
+# define FFT_QUIT BUTTON_POWER
+
#elif !defined(HAVE_TOUCHSCREEN)
#error No keymap defined!
#endif
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index b089974aef..c108939a95 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -494,6 +494,30 @@
#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY)
#define FLIPIT_TOGGLE BUTTON_PLAY
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+
+#define FLIPIT_LEFT BUTTON_HOME
+#define FLIPIT_RIGHT BUTTON_VOL_DOWN
+#define FLIPIT_UP BUTTON_PREV
+#define FLIPIT_DOWN BUTTON_NEXT
+#define FLIPIT_QUIT BUTTON_POWER
+#define FLIPIT_SHUFFLE (BUTTON_POWER | BUTTON_PREV)
+#define FLIPIT_SOLVE (BUTTON_POWER | BUTTON_NEXT)
+#define FLIPIT_STEP_BY_STEP (BUTTON_POWER | BUTTON_PLAY)
+#define FLIPIT_TOGGLE BUTTON_PLAY
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+
+#define FLIPIT_LEFT BUTTON_HOME
+#define FLIPIT_RIGHT BUTTON_VOL_DOWN
+#define FLIPIT_UP BUTTON_PREV
+#define FLIPIT_DOWN BUTTON_NEXT
+#define FLIPIT_QUIT BUTTON_POWER
+#define FLIPIT_SHUFFLE (BUTTON_POWER | BUTTON_PREV)
+#define FLIPIT_SOLVE (BUTTON_POWER | BUTTON_NEXT)
+#define FLIPIT_STEP_BY_STEP (BUTTON_POWER | BUTTON_PLAY)
+#define FLIPIT_TOGGLE BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/fractals/fractal.h b/apps/plugins/fractals/fractal.h
index ed6be31695..5a56a39b13 100644
--- a/apps/plugins/fractals/fractal.h
+++ b/apps/plugins/fractals/fractal.h
@@ -496,6 +496,30 @@
#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV)
#define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER)
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define FRACTAL_QUIT BUTTON_POWER
+#define FRACTAL_UP BUTTON_PREV
+#define FRACTAL_DOWN BUTTON_NEXT
+#define FRACTAL_LEFT BUTTON_HOME
+#define FRACTAL_RIGHT BUTTON_VOL_DOWN
+#define FRACTAL_ZOOM_IN (BUTTON_POWER | BUTTON_VOL_UP)
+#define FRACTAL_ZOOM_OUT (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define FRACTAL_PRECISION_INC (BUTTON_POWER | BUTTON_NEXT)
+#define FRACTAL_PRECISION_DEC (BUTTON_POWER | BUTTON_PREV)
+#define FRACTAL_RESET (BUTTON_POWER | BUTTON_HOME)
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define FRACTAL_QUIT BUTTON_POWER
+#define FRACTAL_UP BUTTON_PREV
+#define FRACTAL_DOWN BUTTON_NEXT
+#define FRACTAL_LEFT BUTTON_HOME
+#define FRACTAL_RIGHT BUTTON_VOL_DOWN
+#define FRACTAL_ZOOM_IN (BUTTON_POWER | BUTTON_VOL_UP)
+#define FRACTAL_ZOOM_OUT (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define FRACTAL_PRECISION_INC (BUTTON_POWER | BUTTON_NEXT)
+#define FRACTAL_PRECISION_DEC (BUTTON_POWER | BUTTON_PREV)
+#define FRACTAL_RESET (BUTTON_POWER | BUTTON_HOME)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/goban/goban.h b/apps/plugins/goban/goban.h
index d1d66e3535..9f03937078 100644
--- a/apps/plugins/goban/goban.h
+++ b/apps/plugins/goban/goban.h
@@ -464,6 +464,32 @@
#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+
+#define GBN_BUTTON_UP BUTTON_PREV
+#define GBN_BUTTON_DOWN BUTTON_NEXT
+#define GBN_BUTTON_LEFT BUTTON_HOME
+#define GBN_BUTTON_RIGHT BUTTON_VOL_DOWN
+#define GBN_BUTTON_RETREAT BUTTON_POWER | BUTTON_VOL_DOWN
+#define GBN_BUTTON_ADVANCE BUTTON_POWER | BUTTON_VOL_UP
+#define GBN_BUTTON_MENU BUTTON_POWER
+#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL
+#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
+#define GBN_BUTTON_NEXT_VAR BUTTON_POWER | BUTTON_HOME
+
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+
+#define GBN_BUTTON_UP BUTTON_PREV
+#define GBN_BUTTON_DOWN BUTTON_NEXT
+#define GBN_BUTTON_LEFT BUTTON_HOME
+#define GBN_BUTTON_RIGHT BUTTON_VOL_DOWN
+#define GBN_BUTTON_RETREAT BUTTON_POWER | BUTTON_VOL_DOWN
+#define GBN_BUTTON_ADVANCE BUTTON_POWER | BUTTON_VOL_UP
+#define GBN_BUTTON_MENU BUTTON_POWER
+#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL
+#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
+#define GBN_BUTTON_NEXT_VAR BUTTON_POWER | BUTTON_HOME
+
#else
#error Unsupported keypad
#endif
diff --git a/apps/plugins/imageviewer/imageviewer_button.h b/apps/plugins/imageviewer/imageviewer_button.h
index 2f349b1a24..5ffef12a62 100644
--- a/apps/plugins/imageviewer/imageviewer_button.h
+++ b/apps/plugins/imageviewer/imageviewer_button.h
@@ -510,6 +510,36 @@
#define IMGVIEW_MENU BUTTON_POWER
#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define IMGVIEW_ZOOM_PRE BUTTON_PLAY
+#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
+#define IMGVIEW_ZOOM_OUT (BUTTON_PLAY | BUTTON_REPEAT)
+#define IMGVIEW_UP BUTTON_PREV
+#define IMGVIEW_DOWN BUTTON_NEXT
+#define IMGVIEW_LEFT BUTTON_HOME
+#define IMGVIEW_RIGHT (BUTTON_PLAY|BUTTON_POWER)
+#define IMGVIEW_NEXT BUTTON_VOL_UP
+#define IMGVIEW_NEXT_REPEAT (BUTTON_VOL_UP|BUTTON_REPEAT)
+#define IMGVIEW_PREVIOUS BUTTON_VOL_DOWN
+#define IMGVIEW_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT)
+#define IMGVIEW_MENU BUTTON_POWER
+#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define IMGVIEW_ZOOM_PRE BUTTON_PLAY
+#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
+#define IMGVIEW_ZOOM_OUT (BUTTON_PLAY | BUTTON_REPEAT)
+#define IMGVIEW_UP BUTTON_PREV
+#define IMGVIEW_DOWN BUTTON_NEXT
+#define IMGVIEW_LEFT BUTTON_HOME
+#define IMGVIEW_RIGHT (BUTTON_PLAY|BUTTON_POWER)
+#define IMGVIEW_NEXT BUTTON_VOL_UP
+#define IMGVIEW_NEXT_REPEAT (BUTTON_VOL_UP|BUTTON_REPEAT)
+#define IMGVIEW_PREVIOUS BUTTON_VOL_DOWN
+#define IMGVIEW_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT)
+#define IMGVIEW_MENU BUTTON_POWER
+#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c
index 72c3b57338..8ef674a74a 100644
--- a/apps/plugins/invadrox.c
+++ b/apps/plugins/invadrox.c
@@ -272,6 +272,22 @@ CONFIG_KEYPAD == MROBE500_PAD
#define QUIT BUTTON_POWER
#define FIRE BUTTON_MENU
+#elif CONFIG_KEYPAD == IHIFI2_PAD
+
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+
+#define QUIT BUTTON_POWER
+#define LEFT BUTTON_HOME
+#define RIGHT BUTTON_VOL_DOWN
+#define FIRE BUTTON_VOL_UP
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+
+#define QUIT BUTTON_POWER
+#define LEFT BUTTON_HOME
+#define RIGHT BUTTON_VOL_DOWN
+#define FIRE BUTTON_VOL_UP
+
#else
#error INVADROX: Unsupported keypad
#endif
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index e4a22830a1..bc0bc73183 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -387,6 +387,26 @@ CONFIG_KEYPAD == MROBE500_PAD
#define HK_SELECT "PLAY"
#define HK_CANCEL "POWER"
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define JEWELS_UP BUTTON_PREV
+#define JEWELS_DOWN BUTTON_NEXT
+#define JEWELS_LEFT BUTTON_HOME
+#define JEWELS_RIGHT BUTTON_VOL_DOWN
+#define JEWELS_SELECT BUTTON_PLAY
+#define JEWELS_CANCEL BUTTON_POWER
+#define HK_SELECT "PLAY"
+#define HK_CANCEL "POWER"
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define JEWELS_UP BUTTON_PREV
+#define JEWELS_DOWN BUTTON_NEXT
+#define JEWELS_LEFT BUTTON_HOME
+#define JEWELS_RIGHT BUTTON_VOL_DOWN
+#define JEWELS_SELECT BUTTON_PLAY
+#define JEWELS_CANCEL BUTTON_POWER
+#define HK_SELECT "PLAY"
+#define HK_CANCEL "POWER"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/lib/keymaps.h b/apps/plugins/lib/keymaps.h
index 5fab361620..e240a0989e 100644
--- a/apps/plugins/lib/keymaps.h
+++ b/apps/plugins/lib/keymaps.h
@@ -216,12 +216,28 @@
#define BTN_PAUSE BUTTON_POWER
#elif (CONFIG_KEYPAD == XDUOO_X3_PAD)
-#define BTN_UP BUTTON_VOL_UP
-#define BTN_DOWN BUTTON_VOL_DOWN
-#define BTN_LEFT BUTTON_PREV
-#define BTN_RIGHT BUTTON_NEXT
-#define BTN_FIRE BUTTON_PLAY
-#define BTN_PAUSE BUTTON_OPTION
+#define BTN_UP BUTTON_VOL_UP
+#define BTN_DOWN BUTTON_VOL_DOWN
+#define BTN_LEFT BUTTON_PREV
+#define BTN_RIGHT BUTTON_NEXT
+#define BTN_FIRE BUTTON_PLAY
+#define BTN_PAUSE BUTTON_POWER
+
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+#define BTN_UP BUTTON_PREV
+#define BTN_DOWN BUTTON_NEXT
+#define BTN_LEFT BUTTON_HOME
+#define BTN_RIGHT BUTTON_VOL_DOWN
+#define BTN_FIRE BUTTON_PLAY
+#define BTN_PAUSE BUTTON_POWER
+
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+#define BTN_UP BUTTON_PREV
+#define BTN_DOWN BUTTON_NEXT
+#define BTN_LEFT BUTTON_HOME
+#define BTN_RIGHT BUTTON_VOL_DOWN
+#define BTN_FIRE BUTTON_PLAY
+#define BTN_PAUSE BUTTON_POWER
#else
#error Unsupported keypad
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index 2c5fb773ba..97b5a1e1bf 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -237,6 +237,24 @@ const struct button_mapping pla_main_ctx[] =
{ PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE },
{ PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
{ PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+ { PLA_UP, BUTTON_PREV, BUTTON_NONE },
+ { PLA_DOWN, BUTTON_NEXT, BUTTON_NONE },
+ { PLA_LEFT, BUTTON_HOME, BUTTON_NONE },
+ { PLA_RIGHT, BUTTON_VOL_DOWN, BUTTON_NONE },
+ { PLA_UP_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
+ { PLA_DOWN_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
+ { PLA_LEFT_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE },
+ { PLA_RIGHT_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+ { PLA_UP, BUTTON_PREV, BUTTON_NONE },
+ { PLA_DOWN, BUTTON_NEXT, BUTTON_NONE },
+ { PLA_LEFT, BUTTON_HOME, BUTTON_NONE },
+ { PLA_RIGHT, BUTTON_VOL_DOWN, BUTTON_NONE },
+ { PLA_UP_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
+ { PLA_DOWN_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
+ { PLA_LEFT_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE },
+ { PLA_RIGHT_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
#else
# ifndef HAVE_TOUCHSCREEN
# error pluginlib_actions: No directions defined
@@ -462,7 +480,18 @@ const struct button_mapping pla_main_ctx[] =
{PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
{PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
-
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+ {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
+ {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
+ {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
+ {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
+ {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+ {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
+ {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
+ {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
+ {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
+ {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
#else
# ifndef HAVE_TOUCHSCREEN
# error pluginlib_actions: No actions defined
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c
index de6310dcd8..bef13b649d 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -301,6 +301,22 @@
#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
#define MIDI_PLAYPAUSE BUTTON_PLAY
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define MIDI_QUIT BUTTON_POWER
+#define MIDI_FFWD BUTTON_VOL_DOWN
+#define MIDI_REWIND BUTTON_HOME
+#define MIDI_VOL_UP BUTTON_PREV
+#define MIDI_VOL_DOWN BUTTON_NEXT
+#define MIDI_PLAYPAUSE BUTTON_PLAY
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define MIDI_QUIT BUTTON_POWER
+#define MIDI_FFWD BUTTON_VOL_DOWN
+#define MIDI_REWIND BUTTON_HOME
+#define MIDI_VOL_UP BUTTON_PREV
+#define MIDI_VOL_DOWN BUTTON_NEXT
+#define MIDI_PLAYPAUSE BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 2a3b5f78e9..956ba128d5 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -417,6 +417,32 @@ CONFIG_KEYPAD == MROBE500_PAD
# define MINESWP_DISCOVER2 BUTTON_VOL_UP
# define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION)
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+# define MINESWP_LEFT BUTTON_HOME
+# define MINESWP_RIGHT BUTTON_VOL_DOWN
+# define MINESWP_UP BUTTON_PREV
+# define MINESWP_DOWN BUTTON_NEXT
+# define MINESWP_QUIT BUTTON_POWER
+# define MINESWP_TOGGLE_PRE BUTTON_PLAY
+# define MINESWP_TOGGLE (BUTTON_POWER | BUTTON_PREV)
+# define MINESWP_TOGGLE2 (BUTTON_POWER | BUTTON_NEXT)
+# define MINESWP_DISCOVER (BUTTON_POWER | BUTTON_VOL_UP)
+# define MINESWP_DISCOVER2 (BUTTON_POWER | BUTTON_VOL_DOWN)
+# define MINESWP_INFO (BUTTON_POWER | BUTTON_HOME)
+
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+# define MINESWP_LEFT BUTTON_HOME
+# define MINESWP_RIGHT BUTTON_VOL_DOWN
+# define MINESWP_UP BUTTON_PREV
+# define MINESWP_DOWN BUTTON_NEXT
+# define MINESWP_QUIT BUTTON_POWER
+# define MINESWP_TOGGLE_PRE BUTTON_PLAY
+# define MINESWP_TOGGLE (BUTTON_POWER | BUTTON_PREV)
+# define MINESWP_TOGGLE2 (BUTTON_POWER | BUTTON_NEXT)
+# define MINESWP_DISCOVER (BUTTON_POWER | BUTTON_VOL_UP)
+# define MINESWP_DISCOVER2 (BUTTON_POWER | BUTTON_VOL_DOWN)
+# define MINESWP_INFO (BUTTON_POWER | BUTTON_HOME)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index 9e09135385..d147120cd4 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2562,6 +2562,18 @@ CONFIG_KEYPAD == MROBE500_PAD
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_PLAY
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define MP3ENC_PREV BUTTON_PREV
+#define MP3ENC_NEXT BUTTON_NEXT
+#define MP3ENC_DONE BUTTON_POWER
+#define MP3ENC_SELECT BUTTON_PLAY
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define MP3ENC_PREV BUTTON_PREV
+#define MP3ENC_NEXT BUTTON_NEXT
+#define MP3ENC_DONE BUTTON_POWER
+#define MP3ENC_SELECT BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index 7976f5f542..d6b4fd4b84 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -316,6 +316,26 @@ struct mpeg_settings settings;
#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
#define MPEG_START_TIME_EXIT BUTTON_POWER
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define MPEG_START_TIME_SELECT BUTTON_PLAY
+#define MPEG_START_TIME_LEFT BUTTON_HOME
+#define MPEG_START_TIME_RIGHT BUTTON_VOL_DOWN
+#define MPEG_START_TIME_UP BUTTON_PREV
+#define MPEG_START_TIME_DOWN BUTTON_NEXT
+#define MPEG_START_TIME_LEFT2 (BUTTON_POWER + BUTTON_HOME)
+#define MPEG_START_TIME_RIGHT2 (BUTTON_POWER + BUTTON_VOL_DOWN)
+#define MPEG_START_TIME_EXIT BUTTON_POWER
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define MPEG_START_TIME_SELECT BUTTON_PLAY
+#define MPEG_START_TIME_LEFT BUTTON_HOME
+#define MPEG_START_TIME_RIGHT BUTTON_VOL_DOWN
+#define MPEG_START_TIME_UP BUTTON_PREV
+#define MPEG_START_TIME_DOWN BUTTON_NEXT
+#define MPEG_START_TIME_LEFT2 (BUTTON_POWER + BUTTON_HOME)
+#define MPEG_START_TIME_RIGHT2 (BUTTON_POWER + BUTTON_VOL_DOWN)
+#define MPEG_START_TIME_EXIT BUTTON_POWER
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index fd3e8d8cd5..6a33a544db 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -450,6 +450,24 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define MPEG_RW BUTTON_PREV
#define MPEG_FF BUTTON_NEXT
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define MPEG_MENU BUTTON_PLAY
+#define MPEG_STOP BUTTON_POWER
+#define MPEG_PAUSE BUTTON_HOME
+#define MPEG_VOLDOWN BUTTON_VOL_DOWN
+#define MPEG_VOLUP BUTTON_VOL_UP
+#define MPEG_RW BUTTON_PREV
+#define MPEG_FF BUTTON_NEXT
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define MPEG_MENU BUTTON_PLAY
+#define MPEG_STOP BUTTON_POWER
+#define MPEG_PAUSE BUTTON_HOME
+#define MPEG_VOLDOWN BUTTON_VOL_DOWN
+#define MPEG_VOLUP BUTTON_VOL_UP
+#define MPEG_RW BUTTON_PREV
+#define MPEG_FF BUTTON_NEXT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c
index 4534684293..f4711d4e0e 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -518,6 +518,34 @@
#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
#define NEED_LASTBUTTON
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+#define OSCILLOSCOPE_QUIT BUTTON_POWER
+#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY
+#define OSCILLOSCOPE_DRAWMODE (BUTTON_PLAY | BUTTON_REL)
+#define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_PLAY
+#define OSCILLOSCOPE_ORIENTATION (BUTTON_PLAY | BUTTON_REPEAT)
+#define OSCILLOSCOPE_ADVMODE BUTTON_HOME
+#define OSCILLOSCOPE_PAUSE (BUTTON_HOME | BUTTON_REPEAT)
+#define OSCILLOSCOPE_SPEED_UP BUTTON_NEXT
+#define OSCILLOSCOPE_SPEED_DOWN BUTTON_PREV
+#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
+#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
+#define NEED_LASTBUTTON
+
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+#define OSCILLOSCOPE_QUIT BUTTON_POWER
+#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY
+#define OSCILLOSCOPE_DRAWMODE (BUTTON_PLAY | BUTTON_REL)
+#define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_PLAY
+#define OSCILLOSCOPE_ORIENTATION (BUTTON_PLAY | BUTTON_REPEAT)
+#define OSCILLOSCOPE_ADVMODE BUTTON_HOME
+#define OSCILLOSCOPE_PAUSE (BUTTON_HOME | BUTTON_REPEAT)
+#define OSCILLOSCOPE_SPEED_UP BUTTON_NEXT
+#define OSCILLOSCOPE_SPEED_DOWN BUTTON_PREV
+#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
+#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
+#define NEED_LASTBUTTON
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/pacbox/pacbox.h b/apps/plugins/pacbox/pacbox.h
index 3461bd62c7..eb97d828e2 100644
--- a/apps/plugins/pacbox/pacbox.h
+++ b/apps/plugins/pacbox/pacbox.h
@@ -363,6 +363,27 @@
#define PACMAN_1UP BUTTON_VOLUP
#define PACMAN_COIN BUTTON_VOLDOWN
+#elif CONFIG_KEYPAD == IHIFI2_PAD
+
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define PACMAN_UP BUTTON_PREV
+#define PACMAN_DOWN BUTTON_NEXT
+#define PACMAN_LEFT BUTTON_HOME
+#define PACMAN_RIGHT BUTTON_VOL_DOWN
+#define PACMAN_MENU BUTTON_POWER
+#define PACMAN_1UP BUTTON_VOL_UP
+#define PACMAN_COIN BUTTON_PLAY
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+
+#define PACMAN_UP BUTTON_PREV
+#define PACMAN_DOWN BUTTON_NEXT
+#define PACMAN_LEFT BUTTON_HOME
+#define PACMAN_RIGHT BUTTON_VOL_DOWN
+#define PACMAN_MENU BUTTON_POWER
+#define PACMAN_1UP BUTTON_VOL_UP
+#define PACMAN_COIN BUTTON_PLAY
+
#else
#error Keymap not defined!
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c
index 922359cd32..cc2e8e3f23 100644
--- a/apps/plugins/pegbox.c
+++ b/apps/plugins/pegbox.c
@@ -660,6 +660,40 @@ CONFIG_KEYPAD == MROBE500_PAD
#define LVL_UP_TEXT "VOL+"
#define LVL_DOWN_TEXT "VOL-"
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define PEGBOX_SELECT BUTTON_PLAY
+#define PEGBOX_QUIT BUTTON_POWER
+#define PEGBOX_RESTART (BUTTON_POWER | BUTTON_HOME)
+#define PEGBOX_LVL_UP (BUTTON_POWER | BUTTON_VOL_UP)
+#define PEGBOX_LVL_DOWN (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define PEGBOX_UP BUTTON_PREV
+#define PEGBOX_DOWN BUTTON_NEXT
+#define PEGBOX_RIGHT BUTTON_HOME
+#define PEGBOX_LEFT BUTTON_VOL_DOWN
+
+#define SELECT_TEXT "PLAY"
+#define QUIT_TEXT "POWER"
+#define RESTART_TEXT "HOME"
+#define LVL_UP_TEXT "VOL+"
+#define LVL_DOWN_TEXT "VOL-"
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define PEGBOX_SELECT BUTTON_PLAY
+#define PEGBOX_QUIT BUTTON_POWER
+#define PEGBOX_RESTART (BUTTON_POWER | BUTTON_HOME)
+#define PEGBOX_LVL_UP (BUTTON_POWER | BUTTON_VOL_UP)
+#define PEGBOX_LVL_DOWN (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define PEGBOX_UP BUTTON_PREV
+#define PEGBOX_DOWN BUTTON_NEXT
+#define PEGBOX_RIGHT BUTTON_HOME
+#define PEGBOX_LEFT BUTTON_VOL_DOWN
+
+#define SELECT_TEXT "PLAY"
+#define QUIT_TEXT "POWER"
+#define RESTART_TEXT "HOME"
+#define LVL_UP_TEXT "VOL+"
+#define LVL_DOWN_TEXT "VOL-"
+
#else
#error Unsupported keymap!
#endif
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index d65134e5d2..cb3006d7c4 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -317,6 +317,22 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PONG_RIGHT_UP BUTTON_HOME
#define PONG_RIGHT_DOWN BUTTON_NEXT
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define PONG_QUIT BUTTON_POWER
+#define PONG_PAUSE BUTTON_PREV
+#define PONG_LEFT_UP BUTTON_PLAY
+#define PONG_LEFT_DOWN BUTTON_HOME
+#define PONG_RIGHT_UP BUTTON_VOL_UP
+#define PONG_RIGHT_DOWN BUTTON_VOL_DOWN
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define PONG_QUIT BUTTON_POWER
+#define PONG_PAUSE BUTTON_PREV
+#define PONG_LEFT_UP BUTTON_PLAY
+#define PONG_LEFT_DOWN BUTTON_HOME
+#define PONG_RIGHT_UP BUTTON_VOL_UP
+#define PONG_RIGHT_DOWN BUTTON_VOL_DOWN
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h
index 1dc1dedbed..cba34d2814 100644
--- a/apps/plugins/reversi/reversi-gui.h
+++ b/apps/plugins/reversi/reversi-gui.h
@@ -339,6 +339,28 @@
#define REVERSI_BUTTON_MENU BUTTON_PLAY
#define REVERSI_BUTTON_MENU_LONGPRESS
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define REVERSI_BUTTON_QUIT BUTTON_POWER
+#define REVERSI_BUTTON_UP BUTTON_PREV
+#define REVERSI_BUTTON_DOWN BUTTON_NEXT
+#define REVERSI_BUTTON_LEFT BUTTON_PREV
+#define REVERSI_BUTTON_RIGHT BUTTON_VOL_DOWN
+#define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY
+#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
+#define REVERSI_BUTTON_MENU BUTTON_PLAY
+#define REVERSI_BUTTON_MENU_LONGPRESS
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define REVERSI_BUTTON_QUIT BUTTON_POWER
+#define REVERSI_BUTTON_UP BUTTON_PREV
+#define REVERSI_BUTTON_DOWN BUTTON_NEXT
+#define REVERSI_BUTTON_LEFT BUTTON_PREV
+#define REVERSI_BUTTON_RIGHT BUTTON_VOL_DOWN
+#define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY
+#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
+#define REVERSI_BUTTON_MENU BUTTON_PLAY
+#define REVERSI_BUTTON_MENU_LONGPRESS
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index b204ed87da..13eb593775 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -492,6 +492,30 @@
#define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL)
#define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT)
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+
+#define ROCKBLOX_OFF BUTTON_POWER
+#define ROCKBLOX_ROTATE_CCW BUTTON_HOME
+#define ROCKBLOX_ROTATE_CCW2 BUTTON_VOL_DOWN
+#define ROCKBLOX_ROTATE_CW BUTTON_VOL_UP
+#define ROCKBLOX_DOWN BUTTON_PLAY
+#define ROCKBLOX_LEFT BUTTON_PREV
+#define ROCKBLOX_RIGHT BUTTON_NEXT
+#define ROCKBLOX_DROP (BUTTON_POWER|BUTTON_PLAY)
+#define ROCKBLOX_RESTART (BUTTON_POWER|BUTTON_REPEAT)
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+
+#define ROCKBLOX_OFF BUTTON_POWER
+#define ROCKBLOX_ROTATE_CCW BUTTON_HOME
+#define ROCKBLOX_ROTATE_CCW2 BUTTON_VOL_DOWN
+#define ROCKBLOX_ROTATE_CW BUTTON_VOL_UP
+#define ROCKBLOX_DOWN BUTTON_PLAY
+#define ROCKBLOX_LEFT BUTTON_PREV
+#define ROCKBLOX_RIGHT BUTTON_NEXT
+#define ROCKBLOX_DROP (BUTTON_POWER|BUTTON_PLAY)
+#define ROCKBLOX_RESTART (BUTTON_POWER|BUTTON_REPEAT)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index 7425fc2550..8886793ab7 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -433,6 +433,26 @@ static void setoptions (void)
options.SELECT = BUTTON_VOL_UP;
options.MENU = BUTTON_POWER;
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+ options.UP = BUTTON_PREV;
+ options.DOWN = BUTTON_NEXT;
+
+ options.A = BUTTON_VOL_UP;
+ options.B = BUTTON_VOL_DOWN;
+ options.START = BUTTON_PLAY;
+ options.SELECT = BUTTON_HOME;
+ options.MENU = BUTTON_POWER;
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+ options.UP = BUTTON_PREV;
+ options.DOWN = BUTTON_NEXT;
+
+ options.A = BUTTON_VOL_UP;
+ options.B = BUTTON_VOL_DOWN;
+ options.START = BUTTON_PLAY;
+ options.SELECT = BUTTON_HOME;
+ options.MENU = BUTTON_POWER;
+
#else
#error No Keymap Defined!
#endif
diff --git a/apps/plugins/rockpaint.c b/apps/plugins/rockpaint.c
index d0f9f7235c..3759489fe1 100644
--- a/apps/plugins/rockpaint.c
+++ b/apps/plugins/rockpaint.c
@@ -338,6 +338,28 @@
#define ROCKPAINT_LEFT BUTTON_PREV
#define ROCKPAINT_RIGHT BUTTON_NEXT
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define ROCKPAINT_QUIT BUTTON_POWER
+#define ROCKPAINT_DRAW BUTTON_PLAY
+#define ROCKPAINT_MENU (BUTTON_HOME | BUTTON_POWER)
+#define ROCKPAINT_TOOLBAR BUTTON_VOL_UP
+#define ROCKPAINT_TOOLBAR2 (BUTTON_VOL_UP | BUTTON_POWER)
+#define ROCKPAINT_UP BUTTON_PREV
+#define ROCKPAINT_DOWN BUTTON_NEXT
+#define ROCKPAINT_LEFT BUTTON_HOME
+#define ROCKPAINT_RIGHT BUTTON_VOL_DOWN
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define ROCKPAINT_QUIT BUTTON_POWER
+#define ROCKPAINT_DRAW BUTTON_PLAY
+#define ROCKPAINT_MENU (BUTTON_HOME | BUTTON_POWER)
+#define ROCKPAINT_TOOLBAR BUTTON_VOL_UP
+#define ROCKPAINT_TOOLBAR2 (BUTTON_VOL_UP | BUTTON_POWER)
+#define ROCKPAINT_UP BUTTON_PREV
+#define ROCKPAINT_DOWN BUTTON_NEXT
+#define ROCKPAINT_LEFT BUTTON_HOME
+#define ROCKPAINT_RIGHT BUTTON_VOL_DOWN
+
#else
#error "Please define keys for this keypad"
#endif
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index a3f84e32ae..0ea36c84b8 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -340,6 +340,24 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
#define PUZZLE_PICTURE BUTTON_PLAY
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+#define PUZZLE_QUIT BUTTON_POWER
+#define PUZZLE_LEFT BUTTON_HOME
+#define PUZZLE_RIGHT BUTTON_VOL_DOWN
+#define PUZZLE_UP BUTTON_PREV
+#define PUZZLE_DOWN BUTTON_NEXT
+#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
+#define PUZZLE_PICTURE BUTTON_PLAY
+
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+#define PUZZLE_QUIT BUTTON_POWER
+#define PUZZLE_LEFT BUTTON_HOME
+#define PUZZLE_RIGHT BUTTON_VOL_DOWN
+#define PUZZLE_UP BUTTON_PREV
+#define PUZZLE_DOWN BUTTON_NEXT
+#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
+#define PUZZLE_PICTURE BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index 9144edf062..2518316bdd 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -297,6 +297,22 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
#define SNAKE_DOWN BUTTON_OPTION
#define SNAKE_PLAYPAUSE BUTTON_PLAY
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define SNAKE_QUIT BUTTON_POWER
+#define SNAKE_LEFT BUTTON_HOME
+#define SNAKE_RIGHT BUTTON_VOL_DOWN
+#define SNAKE_UP BUTTON_PREV
+#define SNAKE_DOWN BUTTON_NEXT
+#define SNAKE_PLAYPAUSE BUTTON_PLAY
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define SNAKE_QUIT BUTTON_POWER
+#define SNAKE_LEFT BUTTON_HOME
+#define SNAKE_RIGHT BUTTON_VOL_DOWN
+#define SNAKE_UP BUTTON_PREV
+#define SNAKE_DOWN BUTTON_NEXT
+#define SNAKE_PLAYPAUSE BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index 13d2c57b24..9ea79504e4 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -428,6 +428,24 @@ CONFIG_KEYPAD == MROBE500_PAD
#define SNAKE2_PLAYPAUSE BUTTON_PLAY
#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+#define SNAKE2_LEFT BUTTON_HOME
+#define SNAKE2_RIGHT BUTTON_VOL_DOWN
+#define SNAKE2_UP BUTTON_PREV
+#define SNAKE2_DOWN BUTTON_NEXT
+#define SNAKE2_QUIT BUTTON_POWER
+#define SNAKE2_PLAYPAUSE BUTTON_PLAY
+#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
+
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+#define SNAKE2_LEFT BUTTON_HOME
+#define SNAKE2_RIGHT BUTTON_VOL_DOWN
+#define SNAKE2_UP BUTTON_PREV
+#define SNAKE2_DOWN BUTTON_NEXT
+#define SNAKE2_QUIT BUTTON_POWER
+#define SNAKE2_PLAYPAUSE BUTTON_PLAY
+#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index 98d295eb1a..17971ec4db 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -667,6 +667,38 @@
#define BUTTON_SAVE BUTTON_PLAY
#define BUTTON_SAVE_NAME "PLAY"
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define SOKOBAN_LEFT BUTTON_HOME
+#define SOKOBAN_RIGHT BUTTON_VOL_DOWN
+#define SOKOBAN_UP BUTTON_PREV
+#define SOKOBAN_DOWN BUTTON_NEXT
+#define SOKOBAN_MENU BUTTON_POWER
+#define SOKOBAN_UNDO_PRE BUTTON_PLAY
+#define SOKOBAN_UNDO (BUTTON_PLAY | BUTTON_REL)
+#define SOKOBAN_REDO (BUTTON_POWER | BUTTON_PLAY)
+#define SOKOBAN_LEVEL_DOWN (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define SOKOBAN_LEVEL_REPEAT (BUTTON_POWER | BUTTON_HOME)
+#define SOKOBAN_LEVEL_UP (BUTTON_POWER | BUTTON_VOL_UP)
+#define SOKOBAN_PAUSE BUTTON_PLAY
+#define BUTTON_SAVE BUTTON_PLAY
+#define BUTTON_SAVE_NAME "PLAY"
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define SOKOBAN_LEFT BUTTON_HOME
+#define SOKOBAN_RIGHT BUTTON_VOL_DOWN
+#define SOKOBAN_UP BUTTON_PREV
+#define SOKOBAN_DOWN BUTTON_NEXT
+#define SOKOBAN_MENU BUTTON_POWER
+#define SOKOBAN_UNDO_PRE BUTTON_PLAY
+#define SOKOBAN_UNDO (BUTTON_PLAY | BUTTON_REL)
+#define SOKOBAN_REDO (BUTTON_POWER | BUTTON_PLAY)
+#define SOKOBAN_LEVEL_DOWN (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define SOKOBAN_LEVEL_REPEAT (BUTTON_POWER | BUTTON_HOME)
+#define SOKOBAN_LEVEL_UP (BUTTON_POWER | BUTTON_VOL_UP)
+#define SOKOBAN_PAUSE BUTTON_PLAY
+#define BUTTON_SAVE BUTTON_PLAY
+#define BUTTON_SAVE_NAME "PLAY"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index fe7da2788e..7440160470 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -706,6 +706,44 @@ CONFIG_KEYPAD == MROBE500_PAD
# define HK_CUR2STACK "DBL PLAY"
# define HK_REM2STACK "NEXT"
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+# define SOL_QUIT BUTTON_POWER
+# define SOL_UP BUTTON_PREV
+# define SOL_DOWN BUTTON_NEXT
+# define SOL_LEFT BUTTON_HOME
+# define SOL_RIGHT BUTTON_VOL_DOWN
+# define SOL_MOVE_PRE BUTTON_VOL_UP
+# define SOL_MOVE (BUTTON_PLAY | BUTTON_REL)
+# define SOL_DRAW (BUTTON_POWER | BUTTON_REPEAT)
+# define SOL_REM2CUR (BUTTON_POWER | BUTTON_VOL_DOWN)
+# define SOL_CUR2STACK_PRE BUTTON_PLAY
+# define SOL_CUR2STACK (BUTTON_PLAY | BUTTON_REPEAT)
+# define SOL_REM2STACK (BUTTON_POWER | BUTTON_VOL_UP)
+# define HK_MOVE "PLAY"
+# define HK_DRAW "DBL POWER"
+# define HK_REM2CUR "POWER"
+# define HK_CUR2STACK "DBL PLAY"
+# define HK_REM2STACK "POWER+"
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+# define SOL_QUIT BUTTON_POWER
+# define SOL_UP BUTTON_PREV
+# define SOL_DOWN BUTTON_NEXT
+# define SOL_LEFT BUTTON_HOME
+# define SOL_RIGHT BUTTON_VOL_DOWN
+# define SOL_MOVE_PRE BUTTON_VOL_UP
+# define SOL_MOVE (BUTTON_PLAY | BUTTON_REL)
+# define SOL_DRAW (BUTTON_POWER | BUTTON_REPEAT)
+# define SOL_REM2CUR (BUTTON_POWER | BUTTON_VOL_DOWN)
+# define SOL_CUR2STACK_PRE BUTTON_PLAY
+# define SOL_CUR2STACK (BUTTON_PLAY | BUTTON_REPEAT)
+# define SOL_REM2STACK (BUTTON_POWER | BUTTON_VOL_UP)
+# define HK_MOVE "PLAY"
+# define HK_DRAW "DBL POWER"
+# define HK_REM2CUR "POWER"
+# define HK_CUR2STACK "DBL PLAY"
+# define HK_REM2STACK "POWER+"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index ad03919861..15d4039b4d 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -363,6 +363,24 @@
#define AST_RIGHT BUTTON_NEXT
#define AST_FIRE BUTTON_PLAY
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+#define AST_PAUSE BUTTON_PLAY
+#define AST_QUIT BUTTON_POWER
+#define AST_THRUST BUTTON_NEXT
+#define AST_HYPERSPACE BUTTON_PREV
+#define AST_LEFT BUTTON_HOME
+#define AST_RIGHT BUTTON_VOL_DOWN
+#define AST_FIRE BUTTON_VOL_UP
+
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+#define AST_PAUSE BUTTON_PLAY
+#define AST_QUIT BUTTON_POWER
+#define AST_THRUST BUTTON_NEXT
+#define AST_HYPERSPACE BUTTON_PREV
+#define AST_LEFT BUTTON_HOME
+#define AST_RIGHT BUTTON_VOL_DOWN
+#define AST_FIRE BUTTON_VOL_UP
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index bcddab8f20..fdf67bec4c 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -639,6 +639,38 @@
#define STAR_LEVEL_DOWN_NAME "PLAY + PREV"
#define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION"
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define STAR_QUIT BUTTON_POWER
+#define STAR_LEFT BUTTON_HOME
+#define STAR_RIGHT BUTTON_VOL_DOWN
+#define STAR_UP BUTTON_PREV
+#define STAR_DOWN BUTTON_NEXT
+#define STAR_TOGGLE_CONTROL BUTTON_PLAY
+#define STAR_LEVEL_UP (BUTTON_POWER | BUTTON_VOL_UP)
+#define STAR_LEVEL_DOWN (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define STAR_LEVEL_REPEAT (BUTTON_POWER | BUTTON_HOME)
+#define STAR_TOGGLE_CONTROL_NAME "PLAY"
+#define STAR_QUIT_NAME "POWER"
+#define STAR_LEVEL_UP_NAME "POWER + VOL+"
+#define STAR_LEVEL_DOWN_NAME "POWER + VOL-"
+#define STAR_LEVEL_REPEAT_NAME "POWER + HOME"
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define STAR_QUIT BUTTON_POWER
+#define STAR_LEFT BUTTON_HOME
+#define STAR_RIGHT BUTTON_VOL_DOWN
+#define STAR_UP BUTTON_PREV
+#define STAR_DOWN BUTTON_NEXT
+#define STAR_TOGGLE_CONTROL BUTTON_PLAY
+#define STAR_LEVEL_UP (BUTTON_POWER | BUTTON_VOL_UP)
+#define STAR_LEVEL_DOWN (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define STAR_LEVEL_REPEAT (BUTTON_POWER | BUTTON_HOME)
+#define STAR_TOGGLE_CONTROL_NAME "PLAY"
+#define STAR_QUIT_NAME "POWER"
+#define STAR_LEVEL_UP_NAME "POWER + VOL+"
+#define STAR_LEVEL_DOWN_NAME "POWER + VOL-"
+#define STAR_LEVEL_REPEAT_NAME "POWER + HOME"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index 69f14a20ef..5e83859d89 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -321,6 +321,22 @@
#define STOPWATCH_SCROLL_UP BUTTON_HOME
#define STOPWATCH_SCROLL_DOWN BUTTON_OPTION
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define STOPWATCH_QUIT BUTTON_POWER
+#define STOPWATCH_START_STOP BUTTON_NEXT
+#define STOPWATCH_RESET_TIMER BUTTON_PREV
+#define STOPWATCH_LAP_TIMER BUTTON_PLAY
+#define STOPWATCH_SCROLL_UP BUTTON_VOL_UP
+#define STOPWATCH_SCROLL_DOWN BUTTON_VOL_DOWN
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define STOPWATCH_QUIT BUTTON_POWER
+#define STOPWATCH_START_STOP BUTTON_NEXT
+#define STOPWATCH_RESET_TIMER BUTTON_PREV
+#define STOPWATCH_LAP_TIMER BUTTON_PLAY
+#define STOPWATCH_SCROLL_UP BUTTON_VOL_UP
+#define STOPWATCH_SCROLL_DOWN BUTTON_VOL_DOWN
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h
index e26644a2d8..62ec80dba8 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -437,6 +437,34 @@
#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
#define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER)
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
+#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
+#define SUDOKU_BUTTON_UP BUTTON_PREV
+#define SUDOKU_BUTTON_DOWN BUTTON_NEXT
+#define SUDOKU_BUTTON_LEFT BUTTON_HOME
+#define SUDOKU_BUTTON_RIGHT BUTTON_VOL_DOWN
+#define SUDOKU_BUTTON_TOGGLEBACK (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define SUDOKU_BUTTON_TOGGLE (BUTTON_POWER | BUTTON_VOL_UP)
+#define SUDOKU_BUTTON_ALTTOGGLE BUTTON_PLAY
+#define SUDOKU_BUTTON_MENU_PRE BUTTON_POWER
+#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
+#define SUDOKU_BUTTON_POSSIBLE (BUTTON_POWER | BUTTON_HOME)
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
+#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
+#define SUDOKU_BUTTON_UP BUTTON_PREV
+#define SUDOKU_BUTTON_DOWN BUTTON_NEXT
+#define SUDOKU_BUTTON_LEFT BUTTON_HOME
+#define SUDOKU_BUTTON_RIGHT BUTTON_VOL_DOWN
+#define SUDOKU_BUTTON_TOGGLEBACK (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define SUDOKU_BUTTON_TOGGLE (BUTTON_POWER | BUTTON_VOL_UP)
+#define SUDOKU_BUTTON_ALTTOGGLE BUTTON_PLAY
+#define SUDOKU_BUTTON_MENU_PRE BUTTON_POWER
+#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
+#define SUDOKU_BUTTON_POSSIBLE (BUTTON_POWER | BUTTON_HOME)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/text_viewer/tv_button.h b/apps/plugins/text_viewer/tv_button.h
index 58bce80eaf..da6453ff8d 100644
--- a/apps/plugins/text_viewer/tv_button.h
+++ b/apps/plugins/text_viewer/tv_button.h
@@ -562,6 +562,32 @@
#define TV_LINE_DOWN BUTTON_OPTION
#define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY)
+/* Xuelin 770/770c keys */
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define TV_QUIT BUTTON_POWER
+#define TV_SCROLL_UP BUTTON_VOL_UP
+#define TV_SCROLL_DOWN BUTTON_VOL_DOWN
+#define TV_SCREEN_LEFT BUTTON_PREV
+#define TV_SCREEN_RIGHT BUTTON_NEXT
+#define TV_MENU BUTTON_PLAY
+#define TV_AUTOSCROLL (BUTTON_POWER | BUTTON_HOME)
+#define TV_LINE_UP (BUTTON_POWER | BUTTON_VOL_UP)
+#define TV_LINE_DOWN (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define TV_BOOKMARK (BUTTON_POWER | BUTTON_PLAY)
+
+/* Xuelin 800 keys */
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define TV_QUIT BUTTON_POWER
+#define TV_SCROLL_UP BUTTON_VOL_UP
+#define TV_SCROLL_DOWN BUTTON_VOL_DOWN
+#define TV_SCREEN_LEFT BUTTON_PREV
+#define TV_SCREEN_RIGHT BUTTON_NEXT
+#define TV_MENU BUTTON_PLAY
+#define TV_AUTOSCROLL (BUTTON_POWER | BUTTON_HOME)
+#define TV_LINE_UP (BUTTON_POWER | BUTTON_VOL_UP)
+#define TV_LINE_DOWN (BUTTON_POWER | BUTTON_VOL_DOWN)
+#define TV_BOOKMARK (BUTTON_POWER | BUTTON_PLAY)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index 04876ba198..eaa92d4b48 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -432,6 +432,28 @@
#define LABEL_MENU "PLAY"
#define LABEL_VOLUME "VOL UP/DN"
+#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
+#define VUMETER_QUIT BUTTON_POWER
+#define VUMETER_HELP BUTTON_HOME
+#define VUMETER_MENU BUTTON_PLAY
+#define VUMETER_UP BUTTON_VOL_UP
+#define VUMETER_DOWN BUTTON_VOL_DOWN
+#define LABEL_HELP "HOME"
+#define LABEL_QUIT "POWER"
+#define LABEL_MENU "PLAY"
+#define LABEL_VOLUME "VOL UP/DN"
+
+#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
+#define VUMETER_QUIT BUTTON_POWER
+#define VUMETER_HELP BUTTON_HOME
+#define VUMETER_MENU BUTTON_PLAY
+#define VUMETER_UP BUTTON_VOL_UP
+#define VUMETER_DOWN BUTTON_VOL_DOWN
+#define LABEL_HELP "HOME"
+#define LABEL_QUIT "POWER"
+#define LABEL_MENU "PLAY"
+#define LABEL_VOLUME "VOL UP/DN"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 83cfadc338..8c12862bdb 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -402,6 +402,24 @@ CONFIG_KEYPAD == MROBE500_PAD
#define BTN_QUIT BUTTON_POWER
#define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER)
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define BTN_DIR_UP BUTTON_PREV
+#define BTN_DIR_DOWN BUTTON_NEXT
+#define BTN_DIR_LEFT BUTTON_HOME
+#define BTN_DIR_RIGHT BUTTON_VOL_DOWN
+#define BTN_STARTPAUSE BUTTON_PLAY
+#define BTN_QUIT BUTTON_POWER
+#define BTN_STOPRESET BUTTON_VOL_UP
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define BTN_DIR_UP BUTTON_PREV
+#define BTN_DIR_DOWN BUTTON_NEXT
+#define BTN_DIR_LEFT BUTTON_HOME
+#define BTN_DIR_RIGHT BUTTON_VOL_DOWN
+#define BTN_STARTPAUSE BUTTON_PLAY
+#define BTN_QUIT BUTTON_POWER
+#define BTN_STOPRESET BUTTON_VOL_UP
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index 9b41e2d1ac..8acdf85015 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -351,6 +351,24 @@ CONFIG_KEYPAD == MROBE500_PAD
#define DOWN BUTTON_OPTION
#define PAUSE BUTTON_PLAY
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+
+#define QUIT BUTTON_POWER
+#define LEFT BUTTON_HOME
+#define RIGHT BUTTON_VOL_DOWN
+#define UP BUTTON_PREV
+#define DOWN BUTTON_NEXT
+#define PAUSE BUTTON_PLAY
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+
+#define QUIT BUTTON_POWER
+#define LEFT BUTTON_HOME
+#define RIGHT BUTTON_VOL_DOWN
+#define UP BUTTON_PREV
+#define DOWN BUTTON_NEXT
+#define PAUSE BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index ebdd41734e..ce527c561e 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -290,6 +290,22 @@
#define ZX_UP BUTTON_HOME
#define ZX_DOWN BUTTON_OPTION
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+#define ZX_SELECT BUTTON_PLAY
+#define ZX_MENU BUTTON_POWER
+#define ZX_LEFT BUTTON_HOME
+#define ZX_RIGHT BUTTON_VOL_DOWN
+#define ZX_UP BUTTON_PREV
+#define ZX_DOWN BUTTON_NEXT
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+#define ZX_SELECT BUTTON_PLAY
+#define ZX_MENU BUTTON_POWER
+#define ZX_LEFT BUTTON_HOME
+#define ZX_RIGHT BUTTON_VOL_DOWN
+#define ZX_UP BUTTON_PREV
+#define ZX_DOWN BUTTON_NEXT
+
#else
#error Keymap not defined!
diff --git a/apps/plugins/zxbox/zxbox_keyb.c b/apps/plugins/zxbox/zxbox_keyb.c
index f38712d8d1..b3f1ca70e8 100644
--- a/apps/plugins/zxbox/zxbox_keyb.c
+++ b/apps/plugins/zxbox/zxbox_keyb.c
@@ -287,6 +287,24 @@
#define KBD_UP BUTTON_HOME
#define KBD_DOWN BUTTON_OPTION
+#elif CONFIG_KEYPAD == IHIFI_770_PAD
+
+#define KBD_SELECT BUTTON_PLAY
+#define KBD_ABORT BUTTON_POWER
+#define KBD_LEFT BUTTON_HOME
+#define KBD_RIGHT BUTTON_VOL_DOWN
+#define KBD_UP BUTTON_PREV
+#define KBD_DOWN BUTTON_NEXT
+
+#elif CONFIG_KEYPAD == IHIFI_800_PAD
+
+#define KBD_SELECT BUTTON_PLAY
+#define KBD_ABORT BUTTON_POWER
+#define KBD_LEFT BUTTON_HOME
+#define KBD_RIGHT BUTTON_VOL_DOWN
+#define KBD_UP BUTTON_PREV
+#define KBD_DOWN BUTTON_NEXT
+
#endif
#ifdef HAVE_TOUCHSCREEN