Samsung YH820/92x keymap bugfixes

This patch fixes some (mostly small) plugin issues with the "big"
YH-keymap patch (a507b). Only one fix affects the main keymaps
(virtual keyboard "DONE" now exits after long key /release/ instead
of long button /press/).

Change-Id: Id34f925ebfa97ae4974cd9405fbe1fee4f597833
diff --git a/apps/keymaps/keymap-yh8xx_yh9xx.c b/apps/keymaps/keymap-yh8xx_yh9xx.c
index c8bf9d7..32623e1 100644
--- a/apps/keymaps/keymap-yh8xx_yh9xx.c
+++ b/apps/keymaps/keymap-yh8xx_yh9xx.c
@@ -307,7 +307,7 @@
 #endif
     { ACTION_KBD_SELECT,       BUTTON_PLAY,                     BUTTON_NONE },
     { ACTION_KBD_PAGE_FLIP,    BUTTON_FFWD|BUTTON_REL,          BUTTON_FFWD },
-    { ACTION_KBD_DONE,         BUTTON_FFWD|BUTTON_REPEAT,       BUTTON_NONE },
+    { ACTION_KBD_DONE,         BUTTON_FFWD|BUTTON_REL, BUTTON_FFWD|BUTTON_REPEAT },
     { ACTION_KBD_BACKSPACE,    BUTTON_REW|BUTTON_REL,           BUTTON_REW  },
     { ACTION_KBD_ABORT,        BUTTON_REW|BUTTON_REPEAT,        BUTTON_NONE },
 #ifdef SAMSUNG_YH820
