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) {

Attachment: pgpavtzn08cTl.pgp
Description: PGP signature

_______________________________________________
elinks-dev mailing list
[email protected]
http://linuxfromscratch.org/mailman/listinfo/elinks-dev

Reply via email to