diff options
| author | Michael Brown | 2022-02-09 16:43:42 +0100 |
|---|---|---|
| committer | Michael Brown | 2022-02-10 14:59:32 +0100 |
| commit | 0bbd8967830097b9141945ba960e90339c230ccb (patch) | |
| tree | eca6637c24625b3ca50663d8f5e833f6e4f009b5 /src/include/ipxe/keymap.h | |
| parent | [console] Update genkeymap to work with current databases (diff) | |
| download | ipxe-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/include/ipxe/keymap.h')
| -rw-r--r-- | src/include/ipxe/keymap.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/include/ipxe/keymap.h b/src/include/ipxe/keymap.h index 62b3bb131..93c9e7314 100644 --- a/src/include/ipxe/keymap.h +++ b/src/include/ipxe/keymap.h @@ -27,6 +27,9 @@ struct key_mapping { /** Define a keyboard mapping */ #define __keymap __table_entry ( KEYMAP, 01 ) +/** Pseudo key flag */ +#define KEYMAP_PSEUDO 0x80 + extern unsigned int key_remap ( unsigned int character ); #endif /* _IPXE_KEYMAP_H */ |
