Skip to content

Commit 1febd87

Browse files
committed
[console] Add keymap generator
Inspired by LILO's keytab-lilo.pl, genkeymap.pl uses "loadkeys -b" to obtain a Linux keyboard map, and generates a file keymap_xx.c in hci/keymap. Signed-off-by: Michael Brown <mcb30@ipxe.org>
1 parent f98cf7d commit 1febd87

35 files changed

+1160
-0
lines changed

src/Makefile

+2
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ ELF2EFI64 := ./util/elf2efi64
4545
EFIROM := ./util/efirom
4646
ICCFIX := ./util/iccfix
4747
EINFO := ./util/einfo
48+
GENKEYMAP := ./util/genkeymap.pl
4849
DOXYGEN := doxygen
4950
BINUTILS_DIR := /usr
5051
BFD_DIR := $(BINUTILS_DIR)
@@ -80,6 +81,7 @@ SRCDIRS += tests
8081
SRCDIRS += crypto crypto/axtls crypto/matrixssl
8182
SRCDIRS += hci hci/commands hci/tui
8283
SRCDIRS += hci/mucurses hci/mucurses/widgets
84+
SRCDIRS += hci/keymap
8385
SRCDIRS += usr
8486
SRCDIRS += config
8587

src/Makefile.housekeeping

+8
Original file line numberDiff line numberDiff line change
@@ -1085,6 +1085,14 @@ docview :
10851085

10861086
endif # defined(BIN)
10871087

1088+
###############################################################################
1089+
#
1090+
# Keyboard maps
1091+
#
1092+
1093+
hci/keymap/keymap_%.c : $(GENKEYMAP)
1094+
$(Q)$(PERL) $(GENKEYMAP) $* > $@
1095+
10881096
###############################################################################
10891097
#
10901098
# Clean-up

src/hci/keymap/keymap_al.c

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/** @file
2+
*
3+
* "al" keyboard mapping
4+
*
5+
* This file is automatically generated; do not edit
6+
*
7+
*/
8+
9+
FILE_LICENCE ( PUBLIC_DOMAIN );
10+
11+
#include <ipxe/keymap.h>
12+
13+
/** "al" keyboard mapping */
14+
struct key_mapping al_mapping[] __keymap = {
15+
{ 0x19, 0x1a }, /* Ctrl-Y => Ctrl-Z */
16+
{ 0x1a, 0x19 }, /* Ctrl-Z => Ctrl-Y */
17+
{ 0x22, 0x7b }, /* '"' => '{' */
18+
{ 0x27, 0x5b }, /* '\'' => '[' */
19+
{ 0x3e, 0x3a }, /* '>' => ':' */
20+
{ 0x40, 0x22 }, /* '@' => '"' */
21+
{ 0x59, 0x5a }, /* 'Y' => 'Z' */
22+
{ 0x5a, 0x59 }, /* 'Z' => 'Y' */
23+
{ 0x5c, 0x5d }, /* '\\' => ']' */
24+
{ 0x5d, 0x40 }, /* ']' => '@' */
25+
{ 0x60, 0x5c }, /* '`' => '\\' */
26+
{ 0x79, 0x7a }, /* 'y' => 'z' */
27+
{ 0x7a, 0x79 }, /* 'z' => 'y' */
28+
{ 0x7c, 0x7d }, /* '|' => '}' */
29+
{ 0x7d, 0x27 }, /* '}' => '\'' */
30+
{ 0x7e, 0x7c }, /* '~' => '|' */
31+
};

src/hci/keymap/keymap_az.c

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/** @file
2+
*
3+
* "az" keyboard mapping
4+
*
5+
* This file is automatically generated; do not edit
6+
*
7+
*/
8+
9+
FILE_LICENCE ( PUBLIC_DOMAIN );
10+
11+
#include <ipxe/keymap.h>
12+
13+
/** "az" keyboard mapping */
14+
struct key_mapping az_mapping[] __keymap = {
15+
{ 0x23, 0x27 }, /* '#' => '\'' */
16+
{ 0x24, 0x3b }, /* '$' => ';' */
17+
{ 0x26, 0x3f }, /* '&' => '?' */
18+
{ 0x2f, 0x2e }, /* '/' => '.' */
19+
{ 0x3a, 0x49 }, /* ':' => 'I' */
20+
{ 0x3f, 0x2c }, /* '?' => ',' */
21+
{ 0x40, 0x22 }, /* '@' => '"' */
22+
{ 0x5e, 0x3a }, /* '^' => ':' */
23+
{ 0x7c, 0x2f }, /* '|' => '/' */
24+
};

