]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[console] Handle remapping of scancode 86
authorMichael Brown <mcb30@ipxe.org>
Wed, 9 Feb 2022 15:43:42 +0000 (15:43 +0000)
committerMichael Brown <mcb30@ipxe.org>
Thu, 10 Feb 2022 13:59:32 +0000 (13:59 +0000)
commit0bbd8967830097b9141945ba960e90339c230ccb
treeeca6637c24625b3ca50663d8f5e833f6e4f009b5
parent3f05a82fec6223a49df300a9cbf80c6245c3f99e
[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>
28 files changed:
src/arch/x86/interface/pcbios/bios_console.c
src/core/keymap.c
src/drivers/usb/usbkbd.c
src/drivers/usb/usbkbd.h
src/hci/keymap/keymap_al.c
src/hci/keymap/keymap_az.c
src/hci/keymap/keymap_by.c
src/hci/keymap/keymap_de.c
src/hci/keymap/keymap_dk.c
src/hci/keymap/keymap_es.c
src/hci/keymap/keymap_et.c
src/hci/keymap/keymap_fi.c
src/hci/keymap/keymap_fr.c
src/hci/keymap/keymap_gr.c
src/hci/keymap/keymap_il.c
src/hci/keymap/keymap_it.c
src/hci/keymap/keymap_mk.c
src/hci/keymap/keymap_nl.c
src/hci/keymap/keymap_no-latin1.c
src/hci/keymap/keymap_no.c
src/hci/keymap/keymap_pl.c
src/hci/keymap/keymap_pt.c
src/hci/keymap/keymap_ru.c
src/hci/keymap/keymap_sg.c
src/hci/keymap/keymap_sr-latin.c
src/hci/keymap/keymap_ua.c
src/include/ipxe/keymap.h
src/util/genkeymap.py