Fix keypad mode and cursor mode
authorRoberto E. Vargas Caballero <k0ga@shike2.com>
Tue, 13 Nov 2012 19:04:34 +0000 (20:04 +0100)
committerRoberto E. Vargas Caballero <k0ga@shike2.com>
Tue, 13 Nov 2012 19:04:34 +0000 (20:04 +0100)
Keypad mode is used for detecting when keys in the auxiliary keypad are
pressed, while cursor mode is used for detecting when a cursor is pressed,
but they are different modes.

St was mixing both modes and DECPAM and DECPNM modified the cursor mode, and
this was incorrect.
---
 st.c    |    5 +++--
 st.info |    4 ++--
 2 files changed, 5 insertions(+), 4 deletions(-)

st.c
st.info

diff --git a/st.c b/st.c
index 8bf9337..683a0e9 100644 (file)
--- a/st.c
+++ b/st.c
@@ -121,7 +121,8 @@ enum term_mode {
        MODE_REVERSE     = 128,
        MODE_KBDLOCK     = 256,
        MODE_HIDE        = 512,
-       MODE_ECHO        = 1024
+       MODE_ECHO        = 1024,
+       MODE_APPCURSOR   = 2048
 };
 
 enum escape_state {
@@ -1471,7 +1472,7 @@ tsetmode(bool priv, bool set, int *args, int narg) {
                        switch(*args) {
                                break;
                        case 1: /* DECCKM -- Cursor key */
-                               MODBIT(term.mode, set, MODE_APPKEYPAD);
+                               MODBIT(term.mode, set, MODE_APPCURSOR);
                                break;
                        case 5: /* DECSCNM -- Reverse video */
                                mode = term.mode;
diff --git a/st.info b/st.info
index 58e2139..63af234 100644 (file)
--- a/st.info
+++ b/st.info
@@ -89,7 +89,7 @@ st| simpleterm,
        ritm=\E[23m,
        rmacs=\E(B,
        rmcup=\E[?1049l,
-#      rmkx=\E>,
+       rmkx=\E[?1l\E>,
        rmso=\E[23m,
        rmul=\E[m,
        rs1=\Ec,
@@ -104,7 +104,7 @@ st| simpleterm,
        sitm=\E[3m,
        smacs=\E(0,
        smcup=\E[?1049h,
-#      smkx=\E=,
+       smkx=\E[?1h\E=,
        smso=\E[3m,
        smul=\E[4m,
        tbc=\E[3g,