src/hci/keymap/keymap_bg.c

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/** @file
2+
*
3+
* "bg" keyboard mapping
4+
*
5+
* This file is automatically generated; do not edit
6+
*
7+
*/
8+
9+
FILE_LICENCE ( PUBLIC_DOMAIN );
10+
11+
#include <ipxe/keymap.h>
12+
13+
/** "bg" keyboard mapping */
14+
struct key_mapping bg_mapping[] __keymap = {
15+
};

src/hci/keymap/keymap_by.c

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/** @file
2+
*
3+
* "by" keyboard mapping
4+
*
5+
* This file is automatically generated; do not edit
6+
*
7+
*/
8+
9+
FILE_LICENCE ( PUBLIC_DOMAIN );
10+
11+
#include <ipxe/keymap.h>
12+
13+
/** "by" keyboard mapping */
14+
struct key_mapping by_mapping[] __keymap = {
15+
};

src/hci/keymap/keymap_cf.c

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/** @file
2+
*
3+
* "cf" keyboard mapping
4+
*
5+
* This file is automatically generated; do not edit
6+
*
7+
*/
8+
9+
FILE_LICENCE ( PUBLIC_DOMAIN );
10+
11+
#include <ipxe/keymap.h>
12+
13+
/** "cf" keyboard mapping */
14+
struct key_mapping cf_mapping[] __keymap = {
15+
{ 0x23, 0x2f }, /* '#' => '/' */
16+
{ 0x3c, 0x27 }, /* '<' => '\'' */
17+
{ 0x3e, 0x2e }, /* '>' => '.' */
18+
{ 0x40, 0x22 }, /* '@' => '"' */
19+
{ 0x5c, 0x3c }, /* '\\' => '<' */
20+
{ 0x5e, 0x3f }, /* '^' => '?' */
21+
{ 0x60, 0x23 }, /* '`' => '#' */
22+
{ 0x7c, 0x3e }, /* '|' => '>' */
23+
{ 0x7e, 0x7c }, /* '~' => '|' */
24+
};

src/hci/keymap/keymap_cz.c

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/** @file
2+
*
3+
* "cz" keyboard mapping
4+
*
5+
* This file is automatically generated; do not edit
6+
*
7+
*/
8+
9+
FILE_LICENCE ( PUBLIC_DOMAIN );
10+
11+
#include <ipxe/keymap.h>
12+
13+
/** "cz" keyboard mapping */
14+
struct key_mapping cz_mapping[] __keymap = {
15+
{ 0x21, 0x2b }, /* '!' => '+' */
16+
{ 0x2d, 0x3d }, /* '-' => '=' */
17+
{ 0x2f, 0x2d }, /* '/' => '-' */
18+
{ 0x31, 0x2b }, /* '1' => '+' */
19+
{ 0x3c, 0x5c }, /* '<' => '\\' */
20+
{ 0x3e, 0x2e }, /* '>' => '.' */
21+
{ 0x3f, 0x2d }, /* '?' => '-' */
22+
{ 0x5d, 0x29 }, /* ']' => ')' */
23+
{ 0x5f, 0x3d }, /* '_' => '=' */
24+
{ 0x60, 0x3b }, /* '`' => ';' */
25+
{ 0x7d, 0x29 }, /* '}' => ')' */
26+
{ 0x7e, 0x3b }, /* '~' => ';' */
27+
};

