--- src/drivers/console.c.orig 2006-11-11 23:56:48.489337000 +0100 +++ src/drivers/console.c 2006-11-11 23:41:23.344876000 +0100 @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -123,6 +124,16 @@ n = read( fd, events, sizeof(events)-4 ); for( i=0; i n ) { + if( (nn=read(fd, events+n, i+3-n )) <= 0 ) + break; + n += nn; + } + key_event( kConsoleKeytable, CONSOLE_RAW_KEYCODE | ((events[i+1]&0x7f)<<7) | (events[i+2]&0x7f), !(events[i] & 0x80) ); + i+=2; + continue; + } if( !uses_linux_keycodes() && (events[i] & 0x7f) == 0x7e /* mouse */ ) { while( i+3 > n ) { if( (nn=read(fd, events+n, i+3-n )) <= 0 ) @@ -211,7 +222,7 @@ kbd.handler_id = add_async_handler( vt.fd, POLLIN, console_key_event, 1 /* use SIGIO */ ); kbd.initialized = 1; - register_key_table( kConsoleKeytable, 0, 127 ); + register_key_table( kConsoleKeytable, 0, KEY_MAX ); user_kbd_customize( kConsoleKeytable ); set_text_kbd(); --- src/drivers/keycodes.c.orig 2006-11-11 23:57:21.819650000 +0100 +++ src/drivers/keycodes.c 2006-11-11 23:45:24.462210000 +0100 @@ -45,7 +45,7 @@ "vnckbd_prefs" }; -#define UNK 126 +#define UNK 0xff /* 127 == Start Button */ static const unsigned char linux_to_adb_keycodes[128] = {