From ea782bfc5d34d712bc9391e498935d2d27f3116c Mon Sep 17 00:00:00 2001 From: "Roberto E. Vargas Caballero" Date: Tue, 13 Nov 2012 20:04:45 +0100 Subject: Remove hardcoded keys form kpress Some keys were in the Key array while others were hardcoded in kpress().This cause some problems with some keys which can generate more of one string based in the configuration of the terminal. --- config.def.h | 70 ++++++++++++++++++++++++++++++++++++++++----------------- st.c | 71 +++++++++++++++++++++++++--------------------------------- 2 files changed, 79 insertions(+), 62 deletions(-) --- config.def.h | 70 ++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 21 deletions(-) (limited to 'config.def.h') diff --git a/config.def.h b/config.def.h index 3bf35d9..622499e 100644 --- a/config.def.h +++ b/config.def.h @@ -56,34 +56,62 @@ static unsigned int defaultucs = 257; /* * Special keys (change & recompile st.info accordingly) - * Keep in mind that kpress() in st.c hardcodes some keys. * * Mask value: * * Use XK_ANY_MOD to match the key no matter modifiers state * * Use XK_NO_MOD to match the key alone (no modifiers) + * keypad value: + * * 0: no value + * * > 0: keypad application mode enabled + * * < 0: keypad application mode disabled + * cursor value: + * * 0: no value + * * > 0: cursor application mode enabled + * * < 0: cursor application mode disabled + * crlf value + * * 0: no value + * * > 0: crlf mode is enabled + * * < 0: crlf mode is disabled */ -/* key, mask, output */ +/* key, mask, output, keypad, cursor, crlf */ static Key key[] = { - { XK_BackSpace, XK_NO_MOD, "\177" }, - { XK_Insert, XK_NO_MOD, "\033[2~" }, - { XK_Delete, XK_NO_MOD, "\033[3~" }, - { XK_Home, XK_NO_MOD, "\033[1~" }, - { XK_End, XK_NO_MOD, "\033[4~" }, - { XK_Prior, XK_NO_MOD, "\033[5~" }, - { XK_Next, XK_NO_MOD, "\033[6~" }, - { XK_F1, XK_NO_MOD, "\033OP" }, - { XK_F2, XK_NO_MOD, "\033OQ" }, - { XK_F3, XK_NO_MOD, "\033OR" }, - { XK_F4, XK_NO_MOD, "\033OS" }, - { XK_F5, XK_NO_MOD, "\033[15~" }, - { XK_F6, XK_NO_MOD, "\033[17~" }, - { XK_F7, XK_NO_MOD, "\033[18~" }, - { XK_F8, XK_NO_MOD, "\033[19~" }, - { XK_F9, XK_NO_MOD, "\033[20~" }, - { XK_F10, XK_NO_MOD, "\033[21~" }, - { XK_F11, XK_NO_MOD, "\033[23~" }, - { XK_F12, XK_NO_MOD, "\033[24~" }, + /* keysym mask string keypad cursor crlf */ + { XK_BackSpace, XK_NO_MOD, "\177", 0, 0, 0}, + { XK_Up, XK_NO_MOD, "\033[A", 0, -1, 0}, + { XK_Up, XK_NO_MOD, "\033OA", 0, +1, 0}, + { XK_Up, ShiftMask, "\033[a", 0, 0, 0}, + { XK_Down, XK_NO_MOD, "\033[B", 0, -1, 0}, + { XK_Down, XK_NO_MOD, "\033OB", 0, +1, 0}, + { XK_Down, ShiftMask, "\033[b", 0, 0, 0}, + { XK_Left, XK_NO_MOD, "\033[D", 0, -1, 0}, + { XK_Left, XK_NO_MOD, "\033OD", 0, +1, 0}, + { XK_Left, ShiftMask, "\033[d", 0, 0, 0}, + { XK_Right, XK_NO_MOD, "\033[C", 0, -1, 0}, + { XK_Right, XK_NO_MOD, "\033OC", 0, +1, 0}, + { XK_Right, ShiftMask, "\033[c", 0, 0, 0}, + { XK_Return, XK_NO_MOD, "\n", 0, 0, -1}, + { XK_Return, XK_NO_MOD, "\r\n", 0, 0, +1}, + { XK_Return, Mod1Mask, "\033\n", 0, 0, -1}, + { XK_Return, Mod1Mask, "\033\r\n", 0, 0, +1}, + { XK_Insert, XK_NO_MOD, "\033[2~", 0, 0, 0}, + { XK_Delete, XK_NO_MOD, "\033[3~", 0, 0, 0}, + { XK_Home, XK_NO_MOD, "\033[1~", 0, 0, 0}, + { XK_End, XK_NO_MOD, "\033[4~", 0, 0, 0}, + { XK_Prior, XK_NO_MOD, "\033[5~", 0, 0, 0}, + { XK_Next, XK_NO_MOD, "\033[6~", 0, 0, 0}, + { XK_F1, XK_NO_MOD, "\033OP" , 0, 0, 0}, + { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0, 0}, + { XK_F3, XK_NO_MOD, "\033OR" , 0, 0, 0}, + { XK_F4, XK_NO_MOD, "\033OS" , 0, 0, 0}, + { XK_F5, XK_NO_MOD, "\033[15~", 0, 0, 0}, + { XK_F6, XK_NO_MOD, "\033[17~", 0, 0, 0}, + { XK_F7, XK_NO_MOD, "\033[18~", 0, 0, 0}, + { XK_F8, XK_NO_MOD, "\033[19~", 0, 0, 0}, + { XK_F9, XK_NO_MOD, "\033[20~", 0, 0, 0}, + { XK_F10, XK_NO_MOD, "\033[21~", 0, 0, 0}, + { XK_F11, XK_NO_MOD, "\033[23~", 0, 0, 0}, + { XK_F12, XK_NO_MOD, "\033[24~", 0, 0, 0}, }; /* Internal shortcuts. */ -- cgit v1.2.3-54-g00ecf