diff --git a/apps/plugins/bounce.c b/apps/plugins/bounce.c
index 9e0ae7b..29b1b8f 100644
--- a/apps/plugins/bounce.c
+++ b/apps/plugins/bounce.c
@@ -467,7 +467,13 @@
 enum plugin_status plugin_start(const void* parameter)
 {
     int w, h;
-    char *off = "[Off] to stop";
+    char *off =
+#if (CONFIG_KEYPAD == SAMSUNG_YH920_PAD) || \
+    (CONFIG_KEYPAD == SAMSUNG_YH820_PAD)
+        "[Rew] to stop";
+#else
+        "[Off] to stop";
+#endif
 
     (void)(parameter);
 
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c
index d2744ea..2ce0bed 100644
--- a/apps/plugins/calendar.c
+++ b/apps/plugins/calendar.c
@@ -191,6 +191,7 @@
 #define CALENDAR_PREV_DAY   BUTTON_LEFT
 #define CALENDAR_NEXT_MONTH BUTTON_BOTTOMRIGHT
 #define CALENDAR_PREV_MONTH BUTTON_BOTTOMLEFT
+#define CALENDAR_EVENT_MENU_NAME "menu"
 
 #elif CONFIG_KEYPAD == CREATIVEZVM_PAD
 #define CALENDAR_QUIT       BUTTON_BACK
@@ -211,6 +212,7 @@
 #define CALENDAR_PREV_DAY   BUTTON_BACK
 #define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
 #define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
+#define CALENDAR_EVENT_MENU_NAME "play"
 
 #elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD
 #define CALENDAR_QUIT       BUTTON_POWER
@@ -251,6 +253,7 @@
 #define CALENDAR_PREV_DAY   BUTTON_LEFT
 #define CALENDAR_NEXT_MONTH BUTTON_BOTTOMRIGHT
 #define CALENDAR_PREV_MONTH BUTTON_BOTTOMLEFT
+#define CALENDAR_EVENT_MENU_NAME "menu"
 
 #elif (CONFIG_KEYPAD == ONDAVX777_PAD)
 #define CALENDAR_QUIT       BUTTON_POWER
@@ -287,6 +290,7 @@
 #define CALENDAR_PREV_DAY   BUTTON_PREV
 #define CALENDAR_NEXT_MONTH BUTTON_PLAY
 #define CALENDAR_PREV_MONTH BUTTON_MENU
+#define CALENDAR_EVENT_MENU_NAME "FFWD"
 
 #elif CONFIG_KEYPAD == MPIO_HD200_PAD
 #define CALENDAR_QUIT       (BUTTON_REC|BUTTON_PLAY)
@@ -297,6 +301,7 @@
 #define CALENDAR_PREV_DAY   BUTTON_VOL_DOWN
 #define CALENDAR_NEXT_MONTH BUTTON_PLAY
 #define CALENDAR_PREV_MONTH BUTTON_REC
+#define CALENDAR_EVENT_MENU_NAME "func"
 
 #elif CONFIG_KEYPAD == MPIO_HD300_PAD
 #define CALENDAR_QUIT       (BUTTON_MENU|BUTTON_REPEAT)
@@ -307,6 +312,7 @@
 #define CALENDAR_PREV_DAY   BUTTON_DOWN
 #define CALENDAR_NEXT_MONTH BUTTON_PLAY
 #define CALENDAR_PREV_MONTH BUTTON_REC
+#define CALENDAR_EVENT_MENU_NAME "enter"
 
 #elif CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD
 #define CALENDAR_QUIT       BUTTON_POWER
@@ -317,6 +323,7 @@
 #define CALENDAR_PREV_DAY   BUTTON_LEFT
 #define CALENDAR_NEXT_MONTH BUTTON_PLAYPAUSE
 #define CALENDAR_PREV_MONTH BUTTON_BACK
+#define CALENDAR_EVENT_MENU_NAME "select"
 
 #elif CONFIG_KEYPAD == SANSA_CONNECT_PAD
 #define CALENDAR_QUIT       BUTTON_POWER
@@ -347,6 +354,7 @@
 #define CALENDAR_PREV_DAY   BUTTON_LEFT
 #define CALENDAR_NEXT_MONTH (BUTTON_RIGHT|BUTTON_POWER)
 #define CALENDAR_PREV_MONTH (BUTTON_LEFT|BUTTON_POWER)
+#define CALENDAR_EVENT_MENU_NAME "select"
 
 #elif CONFIG_KEYPAD == HM801_PAD
 #define CALENDAR_QUIT       BUTTON_POWER
@@ -357,6 +365,7 @@
 #define CALENDAR_PREV_DAY   BUTTON_LEFT
 #define CALENDAR_NEXT_MONTH BUTTON_NEXT
 #define CALENDAR_PREV_MONTH BUTTON_PREV
+#define CALENDAR_EVENT_MENU_NAME "select"
 
 #elif CONFIG_KEYPAD == SONY_NWZ_PAD
 #define CALENDAR_QUIT        BUTTON_BACK
@@ -387,6 +396,7 @@
 #define CALENDAR_PREV_DAY   BUTTON_LEFT
 #define CALENDAR_NEXT_MONTH BUTTON_BOTTOMRIGHT
 #define CALENDAR_PREV_MONTH BUTTON_BOTTOMLEFT
+#define CALENDAR_EVENT_MENU_NAME "play"
 
 #else
 #error "No keypad setting."
@@ -417,6 +427,13 @@
 #ifndef CALENDAR_PREV_MONTH
 #define CALENDAR_PREV_MONTH BUTTON_BOTTOMRIGHT
 #endif
+#ifndef CALENDAR_EVENT_MENU_NAME
+#define CALENDAR_EVENT_MENU_NAME "select"
+#endif
+#endif
+
+#ifndef CALENDAR_EVENT_MENU_NAME
+#define CALENDAR_EVENT_MENU_NAME "right"
 #endif
 
 #define MEMO_FILE PLUGIN_APPS_DATA_DIR "/.memo"
@@ -910,7 +927,7 @@
     int button;
 
     rb->gui_synclist_init(&gui_memos, &get_event_text, shown, false, 1, NULL);
-    rb->gui_synclist_set_title(&gui_memos, "Events (play : menu)", NOICON);
+    rb->gui_synclist_set_title(&gui_memos, "Events (" CALENDAR_EVENT_MENU_NAME " : menu)", NOICON);
     rb->gui_synclist_set_nb_items(&gui_memos, memos_in_shown_memory);
     rb->gui_synclist_select_item(&gui_memos, selected);
     rb->gui_synclist_draw(&gui_memos);
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index c97dce9..8f13f4b 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -402,10 +402,9 @@
 #define DOOMBUTTON_RIGHT   BUTTON_RIGHT
 #define DOOMBUTTON_SHOOT   BUTTON_PLAY
 #define DOOMBUTTON_OPEN    BUTTON_REW
-#define DOOMBUTTON_ESC     BUTTON_REC_SW_ON
-#define DOOMBUTTON_ESC2    BUTTON_REC_SW_OFF
 #define DOOMBUTTON_ENTER   BUTTON_PLAY
 #define DOOMBUTTON_WEAPON  BUTTON_FFWD
+#define DOOMBUTTON_REC_SWITCH /* record switch toggles run mode; in game menu via hold switch */
 
 #elif CONFIG_KEYPAD == SAMSUNG_YH820_PAD
 #define DOOMBUTTON_UP      BUTTON_UP
@@ -618,7 +617,7 @@
          hswitch=0;
       }
 #if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \
-    (CONFIG_KEYPAD == IPOD_1G2G_PAD)
+    (CONFIG_KEYPAD == IPOD_1G2G_PAD) || (CONFIG_KEYPAD == SAMSUNG_YH920_PAD)
       /* Bring up the menu */
       event.data1=KEY_ESCAPE;
 #else
@@ -630,10 +629,12 @@
    holdbutton=rb->button_hold();
 #endif
 
-#ifdef DOOMBUTTON_SCROLLWHEEL
+#if defined(DOOMBUTTON_SCROLLWHEEL) || defined(DOOMBUTTON_REC_SWITCH)
    /* use button_get(false) for clickwheel checks */
    int button; /* move me */
    button = rb->button_get(false);
+
+#ifdef DOOMBUTTON_SCROLLWHEEL
    switch(button){
    case DOOMBUTTON_SCROLLWHEEL_CC | BUTTON_REPEAT:
    case DOOMBUTTON_SCROLLWHEEL_CC:
@@ -649,6 +650,16 @@
          D_PostEvent(&event);
          break;
    }
