signalled = sig;
}
+char *visualize(int c)
+{
+ static char buf[32];
+ int meta;
+
+ if (meta = (c & META))
+ c &=~ META;
+
+ if (c <= ' ')
+ (void) snprintf(buf, sizeof(buf),
+ "<%s%s>", meta ? "ALT-" : "", lowchars[c]);
+ else if (c == 0x3F)
+ (void) snprintf(buf, sizeof(buf),
+ "<%sDEL>", meta ? "ALT-" : "");
+ else if (meta)
+ (void) snprintf(buf, sizeof(buf),
+ "<ALT-%c>", c);
+ else {
+ buf[0] = c;
+ buf[1] = '\0';
+ }
+
+ return buf;
+}
+
+
main()
{
struct termios cooked, raw;
(void) tcsetattr(0, TCSANOW, &raw);
(void) printf("Type any key to see the sequence it sends.\n");
- (void) printf("Terminate with your shell interrupt character.\n");
+ (void) printf("Terminate with your shell interrupt character %s.\n",
+ visualize(raw.c_cc[VINTR]));
signalled = 0;
while (!signalled)
{
- int meta;
-
read(0, &c, 1);
- if (meta = (c & META))
- c &=~ META;
-
- if (c <= ' ')
- (void) printf("<%s%s>", meta ? "ALT-" : "", lowchars[c]);
- else if (c == 0x3F)
- (void) printf("<%sDEL>", meta ? "ALT-" : "");
- else if (meta)
- (void) printf("<ALT-%c>", c);
- else
- (void) putchar(c);
+ (void)fputs(visualize(c), stdout);
(void) fflush(stdout);
}