aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interface/efi/efi_console.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/interface/efi/efi_console.c b/src/interface/efi/efi_console.c
index 98ebbf3..874f54b 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 |