+#endif
+#ifdef DOOMBUTTON_REC_SWITCH
+   if (button==BUTTON_REC_SW_ON || button==BUTTON_REC_SW_OFF) {
+       event.type = ev_keydown;
+       event.data1=KEY_CAPSLOCK; /* Enable run */
+       D_PostEvent(&event);
+       event.type = ev_keyup;
+       D_PostEvent(&event);
+   }
+#endif
 #endif   
    newbuttonstate = rb->button_status();
 #ifdef DOOMBUTTON_SCROLLWHEEL
@@ -696,11 +707,7 @@
          D_PostEvent(&event);
       }
 #ifdef DOOMBUTTON_ESC
-      if(released & DOOMBUTTON_ESC
-#ifdef DOOMBUTTON_ESC2
-         || released & DOOMBUTTON_ESC2
-#endif
-        )
+      if(released & DOOMBUTTON_ESC)
       {
          event.data1=KEY_ESCAPE;
          D_PostEvent(&event);
@@ -762,11 +769,7 @@
          D_PostEvent(&event);
       }
 #ifdef DOOMBUTTON_ESC
-      if(pressed & DOOMBUTTON_ESC
-#ifdef DOOMBUTTON_ESC2
-         || pressed & DOOMBUTTON_ESC2
-#endif
-        )
+      if(pressed & DOOMBUTTON_ESC)
       {
          event.data1=KEY_ESCAPE;
          D_PostEvent(&event);
diff --git a/apps/plugins/goban/goban.h b/apps/plugins/goban/goban.h
index 75196a5..93fdf50 100644
--- a/apps/plugins/goban/goban.h
+++ b/apps/plugins/goban/goban.h
@@ -318,18 +318,29 @@
 #define  GBN_BUTTON_PLAY               BUTTON_MENU | BUTTON_REL
 #define  GBN_BUTTON_NAV_MODE           BUTTON_OFF
 
-#elif (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) || \
-      (CONFIG_KEYPAD == SAMSUNG_YH920_PAD)
+#elif (CONFIG_KEYPAD == SAMSUNG_YH920_PAD)
 #define  GBN_BUTTON_UP                 BUTTON_UP
 #define  GBN_BUTTON_DOWN               BUTTON_DOWN
 #define  GBN_BUTTON_LEFT               BUTTON_LEFT
 #define  GBN_BUTTON_RIGHT              BUTTON_RIGHT
-#define  GBN_BUTTON_RETREAT            BUTTON_REW
-#define  GBN_BUTTON_ADVANCE            BUTTON_FFWD
-#define  GBN_BUTTON_MENU               BUTTON_PLAY | BUTTON_LEFT
-#define  GBN_BUTTON_PLAY               BUTTON_PLAY
-#define  GBN_BUTTON_CONTEXT            BUTTON_PLAY | BUTTON_DOWN
-#define  GBN_BUTTON_NEXT_VAR           BUTTON_PLAY | BUTTON_UP
+#define  GBN_BUTTON_RETREAT            BUTTON_FFWD | BUTTON_LEFT
+#define  GBN_BUTTON_ADVANCE            BUTTON_FFWD | BUTTON_RIGHT
+#define  GBN_BUTTON_MENU               BUTTON_REW
+#define  GBN_BUTTON_PLAY               BUTTON_PLAY | BUTTON_REL
+#define  GBN_BUTTON_CONTEXT            BUTTON_PLAY | BUTTON_REPEAT
+#define  GBN_BUTTON_NEXT_VAR           BUTTON_FFWD | BUTTON_UP
+
+#elif (CONFIG_KEYPAD == SAMSUNG_YH820_PAD)
+#define  GBN_BUTTON_UP                 BUTTON_UP
+#define  GBN_BUTTON_DOWN               BUTTON_DOWN
+#define  GBN_BUTTON_LEFT               BUTTON_LEFT
+#define  GBN_BUTTON_RIGHT              BUTTON_RIGHT
+#define  GBN_BUTTON_RETREAT            BUTTON_REC | BUTTON_LEFT
+#define  GBN_BUTTON_ADVANCE            BUTTON_REC | BUTTON_RIGHT
+#define  GBN_BUTTON_MENU               BUTTON_REW
+#define  GBN_BUTTON_PLAY               BUTTON_PLAY | BUTTON_REL
+#define  GBN_BUTTON_CONTEXT            BUTTON_PLAY | BUTTON_REPEAT
+#define  GBN_BUTTON_NEXT_VAR           BUTTON_REC | BUTTON_UP
 
 #elif (CONFIG_KEYPAD == PBELL_VIBE500_PAD)
 #define  GBN_BUTTON_UP                 BUTTON_UP
diff --git a/apps/plugins/pacbox/pacbox.c b/apps/plugins/pacbox/pacbox.c
index cc5b5ef..efba47b 100644
--- a/apps/plugins/pacbox/pacbox.c
+++ b/apps/plugins/pacbox/pacbox.c
@@ -391,9 +391,6 @@
 #ifdef PACMAN_RC_MENU
             || status == PACMAN_RC_MENU
 #endif
-#ifdef PACMAN_MENU2
-            || status == PACMAN_MENU2
-#endif
         ) {
             bool menu_res;
 
diff --git a/apps/plugins/pacbox/pacbox.h b/apps/plugins/pacbox/pacbox.h
index 5fcb51e..b46eaed 100644
--- a/apps/plugins/pacbox/pacbox.h
+++ b/apps/plugins/pacbox/pacbox.h
@@ -234,22 +234,20 @@
 
 #elif CONFIG_KEYPAD == SAMSUNG_YH920_PAD
 
-#define PACMAN_UP       BUTTON_UP
-#define PACMAN_DOWN     BUTTON_DOWN
-#define PACMAN_LEFT     BUTTON_LEFT
-#define PACMAN_RIGHT    BUTTON_RIGHT
+#define PACMAN_UP       BUTTON_RIGHT
+#define PACMAN_DOWN     BUTTON_LEFT
+#define PACMAN_LEFT     BUTTON_UP
+#define PACMAN_RIGHT    BUTTON_DOWN
 #define PACMAN_1UP      BUTTON_FFWD
-#define PACMAN_2UP      BUTTON_REW
 #define PACMAN_COIN     BUTTON_PLAY
-#define PACMAN_MENU     BUTTON_REC_SW_ON
-#define PACMAN_MENU2    BUTTON_REC_SW_OFF
+#define PACMAN_MENU     BUTTON_REW
 
 #elif CONFIG_KEYPAD == SAMSUNG_YH820_PAD
 
-#define PACMAN_UP       BUTTON_UP
-#define PACMAN_DOWN     BUTTON_DOWN
-#define PACMAN_LEFT     BUTTON_LEFT
-#define PACMAN_RIGHT    BUTTON_RIGHT
+#define PACMAN_UP       BUTTON_RIGHT
+#define PACMAN_DOWN     BUTTON_LEFT
+#define PACMAN_LEFT     BUTTON_UP
+#define PACMAN_RIGHT    BUTTON_DOWN
 #define PACMAN_1UP      BUTTON_FFWD
 #define PACMAN_2UP      BUTTON_REW
 #define PACMAN_COIN     BUTTON_PLAY
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index 76eb628..f085e1b 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -495,7 +495,8 @@
 #define SOKOBAN_RIGHT        BUTTON_RIGHT
 #define SOKOBAN_UP           BUTTON_UP
 #define SOKOBAN_DOWN         BUTTON_DOWN
-#define SOKOBAN_MENU         BUTTON_PLAY
+#define SOKOBAN_MENU_PRE     BUTTON_PLAY
+#define SOKOBAN_MENU         (BUTTON_PLAY | BUTTON_REL)
 #define SOKOBAN_UNDO         BUTTON_REW
 #define SOKOBAN_REDO         BUTTON_FFWD
 #define SOKOBAN_LEVEL_DOWN   (BUTTON_PLAY | BUTTON_DOWN)
@@ -1690,7 +1691,7 @@
 {
     bool moved;
     int i = 0, button = 0;
-#if defined(SOKOBAN_UNDO_PRE)
+#if defined(SOKOBAN_UNDO_PRE) || defined(SOKOBAN_MENU_PRE)
     int lastbutton = 0;
 #endif
     int w, h;
@@ -1703,10 +1704,15 @@
 
         switch(button)
         {
+            case SOKOBAN_MENU:
+#ifdef SOKOBAN_MENU_PRE
+                if (lastbutton != SOKOBAN_MENU_PRE)
+                    break;
+                /* fallthrough */
+#endif
 #ifdef SOKOBAN_RC_MENU
             case SOKOBAN_RC_MENU:
 #endif
-            case SOKOBAN_MENU:
                 switch (sokoban_menu()) {
                     case 5: /* Quit */
                     case 6: /* Save & quit */
@@ -1794,7 +1800,7 @@
                     return PLUGIN_USB_CONNECTED;
                 break;
         }
-#if defined(SOKOBAN_UNDO_PRE)
+#if defined(SOKOBAN_UNDO_PRE) || defined(SOKOBAN_MENU_PRE)
         lastbutton = button;
 #endif
 
diff --git a/apps/plugins/text_editor.c b/apps/plugins/text_editor.c
index 6c1136c..75a877c 100644
--- a/apps/plugins/text_editor.c
+++ b/apps/plugins/text_editor.c
@@ -457,6 +457,9 @@
             }
             break;
             case ACTION_STD_CONTEXT:
+/* These targets have unintuitive STD_MENU keymaps, so we use context keymap instead;
+   We don't need the "delete line" action, since this can be done via the menu. */
+#if !(defined(SAMSUNG_YH920_PAD) || defined(SAMSUNG_YH820_PAD))
                 if (!line_count) break;
                 rb->strlcpy(copy_buffer, do_action(ACTION_GET, 0, cur_sel),
                             MAX_LINE_LEN);
@@ -464,6 +467,7 @@
                 changed = true;
             break;
             case ACTION_STD_MENU:
+#endif
             {
                 /* do the item menu */
                 switch (do_item_menu(cur_sel))
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index bdbe4f9..0ff3f6c 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -198,7 +198,8 @@
 #define ZX_LEFT         BUTTON_LEFT
 #define ZX_RIGHT        BUTTON_RIGHT
 #define ZX_SELECT       BUTTON_PLAY
-#define ZX_MENU         BUTTON_FFWD
+#define ZX_SELECT2      BUTTON_FFWD
+#define ZX_MENU         BUTTON_REW
 
 #elif CONFIG_KEYPAD == PBELL_VIBE500_PAD
 
diff --git a/apps/plugins/zxbox/zxbox.c b/apps/plugins/zxbox/zxbox.c
index 81a79dc..d618243 100644
--- a/apps/plugins/zxbox/zxbox.c
+++ b/apps/plugins/zxbox/zxbox.c
@@ -187,7 +187,11 @@
                 spkb_kbstate[ki].state = 0;
             }
 
-            if ( buttons & ZX_SELECT ){
+            if ( buttons & ZX_SELECT
+#ifdef ZX_SELECT2
+                || buttons & ZX_SELECT2
+#endif
+            ){
                  ki = KS_TO_KEY(SK_KP_Insert);
                 spkb_kbstate[ki].state = 1;
             }
diff --git a/manual/plugins/bubbles.tex b/manual/plugins/bubbles.tex
index 3bb6f1c..c972262 100644
--- a/manual/plugins/bubbles.tex
+++ b/manual/plugins/bubbles.tex
@@ -9,8 +9,8 @@
 fired. Points are awarded depending on how quickly the level was completed.
 
     \begin{btnmap}
-    \opt{ONDIO_PAD,IRIVER_H10_PAD}{\PluginSelect}
-    \nopt{ONDIO_PAD,IRIVER_H10_PAD}{\PluginUp}
+    \opt{ONDIO_PAD,IRIVER_H10_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\PluginSelect}
+    \nopt{ONDIO_PAD,IRIVER_H10_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\PluginUp}
        \opt{HAVEREMOTEKEYMAP}{& \PluginRCUp}
         & Pause game\\
 
@@ -19,8 +19,8 @@
        \opt{HAVEREMOTEKEYMAP}{& \PluginRCLeft{} / \PluginRCRight}
         & Aim the bubble\\
 
-    \opt{ONDIO_PAD,IRIVER_H10_PAD}{\PluginUp}
-    \nopt{ONDIO_PAD,IRIVER_H10_PAD}{\PluginSelect}
+    \opt{ONDIO_PAD,IRIVER_H10_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\PluginUp}
+    \nopt{ONDIO_PAD,IRIVER_H10_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\PluginSelect}
        \opt{HAVEREMOTEKEYMAP}{& \PluginRCSelect}
         & Fire bubble\\
 
diff --git a/manual/plugins/doom.tex b/manual/plugins/doom.tex
index be5ad23..452522e 100644
--- a/manual/plugins/doom.tex
+++ b/manual/plugins/doom.tex
@@ -53,12 +53,12 @@
 
   \item[InGame Main Menu. ]This menu can only be accessed from within a running game, and is displayed by
     \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{pressing \ButtonOff}%
-    \opt{IPOD_3G_PAD,IPOD_4G_PAD}{flipping your \ButtonHold{} switch a couple of times}%
+    \opt{IPOD_3G_PAD,IPOD_4G_PAD,SAMSUNG_YH92X_PAD}{flipping your \ButtonHold{} switch 
+    a couple of times}%
     \opt{IAUDIO_X5_PAD,IRIVER_H10_PAD,SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD%
          ,GIGABEAT_PAD,GIGABEAT_S_PAD,COWON_D2_PAD}{pressing \ButtonPower}%
     \opt{SANSA_FUZE_PAD}{pressing \ButtonHome}
     \opt{PBELL_VIBE500_PAD,SAMSUNG_YH820_PAD}{pressing \ButtonRec}
-    \opt{SAMSUNG_YH92X_PAD}{flipping the \ButtonRec{} switch}
     \opt{SANSA_FUZEPLUS_PAD}{pressing \ButtonBack}
 
   \emph{New Game. } Start a new game\\
@@ -144,13 +144,12 @@
     & Open \\
 %
   \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}
-  \opt{IPOD_3G_PAD,IPOD_4G_PAD}{\ButtonHold{} switch}
+  \opt{IPOD_3G_PAD,IPOD_4G_PAD,SAMSUNG_YH92X_PAD}{\ButtonHold{} switch}
   \opt{IAUDIO_X5_PAD,IRIVER_H10_PAD,SANSA_E200_PAD,SANSA_C200_PAD,GIGABEAT_PAD%
       ,GIGABEAT_S_PAD,MROBE100_PAD,SANSA_CLIP_PAD}{\ButtonPower}
   \opt{SANSA_FUZE_PAD}{\ButtonHome}
   \opt{COWON_D2_PAD}{\TouchTopLeft}
   \opt{PBELL_VIBE500_PAD,MPIO_HD300_PAD,SAMSUNG_YH820_PAD}{\ButtonRec}
-  \opt{SAMSUNG_YH92X_PAD}{\ButtonRec{} switch}
   \opt{SANSA_FUZEPLUS_PAD}{\ButtonBack}
        \opt{HAVEREMOTEKEYMAP}{& }
     & InGame Menu \\
diff --git a/manual/plugins/goban.tex b/manual/plugins/goban.tex
index 0fb238d..228129c 100644
--- a/manual/plugins/goban.tex
+++ b/manual/plugins/goban.tex
@@ -50,7 +50,8 @@
          \opt{PBELL_VIBE500_PAD}{\ButtonCancel}%
          \opt{MPIO_HD200_PAD}{Long \ButtonFunc}%
          \opt{MPIO_HD300_PAD}{\ButtonMenu}%
-         \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonPlay+\ButtonDown}
+         \opt{SAMSUNG_YH92X_PAD}{\ButtonFF{} + \ButtonUp}
+         \opt{SAMSUNG_YH820_PAD}{\ButtonRec{} + \ButtonUp}
          \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonRec} button}. \\
       \emph{C } & There is a comment at the current node.  It can be viewed/edited using
                 the \emph{Add/Edit Comment} menu option of the \emph{Context Menu}. \\
