mirror of
https://github.com/ipxe/ipxe
synced 2026-04-16 03:00:10 +03:00
[console] Include mappings for AltGr-Shift-<key>
The BIOS console's interpretation of LShift+RShift as equivalent to
AltGr requires the shifted ASCII characters to be present in the AltGr
mapping table, to allow AltGr-Shift-<key> to be interpreted in the
same way as AltGr-<key>.
For keyboard layouts that have different ASCII characters for
AltGr-<key> and AltGr-Shift-<key>, this will potentially leave the
character for AltGr-<key> inaccessible via the BIOS console if the
BIOS requires the use of the LShift+RShift workaround. This
theoretically affects the numeric keys in the Lithuanian ("lt")
keyboard layout (where the numerals are accessed via AltGr-<key> and
punctuation characters via AltGr-Shift-<key>), but the simple
workaround for that keyboard layout is to avoid using AltGr and Shift
entirely since the unmodified numeric keys are not remapped anyway.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -365,9 +365,11 @@ class Keymap:
|
||||
"""AltGr remapping table"""
|
||||
# Construct raw mapping from source ASCII to target ASCII
|
||||
raw = {
|
||||
source:
|
||||
self.target.get((key.modifiers | KeyModifiers.ALTGR),
|
||||
self.target[key.modifiers])[key.keycode].ascii
|
||||
source: next((self.target[x][key.keycode].ascii
|
||||
for x in (key.modifiers | KeyModifiers.ALTGR,
|
||||
KeyModifiers.ALTGR, key.modifiers)
|
||||
if x in self.target
|
||||
and self.target[x][key.keycode].ascii), None)
|
||||
for source, key in self.source.inverse.items()
|
||||
}
|
||||
# Identify printable keys that are unreachable via the basic map
|
||||
|
||||
Reference in New Issue
Block a user