Sfoglia il codice sorgente

Fix keypad mode and cursor mode

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(-)
Roberto E. Vargas Caballero 12 anni fa
parent
commit
69ee3ba3a7
2 ha cambiato i file con 5 aggiunte e 4 eliminazioni
  1. 3 2
      st.c
  2. 2 2
      st.info

+ 3 - 2
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;

+ 2 - 2
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,