summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/SOURCES2
-rw-r--r--apps/bitmaps/native/SOURCES6
-rw-r--r--apps/bitmaps/native/fiioicon.130x130x16.bmpbin0 -> 51014 bytes
-rw-r--r--apps/features.txt2
-rw-r--r--apps/keymaps/keymap-fiiom3k.c224
-rw-r--r--apps/lang/english.lang34
-rw-r--r--apps/plugins/battery_bench.c6
-rw-r--r--apps/plugins/blackjack.c16
-rw-r--r--apps/plugins/brickmania.c10
-rw-r--r--apps/plugins/calculator.c11
-rw-r--r--apps/plugins/calendar.c10
-rw-r--r--apps/plugins/chessbox/chessbox_pgn.h14
-rw-r--r--apps/plugins/chessclock.c10
-rw-r--r--apps/plugins/chip8.c8
-rw-r--r--apps/plugins/chopper.c5
-rw-r--r--apps/plugins/clix.c8
-rw-r--r--apps/plugins/cube.c10
-rw-r--r--apps/plugins/doom/i_video.c11
-rw-r--r--apps/plugins/fft/fft.c9
-rw-r--r--apps/plugins/flipit.c12
-rw-r--r--apps/plugins/fractals/fractal.h12
-rw-r--r--apps/plugins/goban/goban.h12
-rw-r--r--apps/plugins/imageviewer/imageviewer_button.h15
-rw-r--r--apps/plugins/invadrox.c7
-rw-r--r--apps/plugins/jewels.c10
-rw-r--r--apps/plugins/lib/keymaps.h8
-rw-r--r--apps/plugins/lib/pluginlib_actions.c15
-rw-r--r--apps/plugins/midi/midiplay.c8
-rw-r--r--apps/plugins/minesweeper.c13
-rw-r--r--apps/plugins/mp3_encoder.c5
-rw-r--r--apps/plugins/mpegplayer/mpeg_settings.c10
-rw-r--r--apps/plugins/mpegplayer/mpegplayer.c9
-rw-r--r--apps/plugins/oscilloscope.c13
-rw-r--r--apps/plugins/pacbox/pacbox.h8
-rw-r--r--apps/plugins/pegbox.c17
-rw-r--r--apps/plugins/pong.c8
-rw-r--r--apps/plugins/reversi/reversi-gui.h11
-rw-r--r--apps/plugins/rockblox.c12
-rw-r--r--apps/plugins/rockboy/rockboy.c10
-rw-r--r--apps/plugins/rockpaint.c33
-rw-r--r--apps/plugins/sliding_puzzle.c8
-rw-r--r--apps/plugins/snake.c8
-rw-r--r--apps/plugins/snake2.c9
-rw-r--r--apps/plugins/sokoban.c16
-rw-r--r--apps/plugins/solitaire.c19
-rw-r--r--apps/plugins/spacerocks.c9
-rw-r--r--apps/plugins/star.c16
-rw-r--r--apps/plugins/stopwatch.c8
-rw-r--r--apps/plugins/sudoku/sudoku.h14
-rw-r--r--apps/plugins/text_viewer/tv_button.h12
-rw-r--r--apps/plugins/vu_meter.c11
-rw-r--r--apps/plugins/wormlet.c9
-rw-r--r--apps/plugins/xobox.c9
-rw-r--r--apps/plugins/zxbox/keymaps.h8
-rw-r--r--apps/plugins/zxbox/zxbox_keyb.c9
-rw-r--r--apps/settings_list.c5
56 files changed, 811 insertions, 3 deletions
diff --git a/apps/SOURCES b/apps/SOURCES
index ba36bc3ef6..54f7461e05 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -300,4 +300,6 @@ keymaps/keymap-xduoox3.c
300keymaps/keymap-xduoox3ii.c 300keymaps/keymap-xduoox3ii.c
301#elif CONFIG_KEYPAD == XDUOO_X20_PAD 301#elif CONFIG_KEYPAD == XDUOO_X20_PAD
302keymaps/keymap-xduoox20.c 302keymaps/keymap-xduoox20.c
303#elif CONFIG_KEYPAD == FIIO_M3K_PAD
304keymaps/keymap-fiiom3k.c
303#endif 305#endif
diff --git a/apps/bitmaps/native/SOURCES b/apps/bitmaps/native/SOURCES
index 8f42607a0c..201ffc4ad3 100644
--- a/apps/bitmaps/native/SOURCES
+++ b/apps/bitmaps/native/SOURCES
@@ -38,7 +38,7 @@ rockboxlogo.640x198x16.bmp
38#endif 38#endif
39 39
40/* The Sony NWZ linux bootloader needs icons to display a menu */ 40/* The Sony NWZ linux bootloader needs icons to display a menu */
41#if defined(BOOTLOADER) 41#if defined(BOOTLOADER)
42#if defined(SONY_NWZ_LINUX) 42#if defined(SONY_NWZ_LINUX)
43rockboxicon.130x130x16.bmp 43rockboxicon.130x130x16.bmp
44toolsicon.130x130x16.bmp 44toolsicon.130x130x16.bmp
@@ -50,6 +50,10 @@ toolsicon.70x70x16.bmp
50hibyicon.130x130x16.bmp 50hibyicon.130x130x16.bmp
51rockboxicon.130x130x16.bmp 51rockboxicon.130x130x16.bmp
52toolsicon.130x130x16.bmp 52toolsicon.130x130x16.bmp
53#elif defined(FIIO_M3K)
54fiioicon.130x130x16.bmp
55rockboxicon.130x130x16.bmp
56toolsicon.130x130x16.bmp
53#endif 57#endif
54#endif 58#endif
55 59
diff --git a/apps/bitmaps/native/fiioicon.130x130x16.bmp b/apps/bitmaps/native/fiioicon.130x130x16.bmp
new file mode 100644
index 0000000000..15e1f7b37f
--- /dev/null
+++ b/apps/bitmaps/native/fiioicon.130x130x16.bmp
Binary files differ
diff --git a/apps/features.txt b/apps/features.txt
index 4b7a66099e..f0c2e4a12b 100644
--- a/apps/features.txt
+++ b/apps/features.txt
@@ -183,7 +183,7 @@ depth_3d
183#endif 183#endif
184 184
185/* This should be AUDIOHW_HAVE_FILTER_ROLL_OFF but that is only defined later */ 185/* This should be AUDIOHW_HAVE_FILTER_ROLL_OFF but that is only defined later */
186#if defined(DX50) || defined(HAVE_DF1704_CODEC) || defined(HAVE_PCM1792_CODEC) || defined(HAVE_CS4398) || defined(HAVE_WM8740) || defined(HAVE_ES9018) || defined(HAVE_XDUOO_LINUX_CODEC) 186#if defined(DX50) || defined(HAVE_DF1704_CODEC) || defined(HAVE_PCM1792_CODEC) || defined(HAVE_CS4398) || defined(HAVE_WM8740) || defined(HAVE_ES9018) || defined(HAVE_XDUOO_LINUX_CODEC) || defined(HAVE_FIIO_LINUX_CODEC)
187filter_roll_off 187filter_roll_off
188#endif 188#endif
189 189
diff --git a/apps/keymaps/keymap-fiiom3k.c b/apps/keymaps/keymap-fiiom3k.c
new file mode 100644
index 0000000000..4fa97e9435
--- /dev/null
+++ b/apps/keymaps/keymap-fiiom3k.c
@@ -0,0 +1,224 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2019 by Roman Stolyarov
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22/* Button Code Definitions for FiiO M3K target */
23
24#include "config.h"
25#include "action.h"
26#include "button.h"
27#include "settings.h"
28
29/* {Action Code, Button code, Prereq button code } */
30
31/*
32 * The format of the list is as follows
33 * { Action Code, Button code, Prereq button code }
34 * if there's no need to check the previous button's value, use BUTTON_NONE
35 * Insert LAST_ITEM_IN_LIST at the end of each mapping
36 */
37static const struct button_mapping button_context_standard[] = {
38 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
39 { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE },
40 { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
41 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
42 { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE },
43 { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
44 { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
45 { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
46 { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
47 { ACTION_STD_MENU, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION },
48
49 LAST_ITEM_IN_LIST
50}; /* button_context_standard */
51
52static const struct button_mapping button_context_wps[] = {
53 { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
54// { ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
55 { ACTION_WPS_SKIPPREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
56 { ACTION_WPS_SEEKBACK, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
57 { ACTION_WPS_STOPSEEK, BUTTON_PREV|BUTTON_REL, BUTTON_PREV|BUTTON_REPEAT },
58 { ACTION_WPS_SKIPNEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
59 { ACTION_WPS_SEEKFWD, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
60 { ACTION_WPS_STOPSEEK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT|BUTTON_REPEAT },
61 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
62 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
63 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
64 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
65 { ACTION_WPS_BROWSE, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
66 { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
67 { ACTION_WPS_MENU, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION },
68 { ACTION_WPS_QUICKSCREEN, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_OPTION },
69 { ACTION_WPS_HOTKEY, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME },
70
71// XXX BUTTON_UP and BUTTON_DOWN aren't on here.
72
73 { ACTION_STD_KEYLOCK, BUTTON_POWER, BUTTON_NONE },
74
75 LAST_ITEM_IN_LIST
76}; /* button_context_wps */
77
78static const struct button_mapping button_context_list[] = {
79 { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
80 { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
81 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
82 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
83
84 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
85}; /* button_context_list */
86
87/** Bookmark Screen **/
88static const struct button_mapping button_context_bmark[] = {
89 { ACTION_BMS_DELETE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
90
91 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
92}; /* button_context_bmark */
93
94/** Keyboard **/
95static const struct button_mapping button_context_keyboard[] = {
96 { ACTION_KBD_LEFT, BUTTON_PREV, BUTTON_NONE },
97 { ACTION_KBD_LEFT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
98 { ACTION_KBD_RIGHT, BUTTON_NEXT, BUTTON_NONE },
99 { ACTION_KBD_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
100 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
101 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
102 { ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP, BUTTON_NONE },
103 { ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
104 { ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN, BUTTON_NONE },
105 { ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
106 { ACTION_KBD_BACKSPACE, BUTTON_HOME, BUTTON_NONE },
107 { ACTION_KBD_BACKSPACE, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE },
108 { ACTION_KBD_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
109 { ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
110 { ACTION_KBD_ABORT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
111
112 LAST_ITEM_IN_LIST
113}; /* button_context_keyboard */
114
115/** Pitchscreen **/
116static const struct button_mapping button_context_pitchscreen[] = {
117 { ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
118 { ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
119 { ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
120 { ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
121 { ACTION_PS_NUDGE_LEFT, BUTTON_PREV, BUTTON_NONE },
122 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_PREV|BUTTON_REL, BUTTON_NONE },
123 { ACTION_PS_NUDGE_RIGHT, BUTTON_NEXT, BUTTON_NONE },
124 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE },
125 { ACTION_PS_TOGGLE_MODE, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
126 { ACTION_PS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
127 { ACTION_PS_EXIT, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
128 { ACTION_PS_SLOWER, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
129 { ACTION_PS_FASTER, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
130
131 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
132}; /* button_context_pitchscreen */
133
134/** Quickscreen **/
135static const struct button_mapping button_context_quickscreen[] = {
136 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
137 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
138 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
139 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
140 { ACTION_QS_LEFT, BUTTON_PREV, BUTTON_NONE },
141 { ACTION_QS_LEFT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
142 { ACTION_QS_RIGHT, BUTTON_NEXT, BUTTON_NONE },
143 { ACTION_QS_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
144 { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
145
146 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
147}; /* button_context_quickscreen */
148
149/** Settings - General Mappings **/
150static const struct button_mapping button_context_settings[] = {
151 { ACTION_SETTINGS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
152 { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE },
153 { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
154 { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE },
155 { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
156 { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
157 { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
158
159 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
160}; /* button_context_settings */
161
162static const struct button_mapping button_context_settings_vol_is_inc[] = {
163 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
164 { ACTION_SETTINGS_INCREPEAT,BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
165 { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE },
166 { ACTION_SETTINGS_INCREPEAT,BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
167 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
168 { ACTION_SETTINGS_DECREPEAT,BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
169 { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
170 { ACTION_SETTINGS_DECREPEAT,BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
171
172 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
173}; /* button_context_settings_right_is_inc */
174
175/** Tree **/
176static const struct button_mapping button_context_tree[] = {
177 { ACTION_TREE_WPS, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION },
178 { ACTION_TREE_HOTKEY, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME },
179 { ACTION_STD_MENU, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_OPTION },
180
181 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
182}; /* button_context_tree */
183
184/** Yes/No Screen **/
185static const struct button_mapping button_context_yesnoscreen[] = {
186 { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
187
188 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
189}; /* button_context_settings_yesnoscreen */
190
191/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
192const struct button_mapping* get_context_mapping(int context)
193{
194 switch (context)
195 {
196 case CONTEXT_LIST:
197 return button_context_list;
198 case CONTEXT_STD:
199 return button_context_standard;
200 case CONTEXT_BOOKMARKSCREEN:
201 return button_context_bmark;
202 case CONTEXT_KEYBOARD:
203 return button_context_keyboard;
204 case CONTEXT_PITCHSCREEN:
205 return button_context_pitchscreen;
206 case CONTEXT_QUICKSCREEN:
207 return button_context_quickscreen;
208 case CONTEXT_SETTINGS:
209 return button_context_settings;
210 case CONTEXT_SETTINGS_TIME:
211 case CONTEXT_SETTINGS_COLOURCHOOSER:
212 case CONTEXT_SETTINGS_EQ:
213 case CONTEXT_SETTINGS_RECTRIGGER:
214 return button_context_settings_vol_is_inc;
215 case CONTEXT_TREE:
216 case CONTEXT_MAINMENU:
217 return button_context_tree;
218 case CONTEXT_WPS:
219 return button_context_wps;
220 case CONTEXT_YESNOSCREEN:
221 return button_context_yesnoscreen;
222 }
223 return button_context_standard;
224}
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 3f3bd26e30..55f89161a1 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -12534,6 +12534,40 @@
12534 </voice> 12534 </voice>
12535</phrase> 12535</phrase>
12536<phrase> 12536<phrase>
12537 id: LANG_FILTER_SHORT_SHARP
12538 desc: in sound settings
12539 user: core
12540 <source>
12541 *: none
12542 filter_roll_off: "Short Sharp"
12543 </source>
12544 <dest>
12545 *: none
12546 filter_roll_off: "Short Sharp"
12547 </dest>
12548 <voice>
12549 *: none
12550 filter_roll_off: "Short Sharp"
12551 </voice>
12552</phrase>
12553<phrase>
12554 id: LANG_FILTER_SHORT_SLOW
12555 desc: in sound settings
12556 user: core
12557 <source>
12558 *: none
12559 filter_roll_off: "Short Slow"
12560 </source>
12561 <dest>
12562 *: none
12563 filter_roll_off: "Short Slow"
12564 </dest>
12565 <voice>
12566 *: none
12567 filter_roll_off: "Short Slow"
12568 </voice>
12569</phrase>
12570<phrase>
12537 id: LANG_FILTER_SHORT 12571 id: LANG_FILTER_SHORT
12538 desc: in sound settings 12572 desc: in sound settings
12539 user: core 12573 user: core
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index ff979abd8e..f68e3ed5a3 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -281,6 +281,12 @@
281#define BATTERY_ON_TXT "Play - start" 281#define BATTERY_ON_TXT "Play - start"
282#define BATTERY_OFF_TXT "POWER" 282#define BATTERY_OFF_TXT "POWER"
283 283
284#elif CONFIG_KEYPAD == FIIO_M3K_PAD
285#define BATTERY_ON BUTTON_PLAY
286#define BATTERY_OFF BUTTON_POWER
287#define BATTERY_ON_TXT "Play - start"
288#define BATTERY_OFF_TXT "POWER"
289
284#else 290#else
285#error No keymap defined! 291#error No keymap defined!
286#endif 292#endif
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index 93b577462b..b2e0383187 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -591,6 +591,22 @@ enum {
591#define BJACK_RIGHT BUTTON_NEXT 591#define BJACK_RIGHT BUTTON_NEXT
592#define BJACK_LEFT BUTTON_PREV 592#define BJACK_LEFT BUTTON_PREV
593 593
594#elif CONFIG_KEYPAD == FIIO_M3K_PAD
595#define BJACK_SELECT_NAME "PLAY"
596#define BJACK_STAY_NAME "NEXT"
597#define BJACK_QUIT_NAME "POWER"
598#define BJACK_DOUBLE_NAME "PREV"
599#define BJACK_SELECT BUTTON_PLAY
600#define BJACK_QUIT BUTTON_POWER
601#define BJACK_MAX BUTTON_VOL_UP
602#define BJACK_MIN BUTTON_VOL_DOWN
603#define BJACK_STAY BUTTON_NEXT
604#define BJACK_DOUBLEDOWN BUTTON_PREV
605#define BJACK_UP BUTTON_HOME
606#define BJACK_DOWN BUTTON_OPTION
607#define BJACK_RIGHT BUTTON_NEXT
608#define BJACK_LEFT BUTTON_PREV
609
594#elif CONFIG_KEYPAD == IHIFI_770_PAD 610#elif CONFIG_KEYPAD == IHIFI_770_PAD
595#define BJACK_SELECT_NAME "PLAY" 611#define BJACK_SELECT_NAME "PLAY"
596#define BJACK_STAY_NAME "NEXT" 612#define BJACK_STAY_NAME "NEXT"
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index 5764c6869d..4452f23357 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -337,6 +337,16 @@ CONFIG_KEYPAD == SANSA_CONNECT_PAD
337#define UP BUTTON_HOME 337#define UP BUTTON_HOME
338#define DOWN BUTTON_OPTION 338#define DOWN BUTTON_OPTION
339 339
340#elif CONFIG_KEYPAD == FIIO_M3K_PAD
341#define QUIT BUTTON_POWER
342#define LEFT BUTTON_PREV
343#define RIGHT BUTTON_NEXT
344#define ALTLEFT BUTTON_VOL_DOWN
345#define ALTRIGHT BUTTON_VOL_UP
346#define SELECT BUTTON_PLAY
347#define UP BUTTON_HOME
348#define DOWN BUTTON_OPTION
349
340#elif CONFIG_KEYPAD == IHIFI_770_PAD 350#elif CONFIG_KEYPAD == IHIFI_770_PAD
341#define QUIT BUTTON_POWER 351#define QUIT BUTTON_POWER
342#define LEFT BUTTON_HOME 352#define LEFT BUTTON_HOME
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index ac5a6ed7cd..f02f99ee0d 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -526,6 +526,17 @@ F3: equal to "="
526#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT) 526#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
527#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT) 527#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
528 528
529#elif CONFIG_KEYPAD == FIIO_M3K_PAD
530#define CALCULATOR_LEFT BUTTON_PREV
531#define CALCULATOR_RIGHT BUTTON_NEXT
532#define CALCULATOR_UP BUTTON_HOME
533#define CALCULATOR_DOWN BUTTON_OPTION
534#define CALCULATOR_QUIT BUTTON_POWER
535#define CALCULATOR_INPUT_CALC_PRE (BUTTON_OPTION|BUTTON_REPEAT)
536#define CALCULATOR_INPUT (BUTTON_PLAY|BUTTON_REL)
537#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
538#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
539
529#elif CONFIG_KEYPAD == IHIFI_770_PAD 540#elif CONFIG_KEYPAD == IHIFI_770_PAD
530#define CALCULATOR_LEFT BUTTON_HOME 541#define CALCULATOR_LEFT BUTTON_HOME
531#define CALCULATOR_RIGHT BUTTON_VOL_DOWN 542#define CALCULATOR_RIGHT BUTTON_VOL_DOWN
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c
index 7e2472ffc9..89dcc61714 100644
--- a/apps/plugins/calendar.c
+++ b/apps/plugins/calendar.c
@@ -411,6 +411,16 @@
411#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP 411#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
412#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN 412#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
413 413
414#elif CONFIG_KEYPAD == FIIO_M3K_PAD
415#define CALENDAR_QUIT BUTTON_POWER
416#define CALENDAR_SELECT BUTTON_PLAY
417#define CALENDAR_NEXT_WEEK BUTTON_OPTION
418#define CALENDAR_PREV_WEEK BUTTON_HOME
419#define CALENDAR_NEXT_DAY BUTTON_NEXT
420#define CALENDAR_PREV_DAY BUTTON_PREV
421#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
422#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
423
414#elif CONFIG_KEYPAD == IHIFI_770_PAD 424#elif CONFIG_KEYPAD == IHIFI_770_PAD
415#define CALENDAR_QUIT BUTTON_POWER 425#define CALENDAR_QUIT BUTTON_POWER
416#define CALENDAR_SELECT BUTTON_PLAY 426#define CALENDAR_SELECT BUTTON_PLAY
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h
index ab0adbb706..567dcb1acb 100644
--- a/apps/plugins/chessbox/chessbox_pgn.h
+++ b/apps/plugins/chessbox/chessbox_pgn.h
@@ -553,6 +553,20 @@
553#define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT) 553#define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT)
554#define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT) 554#define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT)
555 555
556#elif CONFIG_KEYPAD == FIIO_M3K_PAD
557#define CB_SELECT BUTTON_PLAY
558#define CB_UP BUTTON_HOME
559#define CB_DOWN BUTTON_OPTION
560#define CB_LEFT BUTTON_PREV
561#define CB_RIGHT BUTTON_NEXT
562#define CB_PLAY BUTTON_VOL_UP
563#define CB_LEVEL BUTTON_VOL_DOWN
564#define CB_MENU BUTTON_POWER
565#define CB_SCROLL_UP (BUTTON_HOME|BUTTON_REPEAT)
566#define CB_SCROLL_DOWN (BUTTON_OPTION|BUTTON_REPEAT)
567#define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT)
568#define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT)
569
556#elif CONFIG_KEYPAD == IHIFI_770_PAD 570#elif CONFIG_KEYPAD == IHIFI_770_PAD
557#define CB_SELECT BUTTON_PLAY 571#define CB_SELECT BUTTON_PLAY
558#define CB_UP BUTTON_PREV 572#define CB_UP BUTTON_PREV
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index 649ab164d0..aee9c9f8e7 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -396,6 +396,16 @@
396#define CHC_SETTINGS_OK BUTTON_PLAY 396#define CHC_SETTINGS_OK BUTTON_PLAY
397#define CHC_SETTINGS_CANCEL BUTTON_POWER 397#define CHC_SETTINGS_CANCEL BUTTON_POWER
398 398
399#elif CONFIG_KEYPAD == FIIO_M3K_PAD
400#define CHC_QUIT BUTTON_POWER
401#define CHC_STARTSTOP BUTTON_PLAY
402#define CHC_RESET BUTTON_OPTION
403#define CHC_MENU BUTTON_HOME
404#define CHC_SETTINGS_INC BUTTON_NEXT
405#define CHC_SETTINGS_DEC BUTTON_PREV
406#define CHC_SETTINGS_OK BUTTON_PLAY
407#define CHC_SETTINGS_CANCEL BUTTON_POWER
408
399#elif CONFIG_KEYPAD == IHIFI_770_PAD 409#elif CONFIG_KEYPAD == IHIFI_770_PAD
400#define CHC_QUIT BUTTON_POWER 410#define CHC_QUIT BUTTON_POWER
401#define CHC_STARTSTOP BUTTON_PLAY 411#define CHC_STARTSTOP BUTTON_PLAY
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index cb7b85786f..bbea442d8e 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1275,6 +1275,14 @@ CONFIG_KEYPAD == MROBE500_PAD
1275#define CHIP8_KEY6 BUTTON_NEXT 1275#define CHIP8_KEY6 BUTTON_NEXT
1276#define CHIP8_KEY8 BUTTON_OPTION 1276#define CHIP8_KEY8 BUTTON_OPTION
1277 1277
1278#elif CONFIG_KEYPAD == FIIO_M3K_PAD
1279#define CHIP8_OFF BUTTON_POWER
1280#define CHIP8_KEY2 BUTTON_HOME
1281#define CHIP8_KEY4 BUTTON_PREV
1282#define CHIP8_KEY5 BUTTON_PLAY
1283#define CHIP8_KEY6 BUTTON_NEXT
1284#define CHIP8_KEY8 BUTTON_OPTION
1285
1278#elif CONFIG_KEYPAD == IHIFI_770_PAD 1286#elif CONFIG_KEYPAD == IHIFI_770_PAD
1279#define CHIP8_OFF BUTTON_POWER 1287#define CHIP8_OFF BUTTON_POWER
1280#define CHIP8_KEY2 BUTTON_NEXT 1288#define CHIP8_KEY2 BUTTON_NEXT
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index 37fed5dd01..6e9f923460 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -213,6 +213,11 @@ CONFIG_KEYPAD == MROBE500_PAD
213#define ACTION BUTTON_PLAY 213#define ACTION BUTTON_PLAY
214#define ACTIONTEXT "PLAY" 214#define ACTIONTEXT "PLAY"
215 215
216#elif CONFIG_KEYPAD == FIIO_M3K_PAD
217#define QUIT BUTTON_POWER
218#define ACTION BUTTON_PLAY
219#define ACTIONTEXT "PLAY"
220
216#elif CONFIG_KEYPAD == IHIFI_770_PAD 221#elif CONFIG_KEYPAD == IHIFI_770_PAD
217#define QUIT BUTTON_POWER 222#define QUIT BUTTON_POWER
218#define ACTION BUTTON_PLAY 223#define ACTION BUTTON_PLAY
diff --git a/apps/plugins/clix.c b/apps/plugins/clix.c
index 748090358c..d6b28b54b9 100644
--- a/apps/plugins/clix.c
+++ b/apps/plugins/clix.c
@@ -300,6 +300,14 @@
300#define CLIX_BUTTON_RIGHT BUTTON_NEXT 300#define CLIX_BUTTON_RIGHT BUTTON_NEXT
301#define CLIX_BUTTON_CLICK BUTTON_PLAY 301#define CLIX_BUTTON_CLICK BUTTON_PLAY
302 302
303#elif CONFIG_KEYPAD == FIIO_M3K_PAD
304#define CLIX_BUTTON_QUIT BUTTON_POWER
305#define CLIX_BUTTON_UP BUTTON_HOME
306#define CLIX_BUTTON_DOWN BUTTON_OPTION
307#define CLIX_BUTTON_LEFT BUTTON_PREV
308#define CLIX_BUTTON_RIGHT BUTTON_NEXT
309#define CLIX_BUTTON_CLICK BUTTON_PLAY
310
303#elif CONFIG_KEYPAD == IHIFI_770_PAD 311#elif CONFIG_KEYPAD == IHIFI_770_PAD
304#define CLIX_BUTTON_QUIT BUTTON_POWER 312#define CLIX_BUTTON_QUIT BUTTON_POWER
305#define CLIX_BUTTON_UP BUTTON_PREV 313#define CLIX_BUTTON_UP BUTTON_PREV
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index d2d831f81b..87ab5c1102 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -400,6 +400,16 @@
400#define CUBE_PAUSE BUTTON_HOME 400#define CUBE_PAUSE BUTTON_HOME
401#define CUBE_HIGHSPEED BUTTON_PLAY 401#define CUBE_HIGHSPEED BUTTON_PLAY
402 402
403#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
404#define CUBE_QUIT BUTTON_POWER
405#define CUBE_NEXT BUTTON_NEXT
406#define CUBE_PREV BUTTON_PREV
407#define CUBE_INC BUTTON_VOL_UP
408#define CUBE_DEC BUTTON_VOL_DOWN
409#define CUBE_MODE BUTTON_OPTION
410#define CUBE_PAUSE BUTTON_HOME
411#define CUBE_HIGHSPEED BUTTON_PLAY
412
403#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 413#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
404#define CUBE_QUIT BUTTON_POWER 414#define CUBE_QUIT BUTTON_POWER
405#define CUBE_NEXT BUTTON_NEXT 415#define CUBE_NEXT BUTTON_NEXT
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index fb328639bf..cd3cd90edd 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -588,6 +588,17 @@ void I_ShutdownGraphics(void)
588#define DOOMBUTTON_ENTER BUTTON_PLAY 588#define DOOMBUTTON_ENTER BUTTON_PLAY
589#define DOOMBUTTON_WEAPON BUTTON_VOL_UP 589#define DOOMBUTTON_WEAPON BUTTON_VOL_UP
590 590
591#elif CONFIG_KEYPAD == FIIO_M3K_PAD
592#define DOOMBUTTON_UP BUTTON_UP
593#define DOOMBUTTON_DOWN BUTTON_DOWN
594#define DOOMBUTTON_LEFT BUTTON_PREV
595#define DOOMBUTTON_RIGHT BUTTON_NEXT
596#define DOOMBUTTON_SHOOT BUTTON_PLAY
597#define DOOMBUTTON_OPEN BUTTON_OPTION
598#define DOOMBUTTON_ESC BUTTON_HOME
599#define DOOMBUTTON_ENTER BUTTON_PLAY
600#define DOOMBUTTON_WEAPON BUTTON_VOL_UP
601
591#elif CONFIG_KEYPAD == IHIFI_770_PAD 602#elif CONFIG_KEYPAD == IHIFI_770_PAD
592#define DOOMBUTTON_UP BUTTON_PREV 603#define DOOMBUTTON_UP BUTTON_PREV
593#define DOOMBUTTON_DOWN BUTTON_NEXT 604#define DOOMBUTTON_DOWN BUTTON_NEXT
diff --git a/apps/plugins/fft/fft.c b/apps/plugins/fft/fft.c
index 2ed0263d75..eeb6611488 100644
--- a/apps/plugins/fft/fft.c
+++ b/apps/plugins/fft/fft.c
@@ -352,6 +352,15 @@ GREY_INFO_STRUCT
352# define FFT_AMP_SCALE BUTTON_PLAY 352# define FFT_AMP_SCALE BUTTON_PLAY
353# define FFT_QUIT BUTTON_POWER 353# define FFT_QUIT BUTTON_POWER
354 354
355#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
356# define FFT_PREV_GRAPH BUTTON_PREV
357# define FFT_NEXT_GRAPH BUTTON_NEXT
358# define FFT_ORIENTATION BUTTON_HOME
359# define FFT_FREQ_SCALE BUTTON_OPTION
360# define FFT_WINDOW (BUTTON_HOME|BUTTON_POWER)
361# define FFT_AMP_SCALE BUTTON_PLAY
362# define FFT_QUIT BUTTON_POWER
363
355#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 364#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
356# define FFT_PREV_GRAPH BUTTON_PREV 365# define FFT_PREV_GRAPH BUTTON_PREV
357# define FFT_NEXT_GRAPH BUTTON_NEXT 366# define FFT_NEXT_GRAPH BUTTON_NEXT
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index 91d83e9291..4fe0681417 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -472,6 +472,18 @@
472#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY) 472#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY)
473#define FLIPIT_TOGGLE BUTTON_PLAY 473#define FLIPIT_TOGGLE BUTTON_PLAY
474 474
475#elif CONFIG_KEYPAD == FIIO_M3K_PAD
476
477#define FLIPIT_LEFT BUTTON_PREV
478#define FLIPIT_RIGHT BUTTON_NEXT
479#define FLIPIT_UP BUTTON_HOME
480#define FLIPIT_DOWN BUTTON_OPTION
481#define FLIPIT_QUIT BUTTON_POWER
482#define FLIPIT_SHUFFLE (BUTTON_HOME | BUTTON_PREV)
483#define FLIPIT_SOLVE (BUTTON_HOME | BUTTON_NEXT)
484#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY)
485#define FLIPIT_TOGGLE BUTTON_PLAY
486
475#elif CONFIG_KEYPAD == IHIFI_770_PAD 487#elif CONFIG_KEYPAD == IHIFI_770_PAD
476 488
477#define FLIPIT_LEFT BUTTON_HOME 489#define FLIPIT_LEFT BUTTON_HOME
diff --git a/apps/plugins/fractals/fractal.h b/apps/plugins/fractals/fractal.h
index 92a0b87c48..45de45c5cd 100644
--- a/apps/plugins/fractals/fractal.h
+++ b/apps/plugins/fractals/fractal.h
@@ -482,6 +482,18 @@
482#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV) 482#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV)
483#define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER) 483#define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER)
484 484
485#elif CONFIG_KEYPAD == FIIO_M3K_PAD
486#define FRACTAL_QUIT BUTTON_POWER
487#define FRACTAL_UP BUTTON_HOME
488#define FRACTAL_DOWN BUTTON_OPTION
489#define FRACTAL_LEFT BUTTON_PREV
490#define FRACTAL_RIGHT BUTTON_NEXT
491#define FRACTAL_ZOOM_IN BUTTON_VOL_UP
492#define FRACTAL_ZOOM_OUT BUTTON_VOL_DOWN
493#define FRACTAL_PRECISION_INC (BUTTON_PLAY | BUTTON_NEXT)
494#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV)
495#define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER)
496
485#elif CONFIG_KEYPAD == IHIFI_770_PAD 497#elif CONFIG_KEYPAD == IHIFI_770_PAD
486#define FRACTAL_QUIT BUTTON_POWER 498#define FRACTAL_QUIT BUTTON_POWER
487#define FRACTAL_UP BUTTON_PREV 499#define FRACTAL_UP BUTTON_PREV
diff --git a/apps/plugins/goban/goban.h b/apps/plugins/goban/goban.h
index ac02d74f50..c6a10e3944 100644
--- a/apps/plugins/goban/goban.h
+++ b/apps/plugins/goban/goban.h
@@ -467,6 +467,18 @@
467#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 467#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
468#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER 468#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER
469 469
470#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
471#define GBN_BUTTON_UP BUTTON_HOME
472#define GBN_BUTTON_DOWN BUTTON_OPTION
473#define GBN_BUTTON_LEFT BUTTON_PREV
474#define GBN_BUTTON_RIGHT BUTTON_NEXT
475#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN
476#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP
477#define GBN_BUTTON_MENU BUTTON_POWER
478#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL
479#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
480#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER
481
470#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 482#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
471 483
472#define GBN_BUTTON_UP BUTTON_PREV 484#define GBN_BUTTON_UP BUTTON_PREV
diff --git a/apps/plugins/imageviewer/imageviewer_button.h b/apps/plugins/imageviewer/imageviewer_button.h
index 7aa96023c6..e637a09ca9 100644
--- a/apps/plugins/imageviewer/imageviewer_button.h
+++ b/apps/plugins/imageviewer/imageviewer_button.h
@@ -506,6 +506,21 @@
506#define IMGVIEW_MENU BUTTON_POWER 506#define IMGVIEW_MENU BUTTON_POWER
507#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER) 507#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
508 508
509#elif CONFIG_KEYPAD == FIIO_M3K_PAD
510#define IMGVIEW_ZOOM_PRE BUTTON_PLAY
511#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
512#define IMGVIEW_ZOOM_OUT (BUTTON_PLAY | BUTTON_REPEAT)
513#define IMGVIEW_UP BUTTON_HOME
514#define IMGVIEW_DOWN BUTTON_OPTION
515#define IMGVIEW_LEFT BUTTON_PREV
516#define IMGVIEW_RIGHT BUTTON_NEXT
517#define IMGVIEW_NEXT BUTTON_VOL_UP
518#define IMGVIEW_NEXT_REPEAT (BUTTON_VOL_UP|BUTTON_REPEAT)
519#define IMGVIEW_PREVIOUS BUTTON_VOL_DOWN
520#define IMGVIEW_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT)
521#define IMGVIEW_MENU BUTTON_POWER
522#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
523
509#elif CONFIG_KEYPAD == IHIFI_770_PAD 524#elif CONFIG_KEYPAD == IHIFI_770_PAD
510#define IMGVIEW_ZOOM_PRE BUTTON_PLAY 525#define IMGVIEW_ZOOM_PRE BUTTON_PLAY
511#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL) 526#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c
index e275129d27..5e3cb12163 100644
--- a/apps/plugins/invadrox.c
+++ b/apps/plugins/invadrox.c
@@ -282,6 +282,13 @@ CONFIG_KEYPAD == MROBE500_PAD
282#define RIGHT BUTTON_VOL_DOWN 282#define RIGHT BUTTON_VOL_DOWN
283#define FIRE BUTTON_VOL_UP 283#define FIRE BUTTON_VOL_UP
284 284
285#elif CONFIG_KEYPAD == FIIO_M3K_PAD
286
287#define QUIT BUTTON_POWER
288#define LEFT BUTTON_HOME
289#define RIGHT BUTTON_VOL_DOWN
290#define FIRE BUTTON_VOL_UP
291
285#elif CONFIG_KEYPAD == IHIFI_770_PAD 292#elif CONFIG_KEYPAD == IHIFI_770_PAD
286 293
287#define QUIT BUTTON_POWER 294#define QUIT BUTTON_POWER
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index f94825650f..64a15ff4fc 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -377,6 +377,16 @@ CONFIG_KEYPAD == MROBE500_PAD
377#define HK_SELECT "PLAY" 377#define HK_SELECT "PLAY"
378#define HK_CANCEL "POWER" 378#define HK_CANCEL "POWER"
379 379
380#elif CONFIG_KEYPAD == FIIO_M3K_PAD
381#define JEWELS_UP BUTTON_HOME
382#define JEWELS_DOWN BUTTON_OPTION
383#define JEWELS_LEFT BUTTON_PREV
384#define JEWELS_RIGHT BUTTON_NEXT
385#define JEWELS_SELECT BUTTON_PLAY
386#define JEWELS_CANCEL BUTTON_POWER
387#define HK_SELECT "PLAY"
388#define HK_CANCEL "POWER"
389
380#elif CONFIG_KEYPAD == IHIFI_770_PAD 390#elif CONFIG_KEYPAD == IHIFI_770_PAD
381#define JEWELS_UP BUTTON_PREV 391#define JEWELS_UP BUTTON_PREV
382#define JEWELS_DOWN BUTTON_NEXT 392#define JEWELS_DOWN BUTTON_NEXT
diff --git a/apps/plugins/lib/keymaps.h b/apps/plugins/lib/keymaps.h
index e3de03f222..2865f9cdd7 100644
--- a/apps/plugins/lib/keymaps.h
+++ b/apps/plugins/lib/keymaps.h
@@ -239,6 +239,14 @@
239#define BTN_FIRE BUTTON_PLAY 239#define BTN_FIRE BUTTON_PLAY
240#define BTN_PAUSE BUTTON_POWER 240#define BTN_PAUSE BUTTON_POWER
241 241
242#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
243#define BTN_UP BUTTON_VOL_UP
244#define BTN_DOWN BUTTON_VOL_DOWN
245#define BTN_LEFT BUTTON_PREV
246#define BTN_RIGHT BUTTON_NEXT
247#define BTN_FIRE BUTTON_PLAY
248#define BTN_PAUSE BUTTON_POWER
249
242#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 250#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
243#define BTN_UP BUTTON_PREV 251#define BTN_UP BUTTON_PREV
244#define BTN_DOWN BUTTON_NEXT 252#define BTN_DOWN BUTTON_NEXT
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index c580074d5e..480dc446cb 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -233,6 +233,15 @@ const struct button_mapping pla_main_ctx[] =
233 { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, 233 { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE },
234 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, 234 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
235 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 235 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
236#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
237 { PLA_UP, BUTTON_HOME, BUTTON_NONE },
238 { PLA_DOWN, BUTTON_OPTION, BUTTON_NONE },
239 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE },
240 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE },
241 { PLA_UP_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE },
242 { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE },
243 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
244 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
236#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 245#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
237 { PLA_UP, BUTTON_PREV, BUTTON_NONE }, 246 { PLA_UP, BUTTON_PREV, BUTTON_NONE },
238 { PLA_DOWN, BUTTON_NEXT, BUTTON_NONE }, 247 { PLA_DOWN, BUTTON_NEXT, BUTTON_NONE },
@@ -464,6 +473,12 @@ const struct button_mapping pla_main_ctx[] =
464 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 473 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
465 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 474 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
466 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 475 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
476#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
477 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
478 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
479 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
480 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
481 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
467#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 482#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
468 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 483 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
469 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 484 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c
index e6e2b4bf51..e34cedde21 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -317,6 +317,14 @@
317#define MIDI_VOL_DOWN BUTTON_VOL_DOWN 317#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
318#define MIDI_PLAYPAUSE BUTTON_PLAY 318#define MIDI_PLAYPAUSE BUTTON_PLAY
319 319
320#elif CONFIG_KEYPAD == FIIO_M3K_PAD
321#define MIDI_QUIT BUTTON_POWER
322#define MIDI_FFWD BUTTON_NEXT
323#define MIDI_REWIND BUTTON_PREV
324#define MIDI_VOL_UP BUTTON_VOL_UP
325#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
326#define MIDI_PLAYPAUSE BUTTON_PLAY
327
320#elif CONFIG_KEYPAD == IHIFI_770_PAD 328#elif CONFIG_KEYPAD == IHIFI_770_PAD
321#define MIDI_QUIT BUTTON_POWER 329#define MIDI_QUIT BUTTON_POWER
322#define MIDI_FFWD BUTTON_VOL_DOWN 330#define MIDI_FFWD BUTTON_VOL_DOWN
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 01659dbfd2..5872973a45 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -408,6 +408,19 @@ CONFIG_KEYPAD == MROBE500_PAD
408# define MINESWP_DISCOVER2 BUTTON_VOL_UP 408# define MINESWP_DISCOVER2 BUTTON_VOL_UP
409# define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION) 409# define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION)
410 410
411#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
412# define MINESWP_LEFT BUTTON_PREV
413# define MINESWP_RIGHT BUTTON_NEXT
414# define MINESWP_UP BUTTON_HOME
415# define MINESWP_DOWN BUTTON_OPTION
416# define MINESWP_QUIT BUTTON_POWER
417# define MINESWP_TOGGLE_PRE BUTTON_PLAY
418# define MINESWP_TOGGLE (BUTTON_PLAY | BUTTON_REL)
419# define MINESWP_TOGGLE2 BUTTON_VOL_DOWN
420# define MINESWP_DISCOVER (BUTTON_PLAY | BUTTON_REPEAT)
421# define MINESWP_DISCOVER2 BUTTON_VOL_UP
422# define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION)
423
411#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 424#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
412# define MINESWP_LEFT BUTTON_HOME 425# define MINESWP_LEFT BUTTON_HOME
413# define MINESWP_RIGHT BUTTON_VOL_DOWN 426# define MINESWP_RIGHT BUTTON_VOL_DOWN
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index 3b912ba606..0368edbc88 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2574,6 +2574,11 @@ CONFIG_KEYPAD == MROBE500_PAD
2574#define MP3ENC_DONE BUTTON_POWER 2574#define MP3ENC_DONE BUTTON_POWER
2575#define MP3ENC_SELECT BUTTON_PLAY 2575#define MP3ENC_SELECT BUTTON_PLAY
2576 2576
2577#elif CONFIG_KEYPAD == FIIO_M3K_PAD
2578#define MP3ENC_PREV BUTTON_HOME
2579#define MP3ENC_NEXT BUTTON_OPTION
2580#define MP3ENC_DONE BUTTON_POWER
2581#define MP3ENC_SELECT BUTTON_PLAY
2577 2582
2578#elif CONFIG_KEYPAD == IHIFI_770_PAD 2583#elif CONFIG_KEYPAD == IHIFI_770_PAD
2579#define MP3ENC_PREV BUTTON_PREV 2584#define MP3ENC_PREV BUTTON_PREV
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index 25eb313591..43143bdaee 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -336,6 +336,16 @@ struct mpeg_settings settings;
336#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN 336#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
337#define MPEG_START_TIME_EXIT BUTTON_POWER 337#define MPEG_START_TIME_EXIT BUTTON_POWER
338 338
339#elif CONFIG_KEYPAD == FIIO_M3K_PAD
340#define MPEG_START_TIME_SELECT BUTTON_PLAY
341#define MPEG_START_TIME_LEFT BUTTON_PREV
342#define MPEG_START_TIME_RIGHT BUTTON_NEXT
343#define MPEG_START_TIME_UP BUTTON_HOME
344#define MPEG_START_TIME_DOWN BUTTON_OPTION
345#define MPEG_START_TIME_LEFT2 BUTTON_VOL_UP
346#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
347#define MPEG_START_TIME_EXIT BUTTON_POWER
348
339#elif CONFIG_KEYPAD == IHIFI_770_PAD 349#elif CONFIG_KEYPAD == IHIFI_770_PAD
340#define MPEG_START_TIME_SELECT BUTTON_PLAY 350#define MPEG_START_TIME_SELECT BUTTON_PLAY
341#define MPEG_START_TIME_LEFT BUTTON_HOME 351#define MPEG_START_TIME_LEFT BUTTON_HOME
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index 5c06fe257d..8028913c94 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -468,6 +468,15 @@ CONFIG_KEYPAD == SANSA_M200_PAD
468#define MPEG_RW BUTTON_PREV 468#define MPEG_RW BUTTON_PREV
469#define MPEG_FF BUTTON_NEXT 469#define MPEG_FF BUTTON_NEXT
470 470
471#elif CONFIG_KEYPAD == FIIO_M3K_PAD
472#define MPEG_MENU BUTTON_PLAY
473#define MPEG_STOP BUTTON_POWER
474#define MPEG_PAUSE BUTTON_HOME
475#define MPEG_VOLDOWN BUTTON_VOL_DOWN
476#define MPEG_VOLUP BUTTON_VOL_UP
477#define MPEG_RW BUTTON_PREV
478#define MPEG_FF BUTTON_NEXT
479
471#elif CONFIG_KEYPAD == IHIFI_770_PAD 480#elif CONFIG_KEYPAD == IHIFI_770_PAD
472#define MPEG_MENU BUTTON_PLAY 481#define MPEG_MENU BUTTON_PLAY
473#define MPEG_STOP BUTTON_POWER 482#define MPEG_STOP BUTTON_POWER
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c
index 4fd1883f82..2cf9b96409 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -512,6 +512,19 @@
512#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN 512#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
513#define NEED_LASTBUTTON 513#define NEED_LASTBUTTON
514 514
515#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
516#define OSCILLOSCOPE_QUIT BUTTON_POWER
517#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY
518#define OSCILLOSCOPE_DRAWMODE (BUTTON_PLAY | BUTTON_REL)
519#define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_PLAY
520#define OSCILLOSCOPE_ORIENTATION (BUTTON_PLAY | BUTTON_REPEAT)
521#define OSCILLOSCOPE_ADVMODE BUTTON_HOME
522#define OSCILLOSCOPE_PAUSE BUTTON_OPTION
523#define OSCILLOSCOPE_SPEED_UP BUTTON_NEXT
524#define OSCILLOSCOPE_SPEED_DOWN BUTTON_PREV
525#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
526#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
527#define NEED_LASTBUTTON
515 528
516#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 529#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
517#define OSCILLOSCOPE_QUIT BUTTON_POWER 530#define OSCILLOSCOPE_QUIT BUTTON_POWER
diff --git a/apps/plugins/pacbox/pacbox.h b/apps/plugins/pacbox/pacbox.h
index 78a171467a..a687806d96 100644
--- a/apps/plugins/pacbox/pacbox.h
+++ b/apps/plugins/pacbox/pacbox.h
@@ -382,6 +382,14 @@
382#define PACMAN_1UP BUTTON_VOL_UP 382#define PACMAN_1UP BUTTON_VOL_UP
383#define PACMAN_COIN BUTTON_PLAY 383#define PACMAN_COIN BUTTON_PLAY
384 384
385#elif CONFIG_KEYPAD == FIIO_M3K_PAD
386#define PACMAN_UP BUTTON_PREV
387#define PACMAN_DOWN BUTTON_NEXT
388#define PACMAN_LEFT BUTTON_HOME
389#define PACMAN_RIGHT BUTTON_VOL_DOWN
390#define PACMAN_MENU BUTTON_POWER
391#define PACMAN_1UP BUTTON_VOL_UP
392#define PACMAN_COIN BUTTON_PLAY
385 393
386#elif CONFIG_KEYPAD == IHIFI_770_PAD 394#elif CONFIG_KEYPAD == IHIFI_770_PAD
387#define PACMAN_UP BUTTON_PREV 395#define PACMAN_UP BUTTON_PREV
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c
index 0a299c995f..5f947fe5f2 100644
--- a/apps/plugins/pegbox.c
+++ b/apps/plugins/pegbox.c
@@ -660,6 +660,23 @@ CONFIG_KEYPAD == MROBE500_PAD
660#define LVL_UP_TEXT "VOL+" 660#define LVL_UP_TEXT "VOL+"
661#define LVL_DOWN_TEXT "VOL-" 661#define LVL_DOWN_TEXT "VOL-"
662 662
663#elif CONFIG_KEYPAD == FIIO_M3K_PAD
664#define PEGBOX_SELECT BUTTON_PLAY
665#define PEGBOX_QUIT BUTTON_POWER
666#define PEGBOX_RESTART (BUTTON_POWER | BUTTON_HOME)
667#define PEGBOX_LVL_UP BUTTON_VOL_UP
668#define PEGBOX_LVL_DOWN BUTTON_VOL_DOWN
669#define PEGBOX_UP BUTTON_HOME
670#define PEGBOX_DOWN BUTTON_OPTION
671#define PEGBOX_RIGHT BUTTON_NEXT
672#define PEGBOX_LEFT BUTTON_PREV
673
674#define SELECT_TEXT "PLAY"
675#define QUIT_TEXT "POWER"
676#define RESTART_TEXT "HOME"
677#define LVL_UP_TEXT "VOL+"
678#define LVL_DOWN_TEXT "VOL-"
679
663#elif CONFIG_KEYPAD == IHIFI_770_PAD 680#elif CONFIG_KEYPAD == IHIFI_770_PAD
664#define PEGBOX_SELECT BUTTON_PLAY 681#define PEGBOX_SELECT BUTTON_PLAY
665#define PEGBOX_QUIT BUTTON_POWER 682#define PEGBOX_QUIT BUTTON_POWER
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index a000a88fe7..41525f3ffe 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -309,6 +309,14 @@ CONFIG_KEYPAD == MROBE500_PAD
309#define PONG_RIGHT_UP BUTTON_HOME 309#define PONG_RIGHT_UP BUTTON_HOME
310#define PONG_RIGHT_DOWN BUTTON_NEXT 310#define PONG_RIGHT_DOWN BUTTON_NEXT
311 311
312#elif CONFIG_KEYPAD == FIIO_M3K_PAD
313#define PONG_QUIT BUTTON_POWER
314#define PONG_PAUSE BUTTON_PLAY
315#define PONG_LEFT_UP BUTTON_PREV
316#define PONG_LEFT_DOWN BUTTON_OPTION
317#define PONG_RIGHT_UP BUTTON_HOME
318#define PONG_RIGHT_DOWN BUTTON_NEXT
319
312#elif CONFIG_KEYPAD == IHIFI_770_PAD 320#elif CONFIG_KEYPAD == IHIFI_770_PAD
313#define PONG_QUIT BUTTON_POWER 321#define PONG_QUIT BUTTON_POWER
314#define PONG_PAUSE BUTTON_PREV 322#define PONG_PAUSE BUTTON_PREV
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h
index ceeabeebc8..1547e52573 100644
--- a/apps/plugins/reversi/reversi-gui.h
+++ b/apps/plugins/reversi/reversi-gui.h
@@ -341,6 +341,17 @@
341#define REVERSI_BUTTON_MENU BUTTON_PLAY 341#define REVERSI_BUTTON_MENU BUTTON_PLAY
342#define REVERSI_BUTTON_MENU_LONGPRESS 342#define REVERSI_BUTTON_MENU_LONGPRESS
343 343
344#elif CONFIG_KEYPAD == FIIO_M3K_PAD
345#define REVERSI_BUTTON_QUIT BUTTON_POWER
346#define REVERSI_BUTTON_UP BUTTON_HOME
347#define REVERSI_BUTTON_DOWN BUTTON_OPTION
348#define REVERSI_BUTTON_LEFT BUTTON_PREV
349#define REVERSI_BUTTON_RIGHT BUTTON_NEXT
350#define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY
351#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
352#define REVERSI_BUTTON_MENU BUTTON_PLAY
353#define REVERSI_BUTTON_MENU_LONGPRESS
354
344#elif CONFIG_KEYPAD == IHIFI_770_PAD 355#elif CONFIG_KEYPAD == IHIFI_770_PAD
345#define REVERSI_BUTTON_QUIT BUTTON_POWER 356#define REVERSI_BUTTON_QUIT BUTTON_POWER
346#define REVERSI_BUTTON_UP BUTTON_PREV 357#define REVERSI_BUTTON_UP BUTTON_PREV
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index f1f260a55d..ec6d892a0b 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -467,6 +467,18 @@
467#define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL) 467#define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL)
468#define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT) 468#define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT)
469 469
470#elif CONFIG_KEYPAD == FIIO_M3K_PAD
471
472#define ROCKBLOX_OFF BUTTON_POWER
473#define ROCKBLOX_ROTATE_CCW BUTTON_HOME
474#define ROCKBLOX_ROTATE_CCW2 BUTTON_VOL_DOWN
475#define ROCKBLOX_ROTATE_CW BUTTON_VOL_UP
476#define ROCKBLOX_DOWN BUTTON_OPTION
477#define ROCKBLOX_LEFT BUTTON_PREV
478#define ROCKBLOX_RIGHT BUTTON_NEXT
479#define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL)
480#define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT)
481
470#elif CONFIG_KEYPAD == IHIFI_770_PAD 482#elif CONFIG_KEYPAD == IHIFI_770_PAD
471 483
472#define ROCKBLOX_OFF BUTTON_POWER 484#define ROCKBLOX_OFF BUTTON_POWER
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index 29269f18fb..c96946cf7d 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -445,6 +445,16 @@ static void setoptions (void)
445 options.SELECT = BUTTON_VOL_UP; 445 options.SELECT = BUTTON_VOL_UP;
446 options.MENU = BUTTON_POWER; 446 options.MENU = BUTTON_POWER;
447 447
448#elif CONFIG_KEYPAD == FIIO_M3K_PAD
449 options.UP = BUTTON_PREV;
450 options.DOWN = BUTTON_NEXT;
451
452 options.A = BUTTON_HOME;
453 options.B = BUTTON_OPTION;
454 options.START = BUTTON_VOL_DOWN;
455 options.SELECT = BUTTON_VOL_UP;
456 options.MENU = BUTTON_POWER;
457
448#elif CONFIG_KEYPAD == IHIFI_770_PAD 458#elif CONFIG_KEYPAD == IHIFI_770_PAD
449 options.UP = BUTTON_PREV; 459 options.UP = BUTTON_PREV;
450 options.DOWN = BUTTON_NEXT; 460 options.DOWN = BUTTON_NEXT;
diff --git a/apps/plugins/rockpaint.c b/apps/plugins/rockpaint.c
index 8e4df10280..f28fbdf622 100644
--- a/apps/plugins/rockpaint.c
+++ b/apps/plugins/rockpaint.c
@@ -338,6 +338,39 @@
338#define ROCKPAINT_LEFT BUTTON_PREV 338#define ROCKPAINT_LEFT BUTTON_PREV
339#define ROCKPAINT_RIGHT BUTTON_NEXT 339#define ROCKPAINT_RIGHT BUTTON_NEXT
340 340
341#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
342#define ROCKPAINT_QUIT BUTTON_POWER
343#define ROCKPAINT_DRAW BUTTON_PLAY
344#define ROCKPAINT_MENU (BUTTON_HOME | BUTTON_POWER)
345#define ROCKPAINT_TOOLBAR BUTTON_VOL_UP
346#define ROCKPAINT_TOOLBAR2 BUTTON_VOL_DOWN
347#define ROCKPAINT_UP BUTTON_HOME
348#define ROCKPAINT_DOWN BUTTON_OPTION
349#define ROCKPAINT_LEFT BUTTON_PREV
350#define ROCKPAINT_RIGHT BUTTON_NEXT
351
352#elif CONFIG_KEYPAD == XDUOO_X20_PAD
353#define ROCKPAINT_QUIT BUTTON_POWER
354#define ROCKPAINT_DRAW BUTTON_PLAY
355#define ROCKPAINT_MENU (BUTTON_HOME | BUTTON_POWER)
356#define ROCKPAINT_TOOLBAR BUTTON_VOL_UP
357#define ROCKPAINT_TOOLBAR2 BUTTON_VOL_DOWN
358#define ROCKPAINT_UP BUTTON_HOME
359#define ROCKPAINT_DOWN BUTTON_OPTION
360#define ROCKPAINT_LEFT BUTTON_PREV
361#define ROCKPAINT_RIGHT BUTTON_NEXT
362
363#elif CONFIG_KEYPAD == FIIO_M3K_PAD
364#define ROCKPAINT_QUIT BUTTON_POWER
365#define ROCKPAINT_DRAW BUTTON_PLAY
366#define ROCKPAINT_MENU (BUTTON_HOME | BUTTON_POWER)
367#define ROCKPAINT_TOOLBAR BUTTON_VOL_UP
368#define ROCKPAINT_TOOLBAR2 BUTTON_VOL_DOWN
369#define ROCKPAINT_UP BUTTON_HOME
370#define ROCKPAINT_DOWN BUTTON_OPTION
371#define ROCKPAINT_LEFT BUTTON_PREV
372#define ROCKPAINT_RIGHT BUTTON_NEXT
373
341#elif CONFIG_KEYPAD == IHIFI_770_PAD 374#elif CONFIG_KEYPAD == IHIFI_770_PAD
342#define ROCKPAINT_QUIT BUTTON_POWER 375#define ROCKPAINT_QUIT BUTTON_POWER
343#define ROCKPAINT_DRAW BUTTON_PLAY 376#define ROCKPAINT_DRAW BUTTON_PLAY
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index e8d349defd..7683016066 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -330,6 +330,14 @@ CONFIG_KEYPAD == MROBE500_PAD
330#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER) 330#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
331#define PUZZLE_PICTURE BUTTON_PLAY 331#define PUZZLE_PICTURE BUTTON_PLAY
332 332
333#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
334#define PUZZLE_QUIT BUTTON_POWER
335#define PUZZLE_LEFT BUTTON_PREV
336#define PUZZLE_RIGHT BUTTON_NEXT
337#define PUZZLE_UP BUTTON_HOME
338#define PUZZLE_DOWN BUTTON_OPTION
339#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
340#define PUZZLE_PICTURE BUTTON_PLAY
333 341
334#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 342#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
335#define PUZZLE_QUIT BUTTON_POWER 343#define PUZZLE_QUIT BUTTON_POWER
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index 4471cd12a6..ebfb39c9a7 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -289,6 +289,14 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
289#define SNAKE_DOWN BUTTON_OPTION 289#define SNAKE_DOWN BUTTON_OPTION
290#define SNAKE_PLAYPAUSE BUTTON_PLAY 290#define SNAKE_PLAYPAUSE BUTTON_PLAY
291 291
292#elif CONFIG_KEYPAD == FIIO_M3K_PAD
293#define SNAKE_QUIT BUTTON_POWER
294#define SNAKE_LEFT BUTTON_PREV
295#define SNAKE_RIGHT BUTTON_NEXT
296#define SNAKE_UP BUTTON_HOME
297#define SNAKE_DOWN BUTTON_OPTION
298#define SNAKE_PLAYPAUSE BUTTON_PLAY
299
292#elif CONFIG_KEYPAD == IHIFI_770_PAD 300#elif CONFIG_KEYPAD == IHIFI_770_PAD
293#define SNAKE_QUIT BUTTON_POWER 301#define SNAKE_QUIT BUTTON_POWER
294#define SNAKE_LEFT BUTTON_HOME 302#define SNAKE_LEFT BUTTON_HOME
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index bfff0bf870..77400dfff1 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -419,6 +419,15 @@ CONFIG_KEYPAD == MROBE500_PAD
419#define SNAKE2_PLAYPAUSE BUTTON_PLAY 419#define SNAKE2_PLAYPAUSE BUTTON_PLAY
420#define SNAKE2_PLAYPAUSE_TEXT "PLAY" 420#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
421 421
422#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
423#define SNAKE2_LEFT BUTTON_PREV
424#define SNAKE2_RIGHT BUTTON_NEXT
425#define SNAKE2_UP BUTTON_HOME
426#define SNAKE2_DOWN BUTTON_OPTION
427#define SNAKE2_QUIT BUTTON_POWER
428#define SNAKE2_PLAYPAUSE BUTTON_PLAY
429#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
430
422#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 431#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
423#define SNAKE2_LEFT BUTTON_HOME 432#define SNAKE2_LEFT BUTTON_HOME
424#define SNAKE2_RIGHT BUTTON_VOL_DOWN 433#define SNAKE2_RIGHT BUTTON_VOL_DOWN
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index 08359d9fcc..da3c303ace 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -663,6 +663,22 @@
663#define BUTTON_SAVE BUTTON_PLAY 663#define BUTTON_SAVE BUTTON_PLAY
664#define BUTTON_SAVE_NAME "PLAY" 664#define BUTTON_SAVE_NAME "PLAY"
665 665
666#elif CONFIG_KEYPAD == FIIO_M3K_PAD
667#define SOKOBAN_LEFT BUTTON_PREV
668#define SOKOBAN_RIGHT BUTTON_NEXT
669#define SOKOBAN_UP BUTTON_HOME
670#define SOKOBAN_DOWN BUTTON_OPTION
671#define SOKOBAN_MENU BUTTON_POWER
672#define SOKOBAN_UNDO_PRE BUTTON_PLAY
673#define SOKOBAN_UNDO (BUTTON_PLAY | BUTTON_REL)
674#define SOKOBAN_REDO (BUTTON_POWER | BUTTON_PLAY)
675#define SOKOBAN_LEVEL_DOWN BUTTON_VOL_DOWN
676#define SOKOBAN_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_NEXT)
677#define SOKOBAN_LEVEL_UP BUTTON_VOL_UP
678#define SOKOBAN_PAUSE BUTTON_PLAY
679#define BUTTON_SAVE BUTTON_PLAY
680#define BUTTON_SAVE_NAME "PLAY"
681
666#elif CONFIG_KEYPAD == IHIFI_770_PAD 682#elif CONFIG_KEYPAD == IHIFI_770_PAD
667#define SOKOBAN_LEFT BUTTON_HOME 683#define SOKOBAN_LEFT BUTTON_HOME
668#define SOKOBAN_RIGHT BUTTON_VOL_DOWN 684#define SOKOBAN_RIGHT BUTTON_VOL_DOWN
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index a7844fba92..1996dc97e7 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -684,6 +684,25 @@ CONFIG_KEYPAD == MROBE500_PAD
684# define HK_CUR2STACK "DBL PLAY" 684# define HK_CUR2STACK "DBL PLAY"
685# define HK_REM2STACK "NEXT" 685# define HK_REM2STACK "NEXT"
686 686
687#elif CONFIG_KEYPAD == FIIO_M3K_PAD
688# define SOL_QUIT BUTTON_POWER
689# define SOL_UP BUTTON_HOME
690# define SOL_DOWN BUTTON_OPTION
691# define SOL_LEFT BUTTON_PREV
692# define SOL_RIGHT BUTTON_NEXT
693# define SOL_MOVE_PRE BUTTON_PLAY
694# define SOL_MOVE (BUTTON_PLAY | BUTTON_REL)
695# define SOL_DRAW (BUTTON_POWER | BUTTON_REPEAT)
696# define SOL_REM2CUR BUTTON_VOL_DOWN
697# define SOL_CUR2STACK_PRE BUTTON_PLAY
698# define SOL_CUR2STACK (BUTTON_PLAY | BUTTON_REPEAT)
699# define SOL_REM2STACK BUTTON_VOL_UP
700# define HK_MOVE "PLAY"
701# define HK_DRAW "DBL HOME"
702# define HK_REM2CUR "PREV"
703# define HK_CUR2STACK "DBL PLAY"
704# define HK_REM2STACK "NEXT"
705
687#elif CONFIG_KEYPAD == IHIFI_770_PAD 706#elif CONFIG_KEYPAD == IHIFI_770_PAD
688# define SOL_QUIT BUTTON_POWER 707# define SOL_QUIT BUTTON_POWER
689# define SOL_UP BUTTON_PREV 708# define SOL_UP BUTTON_PREV
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index b366da0d60..1b3bdda0d1 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -354,6 +354,15 @@
354#define AST_RIGHT BUTTON_NEXT 354#define AST_RIGHT BUTTON_NEXT
355#define AST_FIRE BUTTON_PLAY 355#define AST_FIRE BUTTON_PLAY
356 356
357#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
358#define AST_PAUSE BUTTON_VOL_UP
359#define AST_QUIT BUTTON_POWER
360#define AST_THRUST BUTTON_HOME
361#define AST_HYPERSPACE BUTTON_OPTION
362#define AST_LEFT BUTTON_PREV
363#define AST_RIGHT BUTTON_NEXT
364#define AST_FIRE BUTTON_PLAY
365
357#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 366#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
358#define AST_PAUSE BUTTON_PLAY 367#define AST_PAUSE BUTTON_PLAY
359#define AST_QUIT BUTTON_POWER 368#define AST_QUIT BUTTON_POWER
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index ea1d5b8bf8..cf8522fbac 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -620,6 +620,22 @@
620#define STAR_LEVEL_DOWN_NAME "PLAY + PREV" 620#define STAR_LEVEL_DOWN_NAME "PLAY + PREV"
621#define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION" 621#define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION"
622 622
623#elif CONFIG_KEYPAD == FIIO_M3K_PAD
624#define STAR_QUIT BUTTON_POWER
625#define STAR_LEFT BUTTON_PREV
626#define STAR_RIGHT BUTTON_NEXT
627#define STAR_UP BUTTON_HOME
628#define STAR_DOWN BUTTON_OPTION
629#define STAR_TOGGLE_CONTROL BUTTON_PLAY
630#define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_NEXT)
631#define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_PREV)
632#define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_OPTION)
633#define STAR_TOGGLE_CONTROL_NAME "PLAY"
634#define STAR_QUIT_NAME "POWER"
635#define STAR_LEVEL_UP_NAME "PLAY + NEXT"
636#define STAR_LEVEL_DOWN_NAME "PLAY + PREV"
637#define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION"
638
623#elif CONFIG_KEYPAD == IHIFI_770_PAD 639#elif CONFIG_KEYPAD == IHIFI_770_PAD
624#define STAR_QUIT BUTTON_POWER 640#define STAR_QUIT BUTTON_POWER
625#define STAR_LEFT BUTTON_HOME 641#define STAR_LEFT BUTTON_HOME
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index 6fca37d06f..801c735f00 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -301,6 +301,14 @@
301#define STOPWATCH_SCROLL_UP BUTTON_HOME 301#define STOPWATCH_SCROLL_UP BUTTON_HOME
302#define STOPWATCH_SCROLL_DOWN BUTTON_OPTION 302#define STOPWATCH_SCROLL_DOWN BUTTON_OPTION
303 303
304#elif CONFIG_KEYPAD == FIIO_M3K_PAD
305#define STOPWATCH_QUIT BUTTON_POWER
306#define STOPWATCH_START_STOP BUTTON_NEXT
307#define STOPWATCH_RESET_TIMER BUTTON_PREV
308#define STOPWATCH_LAP_TIMER BUTTON_PLAY
309#define STOPWATCH_SCROLL_UP BUTTON_HOME
310#define STOPWATCH_SCROLL_DOWN BUTTON_OPTION
311
304#elif CONFIG_KEYPAD == IHIFI_770_PAD 312#elif CONFIG_KEYPAD == IHIFI_770_PAD
305#define STOPWATCH_QUIT BUTTON_POWER 313#define STOPWATCH_QUIT BUTTON_POWER
306#define STOPWATCH_START_STOP BUTTON_NEXT 314#define STOPWATCH_START_STOP BUTTON_NEXT
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h
index 434223ef68..749087260d 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -432,6 +432,20 @@
432#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL) 432#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
433#define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER) 433#define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER)
434 434
435#elif CONFIG_KEYPAD == FIIO_M3K_PAD
436#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
437#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
438#define SUDOKU_BUTTON_UP BUTTON_HOME
439#define SUDOKU_BUTTON_DOWN BUTTON_OPTION
440#define SUDOKU_BUTTON_LEFT BUTTON_PREV
441#define SUDOKU_BUTTON_RIGHT BUTTON_NEXT
442#define SUDOKU_BUTTON_TOGGLEBACK BUTTON_VOL_DOWN
443#define SUDOKU_BUTTON_TOGGLE BUTTON_VOL_UP
444#define SUDOKU_BUTTON_ALTTOGGLE BUTTON_PLAY
445#define SUDOKU_BUTTON_MENU_PRE BUTTON_POWER
446#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
447#define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER)
448
435#elif CONFIG_KEYPAD == IHIFI_770_PAD 449#elif CONFIG_KEYPAD == IHIFI_770_PAD
436#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER 450#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
437#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT) 451#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
diff --git a/apps/plugins/text_viewer/tv_button.h b/apps/plugins/text_viewer/tv_button.h
index 6fcfc24e4f..dea87ebd52 100644
--- a/apps/plugins/text_viewer/tv_button.h
+++ b/apps/plugins/text_viewer/tv_button.h
@@ -533,6 +533,18 @@
533#define TV_LINE_DOWN BUTTON_OPTION 533#define TV_LINE_DOWN BUTTON_OPTION
534#define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY) 534#define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY)
535 535
536#elif CONFIG_KEYPAD == FIIO_M3K_PAD
537#define TV_QUIT BUTTON_POWER
538#define TV_SCROLL_UP BUTTON_VOL_UP
539#define TV_SCROLL_DOWN BUTTON_VOL_DOWN
540#define TV_SCREEN_LEFT BUTTON_PREV
541#define TV_SCREEN_RIGHT BUTTON_NEXT
542#define TV_MENU BUTTON_PLAY
543#define TV_AUTOSCROLL (BUTTON_POWER | BUTTON_HOME)
544#define TV_LINE_UP BUTTON_HOME
545#define TV_LINE_DOWN BUTTON_OPTION
546#define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY)
547
536/* Xuelin 770/770c keys */ 548/* Xuelin 770/770c keys */
537#elif CONFIG_KEYPAD == IHIFI_770_PAD 549#elif CONFIG_KEYPAD == IHIFI_770_PAD
538#define TV_QUIT BUTTON_POWER 550#define TV_QUIT BUTTON_POWER
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index d2ba8c992c..66ddf03dd8 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -419,6 +419,17 @@
419#define LABEL_MENU "PLAY" 419#define LABEL_MENU "PLAY"
420#define LABEL_VOLUME "VOL UP/DN" 420#define LABEL_VOLUME "VOL UP/DN"
421 421
422#elif (CONFIG_KEYPAD == FIIO_M3K_PAD)
423#define VUMETER_QUIT BUTTON_POWER
424#define VUMETER_HELP BUTTON_HOME
425#define VUMETER_MENU BUTTON_PLAY
426#define VUMETER_UP BUTTON_VOL_UP
427#define VUMETER_DOWN BUTTON_VOL_DOWN
428#define LABEL_HELP "HOME"
429#define LABEL_QUIT "POWER"
430#define LABEL_MENU "PLAY"
431#define LABEL_VOLUME "VOL UP/DN"
432
422#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 433#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
423#define VUMETER_QUIT BUTTON_POWER 434#define VUMETER_QUIT BUTTON_POWER
424#define VUMETER_HELP BUTTON_HOME 435#define VUMETER_HELP BUTTON_HOME
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 59f3138c0a..6cf03dfaff 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -380,6 +380,15 @@ CONFIG_KEYPAD == MROBE500_PAD
380#define BTN_QUIT BUTTON_POWER 380#define BTN_QUIT BUTTON_POWER
381#define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER) 381#define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER)
382 382
383#elif CONFIG_KEYPAD == FIIO_M3K_PAD
384#define BTN_DIR_UP BUTTON_HOME
385#define BTN_DIR_DOWN BUTTON_OPTION
386#define BTN_DIR_LEFT BUTTON_PREV
387#define BTN_DIR_RIGHT BUTTON_NEXT
388#define BTN_STARTPAUSE BUTTON_PLAY
389#define BTN_QUIT BUTTON_POWER
390#define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER)
391
383#elif CONFIG_KEYPAD == IHIFI_770_PAD 392#elif CONFIG_KEYPAD == IHIFI_770_PAD
384#define BTN_DIR_UP BUTTON_PREV 393#define BTN_DIR_UP BUTTON_PREV
385#define BTN_DIR_DOWN BUTTON_NEXT 394#define BTN_DIR_DOWN BUTTON_NEXT
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index 5ed1fbb612..94161c683d 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -342,6 +342,15 @@ CONFIG_KEYPAD == MROBE500_PAD
342#define DOWN BUTTON_OPTION 342#define DOWN BUTTON_OPTION
343#define PAUSE BUTTON_PLAY 343#define PAUSE BUTTON_PLAY
344 344
345#elif CONFIG_KEYPAD == FIIO_M3K_PAD
346
347#define QUIT BUTTON_POWER
348#define LEFT BUTTON_PREV
349#define RIGHT BUTTON_NEXT
350#define UP BUTTON_HOME
351#define DOWN BUTTON_OPTION
352#define PAUSE BUTTON_PLAY
353
345#elif CONFIG_KEYPAD == IHIFI_770_PAD 354#elif CONFIG_KEYPAD == IHIFI_770_PAD
346 355
347#define QUIT BUTTON_POWER 356#define QUIT BUTTON_POWER
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index 967b979883..eae20e7976 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -282,6 +282,14 @@
282#define ZX_UP BUTTON_HOME 282#define ZX_UP BUTTON_HOME
283#define ZX_DOWN BUTTON_OPTION 283#define ZX_DOWN BUTTON_OPTION
284 284
285#elif CONFIG_KEYPAD == FIIO_M3K_PAD
286#define ZX_SELECT BUTTON_PLAY
287#define ZX_MENU BUTTON_POWER
288#define ZX_LEFT BUTTON_PREV
289#define ZX_RIGHT BUTTON_NEXT
290#define ZX_UP BUTTON_HOME
291#define ZX_DOWN BUTTON_OPTION
292
285#elif CONFIG_KEYPAD == IHIFI_770_PAD 293#elif CONFIG_KEYPAD == IHIFI_770_PAD
286#define ZX_SELECT BUTTON_PLAY 294#define ZX_SELECT BUTTON_PLAY
287#define ZX_MENU BUTTON_POWER 295#define ZX_MENU BUTTON_POWER
diff --git a/apps/plugins/zxbox/zxbox_keyb.c b/apps/plugins/zxbox/zxbox_keyb.c
index 4dc50e2ae8..c16c3cd20a 100644
--- a/apps/plugins/zxbox/zxbox_keyb.c
+++ b/apps/plugins/zxbox/zxbox_keyb.c
@@ -275,6 +275,15 @@
275#define KBD_UP BUTTON_HOME 275#define KBD_UP BUTTON_HOME
276#define KBD_DOWN BUTTON_OPTION 276#define KBD_DOWN BUTTON_OPTION
277 277
278#elif CONFIG_KEYPAD == FIIO_M3K_PAD
279
280#define KBD_SELECT BUTTON_PLAY
281#define KBD_ABORT BUTTON_POWER
282#define KBD_LEFT BUTTON_PREV
283#define KBD_RIGHT BUTTON_NEXT
284#define KBD_UP BUTTON_HOME
285#define KBD_DOWN BUTTON_OPTION
286
278#elif CONFIG_KEYPAD == IHIFI_770_PAD 287#elif CONFIG_KEYPAD == IHIFI_770_PAD
279 288
280#define KBD_SELECT BUTTON_PLAY 289#define KBD_SELECT BUTTON_PLAY
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 41c20c7809..0ad638746a 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -845,7 +845,10 @@ const struct settings_list settings[] = {
845 845
846#ifdef AUDIOHW_HAVE_FILTER_ROLL_OFF 846#ifdef AUDIOHW_HAVE_FILTER_ROLL_OFF
847 CHOICE_SETTING(F_SOUNDSETTING, roll_off, LANG_FILTER_ROLL_OFF, 0, 847 CHOICE_SETTING(F_SOUNDSETTING, roll_off, LANG_FILTER_ROLL_OFF, 0,
848#ifndef AUDIOHW_HAVE_SHORT_ROLL_OFF 848#if defined(AUDIOHW_HAVE_SHORT2_ROLL_OFF)
849 "roll_off", "sharp,slow,short sharp,short slow", sound_set_filter_roll_off,
850 4, ID2P(LANG_FILTER_SHARP), ID2P(LANG_FILTER_SLOW), ID2P(LANG_FILTER_SHORT_SHARP), ID2P(LANG_FILTER_SHORT_SLOW)),
851#elif defined(AUDIOHW_HAVE_SHORT_ROLL_OFF)
849 "roll_off", "sharp,slow", sound_set_filter_roll_off, 852 "roll_off", "sharp,slow", sound_set_filter_roll_off,
850 2, ID2P(LANG_FILTER_SHARP), ID2P(LANG_FILTER_SLOW)), 853 2, ID2P(LANG_FILTER_SHARP), ID2P(LANG_FILTER_SLOW)),
851#else 854#else