SMOLNET PORTAL home about changes
isimpler input escape sequence management - iomenu - interactive terminal-based selection menu	Err	bitreich.org	70
hgit clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu	URL:git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu	bitreich.org	70
1Log	/scm/iomenu/log.gph	bitreich.org	70
1Files	/scm/iomenu/files.gph	bitreich.org	70
1Refs	/scm/iomenu/refs.gph	bitreich.org	70
1Tags	/scm/iomenu/tag	bitreich.org	70
1README	/scm/iomenu/file/README.gph	bitreich.org	70
1LICENSE	/scm/iomenu/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 09d7cdbc37907c01400e2193f4eafba74736aa7d	/scm/iomenu/commit/09d7cdbc37907c01400e2193f4eafba74736aa7d.gph	bitreich.org	70
1parent 2425ac3f4cb13eef4db1e4e4d66feede9bf3ab84	/scm/iomenu/commit/2425ac3f4cb13eef4db1e4e4d66feede9bf3ab84.gph	bitreich.org	70
hAuthor: Josuah Demangeon <josuah.demangeon@gandi.net>	URL:mailto:josuah.demangeon@gandi.net	bitreich.org	70
iDate:   Mon, 21 Aug 2017 15:40:31 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
isimpler input escape sequence management	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M iomenu.c                            |      35 ++++++++++---------------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 11 insertions(+), 24 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/iomenu.c b/iomenu.c	/scm/iomenu/file/iomenu.c.gph	bitreich.org	70
i@@ -14,10 +14,9 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #define  CONTROL(char) (char ^ 0x40)	Err	bitreich.org	70
i #define  ALT(char) (char + 0x80)	Err	bitreich.org	70
i+#define  ESC(char) (char + 0x80 + 0x80)	Err	bitreich.org	70
i #define  MIN(X, Y) (((X) < (Y)) ? (X) : (Y))	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-enum { KEY_UP = 0x81, KEY_DOWN, PG_UP, PG_DOWN };	Err	bitreich.org	70
i-	Err	bitreich.org	70
i static struct winsize ws;	Err	bitreich.org	70
i static struct termios termios;	Err	bitreich.org	70
i static int            ttyfd;	Err	bitreich.org	70
i@@ -341,22 +340,26 @@ top:	Err	bitreich.org	70
i                 filter();	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        case KEY_UP:	Err	bitreich.org	70
i+        case ESC('A'):  /* up */	Err	bitreich.org	70
i         case CONTROL('P'):	Err	bitreich.org	70
i                 move(-1);	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        case KEY_DOWN:	Err	bitreich.org	70
i+        case ESC('B'):  /* down */	Err	bitreich.org	70
i         case CONTROL('N'):	Err	bitreich.org	70
i                 move(+1);	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        case PG_UP:	Err	bitreich.org	70
i+        case ESC('5'):	Err	bitreich.org	70
i+                if (fgetc(stdin) != '~') break;	Err	bitreich.org	70
i+                /* FALLTHROUGH */	Err	bitreich.org	70
i         case ALT('v'):	Err	bitreich.org	70
i                 movepg(-1);	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        case PG_DOWN:	Err	bitreich.org	70
i+        case ESC('6'):	Err	bitreich.org	70
i+                if (fgetc(stdin) != '~') break;	Err	bitreich.org	70
i+                /* FALLTHROUGH */	Err	bitreich.org	70
i         case CONTROL('V'):	Err	bitreich.org	70
i                 movepg(+1);	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i@@ -373,24 +376,8 @@ top:	Err	bitreich.org	70
i                 return EXIT_SUCCESS;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         case ALT('['):	Err	bitreich.org	70
i-                switch (fgetc(stdin)) {	Err	bitreich.org	70
i-                case 'A':	Err	bitreich.org	70
i-                        key = KEY_UP;	Err	bitreich.org	70
i-                        goto top;	Err	bitreich.org	70
i-                case 'B':	Err	bitreich.org	70
i-                        key = KEY_DOWN;	Err	bitreich.org	70
i-                        goto top;	Err	bitreich.org	70
i-                case '5':	Err	bitreich.org	70
i-                        if (fgetc(stdin) == '~') {	Err	bitreich.org	70
i-                                key = PG_UP;	Err	bitreich.org	70
i-                                goto top;	Err	bitreich.org	70
i-                        }	Err	bitreich.org	70
i-                case '6':	Err	bitreich.org	70
i-                        if (fgetc(stdin) == '~') {	Err	bitreich.org	70
i-                                key = PG_DOWN;	Err	bitreich.org	70
i-                                goto top;	Err	bitreich.org	70
i-                        }	Err	bitreich.org	70
i-                }	Err	bitreich.org	70
i+                key = ESC(fgetc(stdin));	Err	bitreich.org	70
i+                goto top;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         case 033: /* escape / alt */	Err	bitreich.org	70
i                 key = ALT(fgetc(stdin));	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/iomenu/commit/09d7cdbc37907c0...
Content-Typetext/plain; charset=utf-8