Преглед изворни кода

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 година
родитељ
комит
69ee3ba3a7
2 измењених фајлова са 5 додато и 4 уклоњено
  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,