From ce9690ca39207262d5d5540f23b3fc4788005ccc Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Sun, 25 Jan 2009 21:10:48 +0000 Subject: [console] Allow KEY_xxx constants to cover F8 function key F8 is represented by the ANSI escape sequence "^[[19~", which is not representable as a KEY_xxx constant using the current encoding scheme. Adapt the encoding scheme to allow F8 to be represented, since PXE requires that we may need to prompt the user to press F8. --- src/core/getkey.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/core') diff --git a/src/core/getkey.c b/src/core/getkey.c index 1551cf37c..787c90276 100644 --- a/src/core/getkey.c +++ b/src/core/getkey.c @@ -16,6 +16,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include @@ -59,21 +60,22 @@ static int getchar_timeout ( unsigned long timeout ) { */ int getkey ( void ) { int character; - int key; + unsigned int n = 0; character = getchar(); if ( character != ESC ) return character; - key = 0; while ( ( character = getchar_timeout ( GETKEY_TIMEOUT ) ) >= 0 ) { if ( character == '[' ) continue; - if ( ! key ) - key = KEY_ANSI ( character ); + if ( isdigit ( character ) ) { + n = ( ( n * 10 ) + ( character - '0' ) ); + continue; + } if ( character >= 0x40 ) - break; + return KEY_ANSI ( n, character ); } - return ( key ? key : ESC ); + return ESC; } -- cgit v1.2.3-55-g7522