The pattern is something like this:
Code:
Escape
'['
'A' - 'Z'
'0' - '9'
optionally more digits
'~'
'O'
'Q','R','S' F2,F3,F4
Esc O P is probably F1, but I keep getting help.
Some of the other function keys are like F5: Esc [ 1 5 ~
Code:
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#define ESC '\033'
#define PRNC(c) printf("%c ", c) // "%d " "%02X "
int main (void)
{
int ch;
struct termios oldt, newt;
tcgetattr (STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr (STDIN_FILENO, TCSANOW, &newt);
while ((ch = getchar()) != EOF) {
if (ch != ESC)
PRNC (ch);
else {
printf("Esc ");
ch = getchar();
PRNC (ch);
if (ch == '[') {
ch = getchar ();
PRNC (ch);
if (ch >= '0' && ch <= '9') {
do {
ch = getchar ();
PRNC (ch);
} while (ch != '~');
}
}
else if (ch == 'O') { // some function keys
ch = getchar ();
PRNC (ch);
}
else
printf (" UNKNOWN ");
}
putchar ('\n');
}
tcsetattr (STDIN_FILENO, TCSANOW, &oldt);
return 0;
}