diff options
Diffstat (limited to 'src/interface/efi')
-rw-r--r-- | src/interface/efi/efi_console.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/interface/efi/efi_console.c b/src/interface/efi/efi_console.c index 98ebbf3ac..874f54b6c 100644 --- a/src/interface/efi/efi_console.c +++ b/src/interface/efi/efi_console.c @@ -27,6 +27,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include <ipxe/efi/Protocol/ConsoleControl/ConsoleControl.h> #include <ipxe/ansiesc.h> #include <ipxe/console.h> +#include <ipxe/keymap.h> #include <ipxe/init.h> #include <config/console.h> @@ -317,6 +318,13 @@ static int efi_getchar ( void ) { key.KeyState.KeyToggleState, key.Key.UnicodeChar, key.Key.ScanCode ); + /* Remap key. There is unfortunately no way to avoid + * remapping the numeric keypad, since EFI destroys the scan + * code information that would allow us to differentiate + * between main keyboard and numeric keypad. + */ + key.Key.UnicodeChar = key_remap ( key.Key.UnicodeChar ); + /* Translate Ctrl-<key> */ if ( ( key.KeyState.KeyShiftState & EFI_SHIFT_STATE_VALID ) && ( key.KeyState.KeyShiftState & ( EFI_LEFT_CONTROL_PRESSED | |