[patch] terminal doc: Try to name one terminal for each keyboard escape sequence.

Kalle Olavi Niemitalo <[email protected]>
Newsgroups gmane.comp.web.links
Message-ID <[email protected]>
_______________________________________________
elinks-dev mailing list
[email protected]
http://linuxfromscratch.org/mailman/listinfo/elinks-dev
(unnamed) (text/x-patch, 9.2 KB)
terminal doc: Try to name one terminal for each keyboard escape sequence.

Also list the capnames with which the escape sequences could be
read from Terminfo, and the ECMA-48 interpretations of the bytes
(parenthesized if they seem unrelated to the keys).  This is in
preparation for fixing bug 96.

---
commit 73eb3d5228d2c0150f78858bc7d36327eb7c3f98
tree 6785ee204ddd8e9bd7a04e3b47f35a36e808861c
parent 6fa484dfb0d9310079e8bd01f8b7c70b19df0aa6
author Kalle Olavi Niemitalo <[email protected]> Sun, 30 Jul 2006 15:01:44 +0300
committer Kalle Olavi Niemitalo <[email protected]> Sun, 30 Jul 2006 15:01:44 +0300

 src/terminal/kbd.c |  160 ++++++++++++++++++++++++++--------------------------
 1 files changed, 81 insertions(+), 79 deletions(-)

