mirror of
https://github.com/ipxe/ipxe
synced 2025-12-19 19:49:45 +03:00
[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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user