@@ -143,7 +144,8 @@
             \opt{touchscreen}{\TouchBottomLeft}
             \opt{PBELL_VIBE500_PAD}{\ButtonOK{} + \ButtonLeft}
             \opt{MPIO_HD200_PAD,MPIO_HD300_PAD}{\ButtonRec + \ButtonRew}
-            \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonRew}
+            \opt{SAMSUNG_YH92X_PAD}{\ButtonFF{} + \ButtonLeft}
+            \opt{SAMSUNG_YH820_PAD}{\ButtonRec{} + \ButtonLeft}
                 &
             \opt{HAVEREMOTEKEYMAP}{
                 &}
@@ -161,7 +163,8 @@
             \opt{touchscreen}{\TouchBottomRight}
             \opt{PBELL_VIBE500_PAD}{\ButtonOK{} + \ButtonRight}
             \opt{MPIO_HD200_PAD,MPIO_HD300_PAD}{\ButtonRec + \ButtonFF}
-            \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonFF}
+            \opt{SAMSUNG_YH92X_PAD}{\ButtonFF{} + \ButtonRight}
+            \opt{SAMSUNG_YH820_PAD}{\ButtonRec{} + \ButtonRight}
                 &
             \opt{HAVEREMOTEKEYMAP}{
                 &}
