From a507bb283782ee3adb1fc9ba0c6f094108ef558c Mon Sep 17 00:00:00 2001 From: Sebastian Leonhardt Date: Mon, 20 Jul 2015 01:50:26 +0200 Subject: YH8xx,YH9xx: Keymap improvement The main "innovation" in this patch are two "virtual buttons" for the record switch on YH92x targets. When the switch state changes, a single BUTTON_REC_SW_ON or .._OFF button event will be generated. Thus keymap code can react on switching, but not on the actual state of the switch. Wherever sensible, the following user scheme is applied: - use PLAY as confirm button - use REW button or Long REW to exit - use REC (YH820) or FFWD (YH92X) as modifier key for button combos Change-Id: Ic8d1db9cc6869daed8dda98990dfdf7f6fd5d5a1 --- apps/plugins/sokoban.c | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) (limited to 'apps/plugins/sokoban.c') diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c index 70bc57e218..76eb6288cd 100644 --- a/apps/plugins/sokoban.c +++ b/apps/plugins/sokoban.c @@ -474,19 +474,34 @@ #define SOKOBAN_MENU BUTTON_POWER #define SOKOBAN_MENU_NAME "[POWER]" -#elif (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) || \ - (CONFIG_KEYPAD == SAMSUNG_YH920_PAD) +#elif CONFIG_KEYPAD == SAMSUNG_YH820_PAD #define SOKOBAN_LEFT BUTTON_LEFT #define SOKOBAN_RIGHT BUTTON_RIGHT #define SOKOBAN_UP BUTTON_UP #define SOKOBAN_DOWN BUTTON_DOWN -#define SOKOBAN_MENU BUTTON_REC +#define SOKOBAN_MENU BUTTON_PLAY +#define SOKOBAN_UNDO BUTTON_REW +#define SOKOBAN_REDO BUTTON_FFWD +#define SOKOBAN_LEVEL_DOWN (BUTTON_REC | BUTTON_DOWN) +#define SOKOBAN_LEVEL_REPEAT (BUTTON_REC | BUTTON_RIGHT) +#define SOKOBAN_LEVEL_UP (BUTTON_REC | BUTTON_UP) +#define SOKOBAN_QUIT_REPLAY BUTTON_REW +#define SOKOBAN_PAUSE BUTTON_PLAY +#define BUTTON_SAVE BUTTON_PLAY +#define BUTTON_SAVE_NAME "PLAY" + +#elif CONFIG_KEYPAD == SAMSUNG_YH920_PAD +#define SOKOBAN_LEFT BUTTON_LEFT +#define SOKOBAN_RIGHT BUTTON_RIGHT +#define SOKOBAN_UP BUTTON_UP +#define SOKOBAN_DOWN BUTTON_DOWN +#define SOKOBAN_MENU BUTTON_PLAY #define SOKOBAN_UNDO BUTTON_REW -#define SOKOBAN_UNDO_PRE (BUTTON_REW | BUTTON_LEFT) #define SOKOBAN_REDO BUTTON_FFWD #define SOKOBAN_LEVEL_DOWN (BUTTON_PLAY | BUTTON_DOWN) #define SOKOBAN_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_RIGHT) #define SOKOBAN_LEVEL_UP (BUTTON_PLAY | BUTTON_UP) +#define SOKOBAN_QUIT_REPLAY BUTTON_REW #define SOKOBAN_PAUSE BUTTON_PLAY #define BUTTON_SAVE BUTTON_PLAY #define BUTTON_SAVE_NAME "PLAY" @@ -662,6 +677,10 @@ #endif #endif +#ifndef SOKOBAN_QUIT_REPLAY +#define SOKOBAN_QUIT_REPLAY SOKOBAN_MENU +#endif + #define SOKOBAN_FONT FONT_SYSFIXED @@ -1413,7 +1432,7 @@ static bool load(char *filename, bool silent) while ((button = rb->button_get(false)) || paused) { switch (button) { - case SOKOBAN_MENU: + case SOKOBAN_QUIT_REPLAY: /* Pretend the level is complete so we'll quit */ current_info.level.boxes_to_go = 0; return true; @@ -1602,6 +1621,20 @@ static int sokoban_menu(void) rb->lcd_putsxy(3, 36, "[VOL-] Previous Level"); rb->lcd_putsxy(3, 46, "[NEXT+PREV] Restart Level"); rb->lcd_putsxy(3, 56, "[VOL+] Next Level"); +#elif CONFIG_KEYPAD == SAMSUNG_YH920_PAD + rb->lcd_putsxy(3, 6, "[PLAY] Menu"); + rb->lcd_putsxy(3, 16, "[REW] Undo"); + rb->lcd_putsxy(3, 26, "[FFWD] Redo"); + rb->lcd_putsxy(3, 36, "[PLAY+DOWN] Previous Level"); + rb->lcd_putsxy(3, 46, "[PLAY+RIGHT] Restart Level"); + rb->lcd_putsxy(3, 56, "[PLAY+UP] Next Level"); +#elif CONFIG_KEYPAD == SAMSUNG_YH820_PAD + rb->lcd_putsxy(3, 6, "[PLAY] Menu"); + rb->lcd_putsxy(3, 16, "[REW] Undo"); + rb->lcd_putsxy(3, 26, "[FFWD] Redo"); + rb->lcd_putsxy(3, 36, "[REC+DOWN] Prev. Lvl"); + rb->lcd_putsxy(3, 46, "[REC+RIGHT] Rest. Lvl"); + rb->lcd_putsxy(3, 56, "[REC+UP] Next Level"); #endif #ifdef HAVE_TOUCHSCREEN -- cgit v1.2.3