diff --git a/src/terminal/kbd.c b/src/terminal/kbd.c
index 98bd645..da6107e 100644
--- a/src/terminal/kbd.c
+++ b/src/terminal/kbd.c
@@ -664,6 +664,9 @@ decode_terminal_escape_sequence(struct i
 	if (itrm->in.queue.len < 3) return -1;
 
 	if (itrm->in.queue.data[2] == '[') {
+		/* The terminfo entry for linux has "kf1=\E[[A", etc.
+		 * These are not control sequences compliant with
+		 * clause 5.4 of ECMA-48.  */
 		if (itrm->in.queue.len >= 4
 		    && itrm->in.queue.data[3] >= 'A'
 		    && itrm->in.queue.data[3] <= 'L') {
@@ -681,64 +684,64 @@ #ifdef DEBUG_ITRM_QUEUE
 	fflush(stderr);
 #endif
 
-	switch (c) {
-	case 0: return -1;
-	case 'A': kbd.key = KBD_UP; break;
-	case 'B': kbd.key = KBD_DOWN; break;
-	case 'C': kbd.key = KBD_RIGHT; break;
-	case 'D': kbd.key = KBD_LEFT; break;
-	case 'F':
-	case 'e': kbd.key = KBD_END; break;
-	case 'H': kbd.key = KBD_HOME; break;
-	case 'I': kbd.key = KBD_PAGE_UP; break;
-	case 'G': kbd.key = KBD_PAGE_DOWN; break;
+	switch (c) {				/* ECMA-48 Terminfo $TERM */
+	case 0: return -1;			/* ------- -------- ----- */
+	case 'A': kbd.key = KBD_UP; break;	/*    CUU  kcuu1    vt200 */
+	case 'B': kbd.key = KBD_DOWN; break;	/*    CUD  kcud1    vt200 */
+	case 'C': kbd.key = KBD_RIGHT; break;	/*    CUF  kcuf1    vt200 */
+	case 'D': kbd.key = KBD_LEFT; break;	/*    CUB  kcub1    vt200 */
+	case 'F':				/*   (CPL) kend     cons25 */
+	case 'e': kbd.key = KBD_END; break;	/*   (VPR) kend */
+	case 'H': kbd.key = KBD_HOME; break;	/*    CUP  khome    cons25 */
+	case 'I': kbd.key = KBD_PAGE_UP; break; /*   (CHT) kpp      cons25 */
+	case 'G': kbd.key = KBD_PAGE_DOWN; break; /* (CHA) knp      cons25 */
 /* Free BSD (TERM=cons25 etc.) */
-/*	case 'M': kbd.key = KBD_F1; break;*/
-	case 'N': kbd.key = KBD_F2; break;
-	case 'O': kbd.key = KBD_F3; break;
-	case 'P': kbd.key = KBD_F4; break;
-	case 'Q': kbd.key = KBD_F5; break;
-/*	case 'R': kbd.key = KBD_F6; break;*/
-	case 'S': kbd.key = KBD_F7; break;
-	case 'T': kbd.key = KBD_F8; break;
-	case 'U': kbd.key = KBD_F9; break;
-	case 'V': kbd.key = KBD_F10; break;
-	case 'W': kbd.key = KBD_F11; break;
-	case 'X': kbd.key = KBD_F12; break;
-
-	case 'z': switch (v) {
-		case 247: kbd.key = KBD_INS; break;
-		case 214: kbd.key = KBD_HOME; break;
-		case 220: kbd.key = KBD_END; break;
-		case 216: kbd.key = KBD_PAGE_UP; break;
-		case 222: kbd.key = KBD_PAGE_DOWN; break;
-		case 249: kbd.key = KBD_DEL; break;
+/*	case 'M': kbd.key = KBD_F1; break;*/	/*   (DL)  kf1      cons25 */
+	case 'N': kbd.key = KBD_F2; break;	/*   (EF)  kf2      cons25 */
+	case 'O': kbd.key = KBD_F3; break;	/*   (EA)  kf3      cons25 */
+	case 'P': kbd.key = KBD_F4; break;	/*   (DCH) kf4      cons25 */
+	case 'Q': kbd.key = KBD_F5; break;	/*   (SEE) kf5      cons25 */
+/*	case 'R': kbd.key = KBD_F6; break;*/	/*   (CPR) kf6      cons25 */
+	case 'S': kbd.key = KBD_F7; break;	/*   (SU)  kf7      cons25 */
+	case 'T': kbd.key = KBD_F8; break;	/*   (SD)  kf8      cons25 */
+	case 'U': kbd.key = KBD_F9; break;	/*   (NP)  kf9      cons25 */
+	case 'V': kbd.key = KBD_F10; break;	/*   (PP)  kf10     cons25 */
+	case 'W': kbd.key = KBD_F11; break;	/*   (CTC) kf11     cons25 */
+	case 'X': kbd.key = KBD_F12; break;	/*   (ECH) kf12     cons25 */
+
+	case 'z': switch (v) {			/* private */
+		case 247: kbd.key = KBD_INS; break;     /* kich1 */
+		case 214: kbd.key = KBD_HOME; break;	/* khome */
+		case 220: kbd.key = KBD_END; break;	/* kend */
+		case 216: kbd.key = KBD_PAGE_UP; break; /* kpp */
+		case 222: kbd.key = KBD_PAGE_DOWN; break; /* knp */
+		case 249: kbd.key = KBD_DEL; break;	/* kdch1 */
 		} break;
 
-	case '~': switch (v) {
-		case 1: kbd.key = KBD_HOME; break;
-		case 2: kbd.key = KBD_INS; break;
-		case 3: kbd.key = KBD_DEL; break;
-		case 4: kbd.key = KBD_END; break;
-		case 5: kbd.key = KBD_PAGE_UP; break;
-		case 6: kbd.key = KBD_PAGE_DOWN; break;
-		case 7: kbd.key = KBD_HOME; break;
-		case 8: kbd.key = KBD_END; break;
-
-		case 11: kbd.key = KBD_F1; break;
-		case 12: kbd.key = KBD_F2; break;
-		case 13: kbd.key = KBD_F3; break;
-		case 14: kbd.key = KBD_F4; break;
-		case 15: kbd.key = KBD_F5; break;
-
-		case 17: kbd.key = KBD_F6; break;
-		case 18: kbd.key = KBD_F7; break;
-		case 19: kbd.key = KBD_F8; break;
-		case 20: kbd.key = KBD_F9; break;
-		case 21: kbd.key = KBD_F10; break;
-
-		case 23: kbd.key = KBD_F11; break;
-		case 24: kbd.key = KBD_F12; break;
+	case '~': switch (v) {			/* private */
+		case 1: kbd.key = KBD_HOME; break;      /* khome    linux */
+		case 2: kbd.key = KBD_INS; break;	/* kich1    linux */
+		case 3: kbd.key = KBD_DEL; break;	/* kdch1    linux */
+		case 4: kbd.key = KBD_END; break;	/* kend     linux */
+		case 5: kbd.key = KBD_PAGE_UP; break;	/* kpp      linux */
+		case 6: kbd.key = KBD_PAGE_DOWN; break; /* knp      linux */
+		case 7: kbd.key = KBD_HOME; break;	/* khome    rxvt */
+		case 8: kbd.key = KBD_END; break;	/* kend     rxvt */
+
+		case 11: kbd.key = KBD_F1; break;	/* kf1      rxvt */
+		case 12: kbd.key = KBD_F2; break;	/* kf2      rxvt */
+		case 13: kbd.key = KBD_F3; break;	/* kf3      rxvt */
+		case 14: kbd.key = KBD_F4; break;	/* kf4      rxvt */
+		case 15: kbd.key = KBD_F5; break;	/* kf5      rxvt */
+
+		case 17: kbd.key = KBD_F6; break;	/* kf6      vt200 */
+		case 18: kbd.key = KBD_F7; break;	/* kf7      vt200 */
+		case 19: kbd.key = KBD_F8; break;	/* kf8      vt200 */
+		case 20: kbd.key = KBD_F9; break;	/* kf9      vt200 */
+		case 21: kbd.key = KBD_F10; break;	/* kf10     vt200 */
+
+		case 23: kbd.key = KBD_F11; break;	/* kf11     vt200 */
+		case 24: kbd.key = KBD_F12; break;	/* kf12     vt200 */
 
 		/* Give preference to F11 and F12 over shifted F1 and F2. */
 		/*
@@ -759,8 +762,8 @@ #endif
 
 		} break;
 
-	case 'R': resize_terminal(); break;
-	case 'M':
+	case 'R': resize_terminal(); break;	/*    CPR  */
+	case 'M':                               /*   (DL)  kmous    xterm */
 #ifdef CONFIG_MOUSE
 		el = decode_terminal_mouse_escape_sequence(itrm, ev, el, v);
 #endif /* CONFIG_MOUSE */
@@ -801,28 +804,27 @@ decode_terminal_application_key(struct i
 	c = itrm->in.queue.data[2];
 	if (c < 0x21 || c > 0x7E) return 0;
 
-	/* These are all from xterm-215/ctlseqs.txt.  */
-	switch (c) {
-	case ' ': kbd.key = ' '; break;
-	case 'A': kbd.key = KBD_UP; break;
-	case 'B': kbd.key = KBD_DOWN; break;
-	case 'C': kbd.key = KBD_RIGHT; break;
-	case 'D': kbd.key = KBD_LEFT; break;
-	case 'F': kbd.key = KBD_END; break;
-	case 'H': kbd.key = KBD_HOME; break;
-	case 'I': kbd.key = KBD_TAB; break;
-	case 'M': kbd.key = KBD_ENTER; break;
+	switch (c) {					/* Terminfo $TERM */
+	case ' ': kbd.key = ' '; break;			/*          xterm */
+	case 'A': kbd.key = KBD_UP; break;		/* kcuu1    vt100 */
+	case 'B': kbd.key = KBD_DOWN; break;		/* kcud1    vt100 */
+	case 'C': kbd.key = KBD_RIGHT; break;		/* kcuf1    vt100 */
+	case 'D': kbd.key = KBD_LEFT; break;		/* kcub1    vt100 */
+	case 'F': kbd.key = KBD_END; break;		/* kend     xterm */
+	case 'H': kbd.key = KBD_HOME; break;		/* khome    xterm */
+	case 'I': kbd.key = KBD_TAB; break;		/*          xterm */
+	case 'M': kbd.key = KBD_ENTER; break;		/* kent     vt100 */
 		/* FIXME: xterm generates ESC O 2 P for Shift-PF1 */
-	case 'P': kbd.key = KBD_F1; break;
-	case 'Q': kbd.key = KBD_F2; break;
-	case 'R': kbd.key = KBD_F3; break;
-	case 'S': kbd.key = KBD_F4; break;
-	case 'X': kbd.key = '='; break;
-
-	case 'j': case 'k': case 'l': case 'm': /* *+,- */
-	case 'n': case 'o': case 'p': case 'q': /* ./01 */
-	case 'r': case 's': case 't': case 'u': /* 2345 */
-	case 'v': case 'w': case 'x': case 'y': /* 6789 */
+	case 'P': kbd.key = KBD_F1; break;		/* kf1      vt100 */
+	case 'Q': kbd.key = KBD_F2; break;		/* kf2      vt100 */
+	case 'R': kbd.key = KBD_F3; break;		/* kf3      vt100 */
+	case 'S': kbd.key = KBD_F4; break;		/* kf4      vt100 */
+	case 'X': kbd.key = '='; break;			/*          xterm */
+
+	case 'j': case 'k': case 'l': case 'm': /* *+,-             xterm */
+	case 'n': case 'o': case 'p': case 'q': /* ./01             xterm */
+	case 'r': case 's': case 't': case 'u': /* 2345             xterm */
+	case 'v': case 'w': case 'x': case 'y': /* 6789             xterm */
 		kbd.key = c - 'p' + '0'; break;
 	}
 	if (kbd.key != KBD_UNDEF)
@@ -960,7 +962,7 @@ #endif /* DEBUG_ITRM_QUEUE */
 		if (itrm->in.queue.len < 2) {
 			el = -1;
 		} else if (itrm->in.queue.data[1] == 0x5B /* CSI */) {
- 			el = decode_terminal_escape_sequence(itrm, &ev);
+			el = decode_terminal_escape_sequence(itrm, &ev);
 		} else if (itrm->in.queue.data[1] == 0x4F /* SS3 */) {
 			el = decode_terminal_application_key(itrm, &ev);
 		} else if (itrm->in.queue.data[1] == ASCII_ESC) {
signature.asc (application/pgp-signature, 188 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFEzKFeHm9IGt60eMgRAg6RAJwJe3+ectXB4V0KPjJzD0iLJir+0ACfT+yT
XpDBWJAFIwnEYLFIv1d/aNI=
=Qo1/
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.