@@ -180,7 +183,7 @@
         \opt{RECORDER_PAD}{\ButtonFTwo}%
         \opt{ONDIO_PAD}{Long \ButtonMenu}
         \opt{MPIO_HD200_PAD}{Long \ButtonPlay}
-        \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonPlay+\ButtonLeft}
+        \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonRew}
         \opt{touchscreen}{\TouchTopLeft}
             &
         \opt{HAVEREMOTEKEYMAP}{
@@ -202,7 +205,7 @@
             \opt{SANSA_FUZEPLUS_PAD}{\ButtonBottomLeft}
             \opt{MPIO_HD200_PAD}{Long \ButtonFunc}
             \opt{MPIO_HD300_PAD}{Long \ButtonEnter}
-            \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonPlay+\ButtonDown}%
+            \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{Long \ButtonPlay}%
                 &
             \opt{HAVEREMOTEKEYMAP}{
                 &}
@@ -224,7 +227,8 @@
             \opt{touchscreen}{\TouchTopRight}%
             \opt{PBELL_VIBE500_PAD}{\ButtonCancel}%
             \opt{SANSA_FUZEPLUS_PAD}{\ButtonBottomRight}%
-            \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonPlay+\ButtonUp}%
+            \opt{SAMSUNG_YH92X_PAD}{\ButtonFF{} + \ButtonUp}%
+            \opt{SAMSUNG_YH820_PAD}{\ButtonRec{} + \ButtonUp}%
                 &
             \opt{HAVEREMOTEKEYMAP}{
                 &}
