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