+char * get_keyname(int keycode) {
+// Translate some keycodes to readable names of max 9 chars.
+ char * keyname;
+ keyname = malloc(15);
+ if (32 < keycode && keycode < 127)
+ sprintf(keyname, "%c", keycode);
+ else if (keycode == 9)
+ sprintf(keyname, "TAB");
+ else if (keycode == 10)
+ sprintf(keyname, "RETURN");
+ else if (keycode == 27)
+ sprintf(keyname, "ESCAPE");
+ else if (keycode == 32)
+ sprintf(keyname, "SPACE");
+ else if (keycode == KEY_UP)
+ sprintf(keyname, "UP");
+ else if (keycode == KEY_DOWN)
+ sprintf(keyname, "DOWN");
+ else if (keycode == KEY_LEFT)
+ sprintf(keyname, "LEFT");
+ else if (keycode == KEY_RIGHT)
+ sprintf(keyname, "RIGHT");
+ else if (keycode == KEY_HOME)
+ sprintf(keyname, "HOME");
+ else if (keycode == KEY_BACKSPACE)
+ sprintf(keyname, "BACKSPACE");
+ else if (keycode >= KEY_F0 && keycode <= KEY_F(63)) {
+ int f = keycode - KEY_F0;
+ sprintf(keyname, "F%d", f); }
+ else if (keycode == KEY_DC)
+ sprintf(keyname, "DELETE");
+ else if (keycode == KEY_IC)
+ sprintf(keyname, "INSERT");
+ else if (keycode == KEY_NPAGE)
+ sprintf(keyname, "NEXT PAGE");
+ else if (keycode == KEY_PPAGE)
+ sprintf(keyname, "PREV PAGE");
+ else if (keycode == KEY_END)
+ sprintf(keyname, "END");
+ else
+ sprintf(keyname, "(unknown)");
+ return keyname; }
+