diff --git a/manual/plugins/imageviewer.tex b/manual/plugins/imageviewer.tex
index 2d17b14..9f646dc 100644
--- a/manual/plugins/imageviewer.tex
+++ b/manual/plugins/imageviewer.tex
@@ -135,7 +135,7 @@
        }
     & Show menu / Abort \\
     \opt{IPOD_4G_PAD,IPOD_3G_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,MROBE100_PAD,PBELL_VIBE500_PAD%
-        ,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{
+        ,SAMSUNG_YH820_PAD}{
         \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonPlay}
         \opt{GIGABEAT_PAD,MROBE100_PAD}{\ButtonPower}
         \opt{GIGABEAT_S_PAD}{\ButtonBack}
diff --git a/manual/plugins/pacbox.tex b/manual/plugins/pacbox.tex
index 6c4cd4e..e94067a 100644
--- a/manual/plugins/pacbox.tex
+++ b/manual/plugins/pacbox.tex
@@ -30,34 +30,38 @@
     % 20GB H10 and 5/6GB H10 have different direction key mappings to match the
     % orientation of the playing field on their different displays - don't use *_PAD !
     \opt{IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,IPOD_4G_PAD,%
-        IPOD_3G_PAD,iriverh10,MROBE100_PAD,SANSA_FUZE_PAD}{\ButtonRight}
+        IPOD_3G_PAD,iriverh10,MROBE100_PAD,SANSA_FUZE_PAD,SAMSUNG_YH92X_PAD,%
+        SAMSUNG_YH820_PAD}{\ButtonRight}
     \opt{GIGABEAT_PAD,GIGABEAT_S_PAD,SANSA_E200_PAD,PBELL_VIBE500_PAD%
-         ,SANSA_FUZEPLUS_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonUp}
+         ,SANSA_FUZEPLUS_PAD}{\ButtonUp}
     \opt{iriverh10_5gb}{\ButtonScrollUp}
     \opt{COWON_D2_PAD}{\TouchTopMiddle}
       \opt{HAVEREMOTEKEYMAP}{& }
     & Move Up\\
     \opt{IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,IPOD_4G_PAD,%
-    IPOD_3G_PAD,iriverh10,MROBE100_PAD,SANSA_FUZE_PAD}{\ButtonLeft}
+        IPOD_3G_PAD,iriverh10,MROBE100_PAD,SANSA_FUZE_PAD,SAMSUNG_YH92X_PAD,%
+        SAMSUNG_YH820_PAD}{\ButtonLeft}
     \opt{iriverh10_5gb}{\ButtonScrollDown}