src/hci/keymap/keymap_de.c

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/** @file
2+
*
3+
* "de" keyboard mapping
4+
*
5+
* This file is automatically generated; do not edit
6+
*
7+
*/
8+
9+
FILE_LICENCE ( PUBLIC_DOMAIN );
10+
11+
#include <ipxe/keymap.h>
12+
13+
/** "de" keyboard mapping */
14+
struct key_mapping de_mapping[] __keymap = {
15+
{ 0x19, 0x1a }, /* Ctrl-Y => Ctrl-Z */
16+
{ 0x1a, 0x19 }, /* Ctrl-Z => Ctrl-Y */
17+
{ 0x22, 0x7d }, /* '"' => '}' */
18+
{ 0x26, 0x2f }, /* '&' => '/' */
19+
{ 0x27, 0x5d }, /* '\'' => ']' */
20+
{ 0x28, 0x29 }, /* '(' => ')' */
21+
{ 0x29, 0x3d }, /* ')' => '=' */
22+
{ 0x2a, 0x28 }, /* '*' => '(' */
23+
{ 0x2b, 0x60 }, /* '+' => '`' */
24+
{ 0x2d, 0x5c }, /* '-' => '\\' */
25+
{ 0x2f, 0x2d }, /* '/' => '-' */
26+
{ 0x3a, 0x7b }, /* ':' => '{' */
27+
{ 0x3b, 0x5b }, /* ';' => '[' */
28+
{ 0x3d, 0x27 }, /* '=' => '\'' */
29+
{ 0x3e, 0x3a }, /* '>' => ':' */
30+
{ 0x3f, 0x5f }, /* '?' => '_' */
31+
{ 0x40, 0x22 }, /* '@' => '"' */
32+
{ 0x59, 0x5a }, /* 'Y' => 'Z' */
33+
{ 0x5a, 0x59 }, /* 'Z' => 'Y' */
34+
{ 0x5b, 0x40 }, /* '[' => '@' */
35+
{ 0x5c, 0x23 }, /* '\\' => '#' */
36+
{ 0x5d, 0x2b }, /* ']' => '+' */
37+
{ 0x5e, 0x26 }, /* '^' => '&' */
38+
{ 0x5f, 0x3f }, /* '_' => '?' */
39+
{ 0x60, 0x5e }, /* '`' => '^' */
40+
{ 0x79, 0x7a }, /* 'y' => 'z' */
41+
{ 0x7a, 0x79 }, /* 'z' => 'y' */
42+
{ 0x7b, 0x5c }, /* '{' => '\\' */
43+
{ 0x7c, 0x27 }, /* '|' => '\'' */
44+
{ 0x7d, 0x2a }, /* '}' => '*' */
45+
};

src/hci/keymap/keymap_dk.c

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/** @file
2+
*
3+
* "dk" keyboard mapping
4+
*
5+
* This file is automatically generated; do not edit
6+
*
7+
*/
8+
9+
FILE_LICENCE ( PUBLIC_DOMAIN );
10+
11+
#include <ipxe/keymap.h>
12+
13+
/** "dk" keyboard mapping */
14+
struct key_mapping dk_mapping[] __keymap = {
15+
{ 0x26, 0x2f }, /* '&' => '/' */
16+
{ 0x28, 0x29 }, /* '(' => ')' */
17+
{ 0x29, 0x3d }, /* ')' => '=' */
18+
{ 0x2a, 0x28 }, /* '*' => '(' */
19+
{ 0x2b, 0x60 }, /* '+' => '`' */
20+
{ 0x2d, 0x2b }, /* '-' => '+' */
21+
{ 0x2f, 0x2d }, /* '/' => '-' */
22+
{ 0x3e, 0x3a }, /* '>' => ':' */
23+
{ 0x3f, 0x5f }, /* '?' => '_' */
24+
{ 0x40, 0x22 }, /* '@' => '"' */
25+
{ 0x5c, 0x27 }, /* '\\' => '\'' */
26+
{ 0x5e, 0x26 }, /* '^' => '&' */
27+
{ 0x5f, 0x3f }, /* '_' => '?' */
28+
{ 0x7c, 0x2a }, /* '|' => '*' */
29+
{ 0x7d, 0x5e }, /* '}' => '^' */
30+
};

