[console] Support AltGr to access ASCII characters via remapping

Several keyboard layouts define ASCII characters as accessible only
via the AltGr modifier.  Add support for this modifier to ensure that
all ASCII characters are accessible.

Experiments suggest that the BIOS console is likely to fail to
generate ASCII characters when the AltGr key is pressed.  Work around
this limitation by accepting LShift+RShift (which will definitely
produce an ASCII character) as a synonym for AltGr.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2022-02-14 13:45:59 +00:00
parent f2a59d5973
commit e1cedbc0d4
37 changed files with 332 additions and 5 deletions

View File

@@ -32,6 +32,8 @@ struct keymap {
const char *name;
/** Basic remapping table (zero-terminated) */
struct keymap_key *basic;
/** AltGr remapping table (zero-terminated) */
struct keymap_key *altgr;
};
/** Keyboard mapping table */
@@ -64,6 +66,9 @@ struct keymap {
/** Undo and redo CapsLock key flags */
#define KEYMAP_CAPSLOCK_REDO ( KEYMAP_CAPSLOCK | KEYMAP_CAPSLOCK_UNDO )
/** AltGr key flag */
#define KEYMAP_ALTGR 0x0800
extern unsigned int key_remap ( unsigned int character );
#endif /* _IPXE_KEYMAP_H */