-    \opt{GIGABEAT_PAD,GIGABEAT_S_PAD,SANSA_E200_PAD,PBELL_VIBE500_PAD,SANSA_FUZEPLUS_PAD%
-        ,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonDown}
+    \opt{GIGABEAT_PAD,GIGABEAT_S_PAD,SANSA_E200_PAD,PBELL_VIBE500_PAD,%
+        SANSA_FUZEPLUS_PAD}{\ButtonDown}
     \opt{COWON_D2_PAD}{\TouchBottomMiddle}
       \opt{HAVEREMOTEKEYMAP}{& }
     & Move Down\\
-    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,MROBE100_PAD,SANSA_FUZE_PAD}{\ButtonUp}
+    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,MROBE100_PAD,SANSA_FUZE_PAD%
+        ,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonUp}
     \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonMenu}
     \opt{iriverh10}{\ButtonScrollUp}
     \opt{iriverh10_5gb,GIGABEAT_PAD,GIGABEAT_S_PAD,SANSA_E200_PAD,PBELL_VIBE500_PAD%
-         ,SANSA_FUZEPLUS_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonLeft}
+         ,SANSA_FUZEPLUS_PAD}{\ButtonLeft}
     \opt{COWON_D2_PAD}{\TouchMidLeft}
       \opt{HAVEREMOTEKEYMAP}{& }
     & Move Left\\
-    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,MROBE100_PAD,SANSA_FUZE_PAD}{\ButtonDown}
+    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD,MROBE100_PAD,SANSA_FUZE_PAD%
+        ,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonDown}
     \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonPlay}
     \opt{iriverh10}{\ButtonScrollDown}
     \opt{iriverh10_5gb,GIGABEAT_PAD,GIGABEAT_S_PAD,SANSA_E200_PAD,PBELL_VIBE500_PAD%
-         ,SANSA_FUZEPLUS_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonRight}
+         ,SANSA_FUZEPLUS_PAD}{\ButtonRight}
     \opt{COWON_D2_PAD}{\TouchMidRight}
       \opt{HAVEREMOTEKEYMAP}{& }
     & Move Right\\
@@ -88,7 +92,8 @@
     \opt{MROBE100_PAD}{\ButtonMenu}
     \opt{SANSA_FUZEPLUS_PAD}{\ButtonBottomRight}
     \opt{COWON_D2_PAD}{\TouchBottomRight}
-    \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonRew}
+    \opt{SAMSUNG_YH92X_PAD}{n/a}
+    \opt{SAMSUNG_YH820_PAD}{\ButtonRew}
       \opt{HAVEREMOTEKEYMAP}{& }
     & 2-Player Start\\
     \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonMode}
@@ -97,7 +102,7 @@
     \opt{SANSA_E200_PAD,SANSA_FUZEPLUS_PAD}{\ButtonPower}
     \opt{SANSA_FUZE_PAD}{\ButtonHome}
     \opt{GIGABEAT_PAD,GIGABEAT_S_PAD,COWON_D2_PAD,PBELL_VIBE500_PAD}{\ButtonMenu}
-    \opt{SAMSUNG_YH92X_PAD}{\ButtonRec{} switch}
+    \opt{SAMSUNG_YH92X_PAD}{\ButtonRew}
     \opt{SAMSUNG_YH820_PAD}{\ButtonRec}
       \opt{HAVEREMOTEKEYMAP}{& }
     & Menu\\
diff --git a/manual/plugins/pictureflow.tex b/manual/plugins/pictureflow.tex
index 5e8d6c0..5de66fe 100644
--- a/manual/plugins/pictureflow.tex
+++ b/manual/plugins/pictureflow.tex
@@ -106,7 +106,7 @@
         \nopt{IAUDIO_M3_PAD,SANSA_FUZEPLUS_PAD}{\ActionStdMenu}
         \nopt{IAUDIO_M3_PAD,SANSA_FUZEPLUS_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ActionStdMenu}
             \opt{SANSA_FUZEPLUS_PAD}{long \ButtonSelect}
