summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzymon Dziok <b0hoon@o2.pl>2011-12-03 23:13:17 +0000
committerSzymon Dziok <b0hoon@o2.pl>2011-12-03 23:13:17 +0000
commitc31f7d0121f3d4b53edabdeeabf3774f7a8940b4 (patch)
treef32dd75b012ea36cdaf3c8846eec4a9583eb078f
parent6b5dff4c7be02d159b7c267372f63155cc31dbb8 (diff)
downloadrockbox-c31f7d0121f3d4b53edabdeeabf3774f7a8940b4.tar.gz
rockbox-c31f7d0121f3d4b53edabdeeabf3774f7a8940b4.zip
HDD6330: introduce a new button (BUTTON_TAP), based on the hardware support for gestures. From now on some things are accessible by tapping on the vertical scroll strip. Reorganize, fix and remap some of the keymaps, add missing keymap for the recording.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31132 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/keymaps/keymap-hdd6330.c85
-rw-r--r--firmware/drivers/synaptics-mep.c2
-rw-r--r--firmware/target/arm/debug-target.h6
-rw-r--r--firmware/target/arm/philips/hdd6330/button-hdd6330.c6
-rw-r--r--firmware/target/arm/philips/hdd6330/button-target.h4
-rw-r--r--uisimulator/buttonmap/gogear-hdd6330.c3
6 files changed, 69 insertions, 37 deletions
diff --git a/apps/keymaps/keymap-hdd6330.c b/apps/keymaps/keymap-hdd6330.c
index fc4ad67822..3d5c967baa 100644
--- a/apps/keymaps/keymap-hdd6330.c
+++ b/apps/keymaps/keymap-hdd6330.c
@@ -50,8 +50,8 @@ static const struct button_mapping button_context_standard[] = {
50 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 50 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
51 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, 51 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
52 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 52 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
53 { ACTION_STD_CANCEL, BUTTON_PREV, BUTTON_NONE }, 53 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
54 { ACTION_STD_OK, BUTTON_NEXT, BUTTON_NONE }, 54 { ACTION_STD_OK, BUTTON_TAP, BUTTON_NONE },
55 { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 55 { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
56 { ACTION_STD_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, 56 { ACTION_STD_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
57 { ACTION_STD_QUICKSCREEN, BUTTON_VIEW|BUTTON_REPEAT, BUTTON_VIEW }, 57 { ACTION_STD_QUICKSCREEN, BUTTON_VIEW|BUTTON_REPEAT, BUTTON_VIEW },
@@ -62,26 +62,26 @@ static const struct button_mapping button_context_standard[] = {
62static const struct button_mapping button_context_wps[] = { 62static const struct button_mapping button_context_wps[] = {
63 { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, 63 { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
64 { ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, 64 { ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
65 { ACTION_WPS_SKIPNEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
66 { ACTION_WPS_SKIPPREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV }, 65 { ACTION_WPS_SKIPPREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
66 { ACTION_WPS_SKIPNEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
67 { ACTION_WPS_SEEKBACK, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, 67 { ACTION_WPS_SEEKBACK, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
68 { ACTION_WPS_SEEKFWD, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 68 { ACTION_WPS_SEEKFWD, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
69 { ACTION_WPS_STOPSEEK, BUTTON_PREV|BUTTON_REL, BUTTON_PREV|BUTTON_REPEAT }, 69 { ACTION_WPS_STOPSEEK, BUTTON_PREV|BUTTON_REL, BUTTON_PREV|BUTTON_REPEAT },
70 { ACTION_WPS_STOPSEEK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT|BUTTON_REPEAT }, 70 { ACTION_WPS_STOPSEEK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT|BUTTON_REPEAT },
71 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
72 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE }, 71 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
72 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
73 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, 73 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
74 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 74 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
75 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
76 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, 75 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
77 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 76 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
78 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, 77 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
78 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
79 { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 79 { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
80 { ACTION_WPS_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, 80 { ACTION_WPS_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
81 { ACTION_WPS_HOTKEY, BUTTON_VIEW|BUTTON_REL, BUTTON_VIEW }, 81 { ACTION_WPS_HOTKEY, BUTTON_VIEW|BUTTON_REL, BUTTON_VIEW },
82 { ACTION_WPS_QUICKSCREEN, BUTTON_VIEW|BUTTON_REPEAT, BUTTON_VIEW }, 82 { ACTION_WPS_QUICKSCREEN, BUTTON_VIEW|BUTTON_REPEAT, BUTTON_VIEW },
83 { ACTION_WPS_VIEW_PLAYLIST, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT},
84 { ACTION_WPS_BROWSE, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 83 { ACTION_WPS_BROWSE, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
84 { ACTION_WPS_VIEW_PLAYLIST, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT},
85 85
86 LAST_ITEM_IN_LIST 86 LAST_ITEM_IN_LIST
87}; /* button_context_wps */ 87}; /* button_context_wps */
@@ -159,17 +159,17 @@ static const struct button_mapping button_context_settings_right_is_inc[] = {
159}; /* button_context_settingsgraphical */ 159}; /* button_context_settingsgraphical */
160 160
161static const struct button_mapping button_context_yesno[] = { 161static const struct button_mapping button_context_yesno[] = {
162 { ACTION_YESNO_ACCEPT, BUTTON_NEXT, BUTTON_NONE }, 162 { ACTION_YESNO_ACCEPT, BUTTON_TAP, BUTTON_NONE },
163 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 163 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
164}; /* button_context_settings_yesno */ 164}; /* button_context_settings_yesno */
165 165
166static const struct button_mapping button_context_colorchooser[] = { 166static const struct button_mapping button_context_colorchooser[] = {
167 { ACTION_STD_OK, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE }, 167 { ACTION_STD_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_NONE },
168 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS), 168 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
169}; /* button_context_colorchooser */ 169}; /* button_context_colorchooser */
170 170
171static const struct button_mapping button_context_eq[] = { 171static const struct button_mapping button_context_eq[] = {
172 { ACTION_STD_OK, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE }, 172 { ACTION_STD_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_NONE },
173 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS), 173 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
174}; /* button_context_eq */ 174}; /* button_context_eq */
175 175
@@ -181,8 +181,8 @@ static const struct button_mapping button_context_bmark[] = {
181}; /* button_context_bmark */ 181}; /* button_context_bmark */
182 182
183static const struct button_mapping button_context_time[] = { 183static const struct button_mapping button_context_time[] = {
184 { ACTION_STD_CANCEL, BUTTON_PREV, BUTTON_NONE }, 184 { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
185 { ACTION_STD_OK, BUTTON_NEXT, BUTTON_NONE }, 185 { ACTION_STD_OK, BUTTON_TAP, BUTTON_NONE },
186 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS), 186 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
187}; /* button_context_time */ 187}; /* button_context_time */
188 188
@@ -211,7 +211,7 @@ static const struct button_mapping button_context_pitchscreen[] = {
211 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, 211 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
212 { ACTION_PS_TOGGLE_MODE, BUTTON_PLAY, BUTTON_NONE }, 212 { ACTION_PS_TOGGLE_MODE, BUTTON_PLAY, BUTTON_NONE },
213 { ACTION_PS_RESET, BUTTON_VIEW, BUTTON_NONE }, 213 { ACTION_PS_RESET, BUTTON_VIEW, BUTTON_NONE },
214 { ACTION_PS_EXIT, BUTTON_PREV, BUTTON_NONE }, 214 { ACTION_PS_EXIT, BUTTON_MENU, BUTTON_NONE },
215 { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 215 { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
216 { ACTION_PS_FASTER, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 216 { ACTION_PS_FASTER, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
217 217
@@ -223,25 +223,40 @@ static const struct button_mapping button_context_keyboard[] = {
223 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 223 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
224 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 224 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
225 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 225 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
226 { ACTION_KBD_CURSOR_LEFT, BUTTON_VIEW|BUTTON_LEFT, BUTTON_NONE },
227 { ACTION_KBD_CURSOR_LEFT, BUTTON_VIEW|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
228 { ACTION_KBD_CURSOR_RIGHT, BUTTON_VIEW|BUTTON_RIGHT, BUTTON_NONE },
229 { ACTION_KBD_CURSOR_RIGHT, BUTTON_VIEW|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
230 { ACTION_KBD_SELECT, BUTTON_PLAY, BUTTON_NONE },
231 { ACTION_KBD_PAGE_FLIP, BUTTON_VIEW|BUTTON_MENU, BUTTON_NONE },
232 { ACTION_KBD_DONE, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
233 { ACTION_KBD_ABORT, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
234 { ACTION_KBD_BACKSPACE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
235 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE }, 226 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
236 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 227 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
237 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE }, 228 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
238 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 229 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
239 { ACTION_KBD_MORSE_INPUT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, 230 { ACTION_KBD_SELECT, BUTTON_TAP, BUTTON_NONE },
231 { ACTION_KBD_BACKSPACE, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
232 { ACTION_KBD_PAGE_FLIP, BUTTON_VOL_UP, BUTTON_NONE },
233 { ACTION_KBD_DONE, BUTTON_VIEW|BUTTON_REL, BUTTON_VIEW },
234 { ACTION_KBD_ABORT, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
235 { ACTION_KBD_MORSE_INPUT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NEXT },
240 { ACTION_KBD_MORSE_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE }, 236 { ACTION_KBD_MORSE_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
241 237
242 LAST_ITEM_IN_LIST 238 LAST_ITEM_IN_LIST
243}; /* button_context_keyboard */ 239}; /* button_context_keyboard */
244 240
241#ifdef HAVE_RECORDING
242const struct button_mapping button_context_recscreen[] = {
243 { ACTION_REC_NEWFILE, BUTTON_TAP|BUTTON_REL, BUTTON_TAP },
244 { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
245 { ACTION_REC_PAUSE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
246 { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
247 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
248 { ACTION_STD_NEXT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
249 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
250 { ACTION_STD_PREV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
251 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
252 { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
253 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
254 { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
255
256 LAST_ITEM_IN_LIST
257}; /* button_context_recscreen */
258#endif
259
245#if CONFIG_TUNER 260#if CONFIG_TUNER
246static const struct button_mapping button_context_radio[] = { 261static const struct button_mapping button_context_radio[] = {
247 { ACTION_FM_MENU, BUTTON_MENU | BUTTON_REL, BUTTON_MENU }, 262 { ACTION_FM_MENU, BUTTON_MENU | BUTTON_REL, BUTTON_MENU },
@@ -259,8 +274,8 @@ static const struct button_mapping button_context_radio[] = {
259static const struct button_mapping button_context_usb_hid[] = { 274static const struct button_mapping button_context_usb_hid[] = {
260 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_PLAY|BUTTON_NEXT|BUTTON_REL, BUTTON_PLAY|BUTTON_NEXT }, 275 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_PLAY|BUTTON_NEXT|BUTTON_REL, BUTTON_PLAY|BUTTON_NEXT },
261 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_PLAY|BUTTON_NEXT|BUTTON_REPEAT, BUTTON_PLAY|BUTTON_NEXT }, 276 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_PLAY|BUTTON_NEXT|BUTTON_REPEAT, BUTTON_PLAY|BUTTON_NEXT },
262 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_PLAY|BUTTON_PREV|BUTTON_REL, BUTTON_PLAY|BUTTON_NEXT }, 277 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_PLAY|BUTTON_PREV|BUTTON_REL, BUTTON_PLAY|BUTTON_PREV },
263 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_PLAY|BUTTON_PREV|BUTTON_REPEAT, BUTTON_PLAY|BUTTON_NEXT }, 278 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_PLAY|BUTTON_PREV|BUTTON_REPEAT, BUTTON_PLAY|BUTTON_PREV },
264 279
265 LAST_ITEM_IN_LIST 280 LAST_ITEM_IN_LIST
266}; /* button_context_usb_hid */ 281}; /* button_context_usb_hid */
@@ -270,11 +285,15 @@ static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
270 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 285 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
271 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP, BUTTON_NONE }, 286 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP, BUTTON_NONE },
272 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 287 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
288 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_DOWN, BUTTON_NONE },
289 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
290 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_UP, BUTTON_NONE },
291 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
273 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 292 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
274 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, 293 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
275 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, 294 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
276 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 295 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
277 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT}, 296 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
278 297
279 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 298 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
280}; /* button_context_usb_hid_mode_multimedia */ 299}; /* button_context_usb_hid_mode_multimedia */
@@ -288,10 +307,10 @@ static const struct button_mapping button_context_usb_hid_mode_presentation[] =
288 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT }, 307 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
289 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_VIEW|BUTTON_REL, BUTTON_VIEW }, 308 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_VIEW|BUTTON_REL, BUTTON_VIEW },
290 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_VIEW|BUTTON_REPEAT, BUTTON_VIEW }, 309 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_VIEW|BUTTON_REPEAT, BUTTON_VIEW },
291 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_UP|BUTTON_REL, BUTTON_VOL_UP }, 310 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_VOL_DOWN },
292 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_VOL_UP }, 311 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_VOL_DOWN },
293 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_VOL_DOWN }, 312 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_UP|BUTTON_REL, BUTTON_VOL_UP },
294 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_VOL_DOWN }, 313 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_VOL_UP },
295 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 314 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
296 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, 315 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
297 316
@@ -403,6 +422,10 @@ const struct button_mapping* get_context_mapping(int context)
403 case CONTEXT_KEYBOARD: 422 case CONTEXT_KEYBOARD:
404 case CONTEXT_MORSE_INPUT: 423 case CONTEXT_MORSE_INPUT:
405 return button_context_keyboard; 424 return button_context_keyboard;
425#ifdef HAVE_RECORDING
426 case CONTEXT_RECSCREEN:
427 return button_context_recscreen;
428#endif
406#if CONFIG_TUNER 429#if CONFIG_TUNER
407 case CONTEXT_FM: 430 case CONTEXT_FM:
408 return button_context_radio; 431 return button_context_radio;
diff --git a/firmware/drivers/synaptics-mep.c b/firmware/drivers/synaptics-mep.c
index 48139534f2..01845bfe0c 100644
--- a/firmware/drivers/synaptics-mep.c
+++ b/firmware/drivers/synaptics-mep.c
@@ -561,6 +561,8 @@ int touchpad_read_device(char *data, int len)
561/* for HDD6330 an absolute packet will follow for sensor nr 0 which we ignore */ 561/* for HDD6330 an absolute packet will follow for sensor nr 0 which we ignore */
562#if defined(PHILIPS_HDD6330) 562#if defined(PHILIPS_HDD6330)
563 if ((data[3]>>6) == 0) syn_read(tmp, 4); 563 if ((data[3]>>6) == 0) syn_read(tmp, 4);
564 // relay tap gesture packet
565 if (tmp[1]==0x02) { data[1]=0x02; data[2]=0x00; data[3]=0x00; }
564#endif 566#endif
565 logf(" pos %d", val); 567 logf(" pos %d", val);
566 logf(" z %d", data[3]); 568 logf(" z %d", data[3]);
diff --git a/firmware/target/arm/debug-target.h b/firmware/target/arm/debug-target.h
index 28f95327ad..b7a1f7e5cb 100644
--- a/firmware/target/arm/debug-target.h
+++ b/firmware/target/arm/debug-target.h
@@ -30,16 +30,14 @@
30# define DEBUG_CANCEL BUTTON_MENU 30# define DEBUG_CANCEL BUTTON_MENU
31 31
32#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 32#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
33 (CONFIG_KEYPAD == SANSA_C200_PAD) 33 (CONFIG_KEYPAD == SANSA_C200_PAD) || \
34 (CONFIG_KEYPAD == PHILIPS_HDD6330_PAD)
34# define DEBUG_CANCEL BUTTON_LEFT 35# define DEBUG_CANCEL BUTTON_LEFT
35 36
36#elif (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) || \ 37#elif (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) || \
37 (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) 38 (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD)
38# define DEBUG_CANCEL BUTTON_POWER 39# define DEBUG_CANCEL BUTTON_POWER
39 40
40#elif (CONFIG_KEYPAD == PHILIPS_HDD6330_PAD)
41# define DEBUG_CANCEL BUTTON_PREV
42
43#elif (CONFIG_KEYPAD == SAMSUNG_YH_PAD) 41#elif (CONFIG_KEYPAD == SAMSUNG_YH_PAD)
44# define DEBUG_CANCEL BUTTON_PLAY 42# define DEBUG_CANCEL BUTTON_PLAY
45 43
diff --git a/firmware/target/arm/philips/hdd6330/button-hdd6330.c b/firmware/target/arm/philips/hdd6330/button-hdd6330.c
index fc171c72ba..4e40de57ab 100644
--- a/firmware/target/arm/philips/hdd6330/button-hdd6330.c
+++ b/firmware/target/arm/philips/hdd6330/button-hdd6330.c
@@ -26,7 +26,7 @@
26#include "synaptics-mep.h" 26#include "synaptics-mep.h"
27 27
28/*#define LOGF_ENABLE*/ 28/*#define LOGF_ENABLE*/
29#include "logf.h" 29/*#include "logf.h"*/
30 30
31static int int_btn = BUTTON_NONE; 31static int int_btn = BUTTON_NONE;
32#ifndef BOOTLOADER 32#ifndef BOOTLOADER
@@ -78,6 +78,10 @@ void button_int(void)
78 if (data[1] & 0x8) 78 if (data[1] & 0x8)
79 int_btn |= BUTTON_VIEW; 79 int_btn |= BUTTON_VIEW;
80 } 80 }
81 else if ((data[1] & MEP_GESTURE) && (data[3] >> 6) == 0) /* index = 0 */
82 {
83 int_btn |= BUTTON_TAP;
84 }
81 else if ((data[0] == MEP_ABSOLUTE_HEADER)) 85 else if ((data[0] == MEP_ABSOLUTE_HEADER))
82 { 86 {
83 if (data[1] & MEP_FINGER) 87 if (data[1] & MEP_FINGER)
diff --git a/firmware/target/arm/philips/hdd6330/button-target.h b/firmware/target/arm/philips/hdd6330/button-target.h
index 492a5014e5..8d4ed5ef5f 100644
--- a/firmware/target/arm/philips/hdd6330/button-target.h
+++ b/firmware/target/arm/philips/hdd6330/button-target.h
@@ -29,6 +29,7 @@
29#define MEP_BUTTON_ID 0x9 29#define MEP_BUTTON_ID 0x9
30#define MEP_ABSOLUTE_HEADER 0x0b 30#define MEP_ABSOLUTE_HEADER 0x0b
31#define MEP_FINGER 0x01 31#define MEP_FINGER 0x01
32#define MEP_GESTURE 0x02
32 33
33#define HAS_BUTTON_HOLD 34#define HAS_BUTTON_HOLD
34 35
@@ -53,7 +54,8 @@ void button_int(void);
53#define BUTTON_NEXT 0x00000200 54#define BUTTON_NEXT 0x00000200
54#define BUTTON_PREV 0x00000400 55#define BUTTON_PREV 0x00000400
55#define BUTTON_PLAY 0x00000800 56#define BUTTON_PLAY 0x00000800
56#define BUTTON_MAIN 0x00000fff 57#define BUTTON_TAP 0x00001000
58#define BUTTON_MAIN 0x00001fff
57 59
58/* No Remote control */ 60/* No Remote control */
59#define BUTTON_REMOTE 0 61#define BUTTON_REMOTE 0
diff --git a/uisimulator/buttonmap/gogear-hdd6330.c b/uisimulator/buttonmap/gogear-hdd6330.c
index ee3ad56971..6451e27973 100644
--- a/uisimulator/buttonmap/gogear-hdd6330.c
+++ b/uisimulator/buttonmap/gogear-hdd6330.c
@@ -70,6 +70,9 @@ int key_to_button(int keyboard_button)
70 case SDLK_KP_MINUS: 70 case SDLK_KP_MINUS:
71 new_btn = BUTTON_VOL_DOWN; 71 new_btn = BUTTON_VOL_DOWN;
72 break; 72 break;
73 case SDLK_t:
74 new_btn = BUTTON_TAP;
75 break;
73 } 76 }
74 return new_btn; 77 return new_btn;
75} 78}