summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorMichael Brown2022-02-09 16:43:42 +0100
committerMichael Brown2022-02-10 14:59:32 +0100
commit0bbd8967830097b9141945ba960e90339c230ccb (patch)
treeeca6637c24625b3ca50663d8f5e833f6e4f009b5 /src/core
parent[console] Update genkeymap to work with current databases (diff)
downloadipxe-0bbd8967830097b9141945ba960e90339c230ccb.tar.gz
ipxe-0bbd8967830097b9141945ba960e90339c230ccb.tar.xz
ipxe-0bbd8967830097b9141945ba960e90339c230ccb.zip
[console] Handle remapping of scancode 86
The key with scancode 86 appears in the position between left shift and Z on a US keyboard, where it typically fails to exist entirely. Most US keyboard maps define this nonexistent key as generating "\|", with the notable exception of "loadkeys" which instead reports it as generating "<>". Both of these mapping choices duplicate keys that exist elsewhere in the map, which causes problems for our ASCII-based remapping mechanism. Work around these quirks by treating the key as generating "\|" with the high bit set, and making it subject to remapping. Where the BIOS generates "\|" as expected, this allows us to remap to the correct ASCII value. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/keymap.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/core/keymap.c b/src/core/keymap.c
index a6707a2ce..5054e4769 100644
--- a/src/core/keymap.c
+++ b/src/core/keymap.c
@@ -48,5 +48,8 @@ unsigned int key_remap ( unsigned int character ) {
}
}
+ /* Clear pseudo key flag */
+ character &= ~KEYMAP_PSEUDO;
+
return character;
}