|
|
1.1 ! root 1: #include <curses.h> ! 2: #include <ctype.h> ! 3: #define NORMAL 0 ! 4: #define INY 1 ! 5: #define INX 2 ! 6: main() ! 7: { ! 8: int c, y, x, state; ! 9: initscr(); /* initialize curses */ ! 10: noecho(); ! 11: raw(); ! 12: clear(); ! 13: move(0, 0); ! 14: for(state = NORMAL;;) { ! 15: refresh(); ! 16: c = getch(); ! 17: if(isdigit(c)) { ! 18: switch (state) { ! 19: case NORMAL: ! 20: y = x = 0; ! 21: state = INY; ! 22: case INY: ! 23: y *= 10; ! 24: y += c - '0'; ! 25: break; ! 26: case INX: ! 27: x *= 10; ! 28: x += c - '0'; ! 29: } ! 30: } else { ! 31: if (3 == c) { /* ctrl-C */ ! 32: noraw(); ! 33: echo(); ! 34: endwin(); ! 35: exit(0); ! 36: } ! 37: switch (state) { ! 38: case INX: ! 39: state = NORMAL; ! 40: move(y, x); ! 41: case NORMAL: ! 42: addch(c); ! 43: break; ! 44: case INY: ! 45: state = INX; ! 46: } ! 47: } ! 48: } ! 49: } ! 50:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.