[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.
This commit is contained in:
Michael Brown
2009-01-25 21:10:48 +00:00
parent 3f814f08e5
commit ce9690ca39
2 changed files with 21 additions and 22 deletions

View File

@@ -16,6 +16,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <ctype.h>
#include <console.h>
#include <gpxe/process.h>
#include <gpxe/keys.h>
@@ -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;
}