[console] Allow for named keyboard mappings

Separate the concept of a keyboard mapping from a list of remapped
keys, to allow for the possibility of supporting multiple keyboard
mappings at runtime.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2022-02-14 13:22:48 +00:00
parent 1150321595
commit 871dd236d4
33 changed files with 373 additions and 130 deletions

View File

@@ -31,6 +31,12 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*
*/
/** Default keyboard mapping */
static TABLE_START ( keymap_start, KEYMAP );
/** Current keyboard mapping */
static struct keymap *keymap = keymap_start;
/**
* Remap a key
*
@@ -38,12 +44,12 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
* @ret character Mapped character
*/
unsigned int key_remap ( unsigned int character ) {
struct key_mapping *mapping;
struct keymap_key *key;
/* Remap via table */
for_each_table_entry ( mapping, KEYMAP ) {
if ( mapping->from == character ) {
character = mapping->to;
for ( key = keymap->basic ; key->from ; key++ ) {
if ( key->from == character ) {
character = key->to;
break;
}
}