Add application cursor sequences for Home
authorRoberto E. Vargas Caballero <k0ga@shike2.com>
Fri, 16 Nov 2012 10:32:17 +0000 (11:32 +0100)
committerRoberto E. Vargas Caballero <k0ga@shike2.com>
Fri, 16 Nov 2012 10:32:17 +0000 (11:32 +0100)
The commit 'Fixing some key issues with mc' fix the problem where mc didn't
recognize home key because the generated code and the terminfo entry were
different (terminfo khome = \E[1~ but generates \033[H).

Home key in ansi mode should generate the sequence CUP (\033[H) to 0,0 (home
position), but it is also interesting generate a application code which
identifies the key. Real vt520 only generates the ansi sequence CUP, linux
console generates only the application code \033[1~, xterm generates CUP in
ansi mode and \033OH in cursor application mode, rxvt only generates the
application code \033[7~.

This patch sets CUP in ansi mode and \033[1~ in cursor application mode, so
it can be used in both modes and the application mode value is similar to
near values (insert = \033[2~, Prior = \033[5~, Next = \033[6~, End =
\033[4~, Supr = \033[3).
---
 config.def.h |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

config.def.h

index 3a2e38b..023634e 100644 (file)
@@ -98,7 +98,8 @@ static KeySym mappedkeys[] = { -1 };
 static Key key[] = {
        /* keysym             mask         string         keypad cursor crlf */
        { XK_KP_Home,       ShiftMask,      "\033[1;2H",     0,    0,    0},
-       { XK_KP_Home,       XK_ANY_MOD,     "\033[H",        0,    0,    0},
+       { XK_KP_Home,       XK_ANY_MOD,     "\033[H",        0,   -1,    0},
+       { XK_KP_Home,       XK_ANY_MOD,     "\033[1~",       0,   +1,    0},
        { XK_KP_Up,         XK_ANY_MOD,     "\033Ox",       +1,    0,    0},
        { XK_KP_Up,         XK_ANY_MOD,     "\033[A",        0,   -1,    0},
        { XK_KP_Up,         XK_ANY_MOD,     "\033OA",        0,   +1,    0},
@@ -170,9 +171,9 @@ static Key key[] = {
        { XK_Insert,        XK_ANY_MOD,     "\033[2~",       0,    0,    0},
        { XK_Delete,        ShiftMask,      "\033[3;2~",     0,    0,    0},
        { XK_Delete,        XK_ANY_MOD,     "\033[3~",       0,    0,    0},
-       { XK_Home,          XK_NO_MOD,      "\033[1~",       0,    0,    0},
        { XK_Home,          ShiftMask,      "\033[1;2H",     0,    0,    0},
-       { XK_Home,          XK_ANY_MOD,     "\033[H",        0,    0,    0},
+       { XK_Home,          XK_ANY_MOD,     "\033[H",        0,   -1,    0},
+       { XK_Home,          XK_ANY_MOD,     "\033[1~",       0,   +1,    0},
        { XK_End,           ShiftMask,      "\033[1;2F",     0,    0,    0},
        { XK_End,           XK_ANY_MOD,     "\033[4~",       0,    0,    0},
        { XK_Prior,         XK_NO_MOD,      "\033[5~",       0,    0,    0},