Example #1
0
static int handle_escape(void)
{
	char buffer[5];
	int len = getkeyseq(buffer, 0, sizeof(buffer));
	int i, t;

	if (len == 0)
		return 27;

	for(i = 0; escape_codes[i].seq != NULL; i++) {
		const char *p = escape_codes[i].seq;

		for(t = 0; t < len; t++) {
			if (!*p || *p != buffer[t])
				break;
			p++;
		}

		if (t == len)
			return escape_codes[i].key;
	}

	return 0;
}
Example #2
0
int console_getchar(void)
{
    unsigned int c = getkeyseq();
    if (c)
	return c;
    c = keyboard_get_key();
    if (!(c & KEYB_KEYUP) && (c & 0xffff)) {
	switch (c & 0xffff) {
	case UP_ARROW: keyseq = "\033[A"; return getkeyseq();
	case DOWN_ARROW: keyseq = "\033[B"; return getkeyseq();
	case RIGHT_ARROW: keyseq = "\033[C"; return getkeyseq();
	case LEFT_ARROW: keyseq = "\033[D"; return getkeyseq();
	case INSERT: keyseq = "\033[2~"; return getkeyseq();
	case DEL: keyseq = "\033[3~"; return getkeyseq();
	case HOME: keyseq = "\033[OH"; return getkeyseq();
	case END: keyseq = "\033[OF"; return getkeyseq();
	case PAGE_UP: keyseq = "\033[5~"; return getkeyseq();
	case PAGE_DOWN: keyseq = "\033[6~"; return getkeyseq();
	}
	return c & 0xff;
    }
    return -1;
}