src/hci/keymap/keymap_es.c

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/** @file
2+
*
3+
* "es" keyboard mapping
4+
*
5+
* This file is automatically generated; do not edit
6+
*
7+
*/
8+
9+
FILE_LICENCE ( PUBLIC_DOMAIN );
10+
11+
#include <ipxe/keymap.h>
12+
13+
/** "es" keyboard mapping */
14+
struct key_mapping es_mapping[] __keymap = {
15+
{ 0x26, 0x2f }, /* '&' => '/' */
16+
{ 0x28, 0x29 }, /* '(' => ')' */
17+
{ 0x29, 0x3d }, /* ')' => '=' */
18+
{ 0x2a, 0x28 }, /* '*' => '(' */
19+
{ 0x2d, 0x27 }, /* '-' => '\'' */
20+
{ 0x2f, 0x2d }, /* '/' => '-' */
21+
{ 0x3e, 0x3a }, /* '>' => ':' */
22+
{ 0x3f, 0x5f }, /* '?' => '_' */
23+
{ 0x40, 0x22 }, /* '@' => '"' */
24+
{ 0x5d, 0x2b }, /* ']' => '+' */
25+
{ 0x5e, 0x26 }, /* '^' => '&' */
26+
{ 0x5f, 0x3f }, /* '_' => '?' */
27+
{ 0x7d, 0x2a }, /* '}' => '*' */
28+
};

src/hci/keymap/keymap_et.c

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/** @file
2+
*
3+
* "et" keyboard mapping
4+
*
5+
* This file is automatically generated; do not edit
6+
*
7+
*/
8+
9+
FILE_LICENCE ( PUBLIC_DOMAIN );
10+
11+
#include <ipxe/keymap.h>
12+
13+
/** "et" keyboard mapping */
14+
struct key_mapping et_mapping[] __keymap = {
15+
{ 0x26, 0x2f }, /* '&' => '/' */
16+
{ 0x28, 0x29 }, /* '(' => ')' */
17+
{ 0x29, 0x3d }, /* ')' => '=' */
18+
{ 0x2a, 0x28 }, /* '*' => '(' */
19+
{ 0x2d, 0x2b }, /* '-' => '+' */
20+
{ 0x2f, 0x2d }, /* '/' => '-' */
21+
{ 0x3e, 0x3a }, /* '>' => ':' */
22+
{ 0x3f, 0x5f }, /* '?' => '_' */
23+
{ 0x40, 0x22 }, /* '@' => '"' */
24+
{ 0x5c, 0x27 }, /* '\\' => '\'' */
25+
{ 0x5e, 0x26 }, /* '^' => '&' */
26+
{ 0x5f, 0x3f }, /* '_' => '?' */
27+
{ 0x7c, 0x2a }, /* '|' => '*' */
28+
};

src/hci/keymap/keymap_fi.c

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/** @file
2+
*
3+
* "fi" keyboard mapping
4+
*
5+
* This file is automatically generated; do not edit
6+
*
7+
*/
8+
9+
FILE_LICENCE ( PUBLIC_DOMAIN );
10+
11+
#include <ipxe/keymap.h>
12+
13+
/** "fi" keyboard mapping */
14+
struct key_mapping fi_mapping[] __keymap = {
15+
{ 0x22, 0x5b }, /* '"' => '[' */
16+
{ 0x26, 0x2f }, /* '&' => '/' */
17+
{ 0x27, 0x7b }, /* '\'' => '{' */
18+
{ 0x28, 0x29 }, /* '(' => ')' */
19+
{ 0x29, 0x3d }, /* ')' => '=' */
20+
{ 0x2a, 0x28 }, /* '*' => '(' */
21+
{ 0x2b, 0x60 }, /* '+' => '`' */
22+
{ 0x2d, 0x2b }, /* '-' => '+' */
23+
{ 0x2f, 0x2d }, /* '/' => '-' */
24+
{ 0x3a, 0x5c }, /* ':' => '\\' */
25+
{ 0x3b, 0x7c }, /* ';' => '|' */
26+
{ 0x3d, 0x27 }, /* '=' => '\'' */
27+
{ 0x3e, 0x3a }, /* '>' => ':' */
28+
{ 0x3f, 0x5f }, /* '?' => '_' */
29+
{ 0x40, 0x22 }, /* '@' => '"' */
30+
{ 0x5b, 0x7d }, /* '[' => '}' */
31+
{ 0x5c, 0x27 }, /* '\\' => '\'' */
32+
{ 0x5e, 0x26 }, /* '^' => '&' */
33+
{ 0x5f, 0x3f }, /* '_' => '?' */
34+
{ 0x7b, 0x5d }, /* '{' => ']' */
35+
{ 0x7c, 0x2a }, /* '|' => '*' */
36+
{ 0x7d, 0x5e }, /* '}' => '^' */
37+
};

0 commit comments

Comments
 (0)