-            \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonRew}
+            \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{or \ButtonRew}
             &
         \opt{HAVEREMOTEKEYMAP}{
             \opt{IAUDIO_M3_PAD,GIGABEAT_RC_PAD}{\ActionRCStdMenu}
diff --git a/manual/plugins/rockpaint.tex b/manual/plugins/rockpaint.tex
index 0f38edc..e7c1f40 100644
--- a/manual/plugins/rockpaint.tex
+++ b/manual/plugins/rockpaint.tex
@@ -149,8 +149,8 @@
     \opt{SANSA_FUZEPLUS_PAD}{\ButtonBottomLeft{} or \ButtonBottomRight}
     \opt{touchscreen}{\TouchBottomLeft}
     \opt{PBELL_VIBE500_PAD}{\ButtonOK}
-    \opt{SAMSUNG_YH92X_PAD}{\ButtonFF{} or \ButtonRec}%
-    \opt{SAMSUNG_YH820_PAD}{\ButtonFF{} or \ButtonLeft+\ButtonFF}%
+    \opt{SAMSUNG_YH92X_PAD}{\ButtonFF{} or \ButtonLeft+\ButtonFF}%
+    \opt{SAMSUNG_YH820_PAD}{\ButtonFF{} or \ButtonRec}%
       \opt{HAVEREMOTEKEYMAP}{& }
     & Displays the toolbar.\\
 
diff --git a/manual/plugins/text_editor.tex b/manual/plugins/text_editor.tex
index 18d1d91..c72d90b 100644
--- a/manual/plugins/text_editor.tex
+++ b/manual/plugins/text_editor.tex
@@ -27,12 +27,15 @@
       \opt{HAVEREMOTEKEYMAP}{& \ActionRCStdCancel} 
     & Exit / Abort Editing\\
 
-    \ActionStdMenu 
+    \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ActionStdContext}
+    \nopt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ActionStdMenu}
       \opt{HAVEREMOTEKEYMAP}{& \ActionRCStdMenu} 
     & Show Item Menu\\
 
-    \ActionStdContext 
-      \opt{HAVEREMOTEKEYMAP}{& \ActionRCStdContext} 
-    & Delete Line\\
+    \nopt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{
+        \ActionStdContext
+          \opt{HAVEREMOTEKEYMAP}{& \ActionRCStdContext}
+        & Delete Line\\
+    }
 \end{btnmap}
 
diff --git a/manual/plugins/xworld.tex b/manual/plugins/xworld.tex
index cd48601..57d42bd 100644
--- a/manual/plugins/xworld.tex
+++ b/manual/plugins/xworld.tex
@@ -46,7 +46,7 @@
     & Move Left and Right\\
     %
     \opt{SANSA_FUZE_PAD}{\ButtonHome}
-    \opt{SAMSUNG_YH920_PAD}{\ButtonFFWD}
+    \opt{SAMSUNG_YH92X_PAD}{\ButtonFF}
     \opt{IRIVER_H300_PAD,SANSA_E200_PAD,SAMSUNG_YH820_PAD,IAUDIO_X5M5_PAD}{\ButtonRec}
     \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,CREATIVE_ZEN_PAD,SANSA_CLIP_PAD}{\ButtonSelect}
     \opt{SONY_NWZ_PAD,CREATIVEZVM_PAD}{\ButtonPlay}
@@ -68,7 +68,7 @@
         ,SANSA_FUZEPLUS_PAD}{\ButtonVolDown}
     \opt{GIGABEAT_PAD,GIGABEAT_S_PAD}{\ButtonMenu}
     \opt{SANSA_FUZE_PAD}{\ButtonSelect}
-    \opt{SAMSUNG_YH920_PAD}{\ButtonRew}
+    \opt{SAMSUNG_YH92X_PAD}{\ButtonRew}
     \opt{SAMSUNG_YH820_PAD,IAUDIO_X5M5_PAD}{\ButtonPlay}
     \opt{SANSA_E200_PAD,SANSA_CLIP_PAD}{\ButtonPower}
     \opt{CREATIVE_ZEN_PAD,SONY_NWZ_PAD}{\ButtonBack}
diff --git a/manual/plugins/zxbox.tex b/manual/plugins/zxbox.tex
index 5f20d95..1d42feb 100644
--- a/manual/plugins/zxbox.tex
+++ b/manual/plugins/zxbox.tex
@@ -33,7 +33,8 @@
     \opt{IPOD_3G_PAD,IPOD_4G_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,IAUDIO_X5_PAD%
         ,SANSA_C200_PAD,SANSA_CLIP_PAD,SANSA_E200_PAD,SANSA_FUZE_PAD,MROBE100_PAD
         ,SANSA_FUZEPLUS_PAD}{\ButtonSelect}
-    \opt{RECORDER_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonPlay}
+    \opt{RECORDER_PAD}{\ButtonPlay}
+    \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonPlay{} or \ButtonFF}
     \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn}
     \opt{ONDIO_PAD}{\ButtonMenu}
     \opt{IRIVER_H10_PAD}{\ButtonRew}