aboutsummaryrefslogtreecommitdiff
path: root/toys/example/test_scankey.c
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2017-10-31 15:51:02 -0500
committerRob Landley <rob@landley.net>2017-10-31 15:51:02 -0500
commite913247fec162437920266182834aedadcb03004 (patch)
tree8f61ef4d6dfdb0d256279d4e5e34347f498aa13b /toys/example/test_scankey.c
parentb2d8cf906502226904e149e20279a899ba22e035 (diff)
downloadtoybox-e913247fec162437920266182834aedadcb03004.tar.gz
Rename test_*.c to demo_*.c (because "make test_$CMD" means something already),
fluff out README, and add a comment to hostid explaining its deprecation.
Diffstat (limited to 'toys/example/test_scankey.c')
-rw-r--r--toys/example/test_scankey.c80
1 files changed, 0 insertions, 80 deletions
diff --git a/toys/example/test_scankey.c b/toys/example/test_scankey.c
deleted file mode 100644
index db900270..00000000
--- a/toys/example/test_scankey.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* test_scankey.c - collate incoming ansi escape sequences.
- *
- * Copyright 2015 Rob Landley <rob@landley.net>
- *
- * TODO sigwinch
-
-USE_TEST_SCANKEY(NEWTOY(test_scankey, 0, TOYFLAG_BIN))
-
-config TEST_SCANKEY
- bool "test_scankey"
- default n
- help
- usage: test_scankey
-
- Move a letter around the screen. Hit ESC to exit.
-*/
-
-#define FOR_test_scankey
-#include "toys.h"
-
-void test_scankey_main(void)
-{
- time_t t[2];
- unsigned width, height, tick;
- char c = 'X', scratch[16];
- int key, x, y;
-
- t[0] = t[1] = x = tick = 0;
- memset(scratch, 0, 16);
- y = 1;
-
- sigatexit(tty_sigreset); // Make ctrl-c restore tty
- tty_esc("?25l"); // hide cursor
- tty_esc("0m"); // reset color to default
- tty_esc("2J"); // Clear screen
- xset_terminal(1, 1, 0); // Raw mode
-
- for (;;) {
- tty_jump(x, y);
- xputc(c);
- t[1&++tick] = time(0);
- if (t[0] != t[1]) terminal_probesize(&width, &height);
- // Don't block first time through, to force header print
- key = scan_key_getsize(scratch, -1*!!t[0], &width, &height);
- tty_jump(0, 0);
- printf("ESC to exit: ");
- // Print unknown escape sequence
- if (*scratch) {
- printf("key=[ESC");
- // Fetch rest of sequence after deviation, time gap determines end
- while (0<(key = scan_key_getsize(scratch, 0, &width, &height)))
- printf("%c", key);
- printf("] ");
- } else printf("key=%d ", key);
- printf("x=%d y=%d width=%d height=%d\033[K", x, y, width, height);
- fflush(0);
-
- if (key == -2) continue;
- if (key <= ' ') break;
- if (key>=256) {
- tty_jump(x, y);
- xputc(' ');
-
- key -= 256;
- if (key==KEY_UP) y--;
- else if (key==KEY_DOWN) y++;
- else if (key==KEY_RIGHT) x++;
- else if (key==KEY_LEFT) x--;
- else if (key==KEY_PGUP) y = 0;
- else if (key==KEY_PGDN) y = 999;
- else if (key==KEY_HOME) x = 0;
- else if (key==KEY_END) x = 999;
- if (y<1) y = 1;
- if (y>=height) y = height-1;
- if (x<0) x = 0;
- if (x>=width) x = width-1;
- } else c = key;
- }
- tty_reset();
-}