Compare commits

..

No commits in common. "c8" and "c10s" have entirely different histories.
c8 ... c10s

24 changed files with 485 additions and 321 deletions

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

15
.gitignore vendored
View File

@ -1,3 +1,12 @@
SOURCES/kbd-2.0.4.tar.xz kbd-latsun-fonts.tar.bz2
SOURCES/kbd-latarcyrheb-32.tar.bz2 sun12x22-fixed.psfu
SOURCES/kbd-latsun-fonts.tar.bz2 kbd-sun12x22-fixed.tar.bz2
ro.map
ro.tar.bz2
kbd-latarcyrheb-16-fixed.tar.bz2
ro_maps.tar.bz2
terminus.tar.bz2
/fr-dvorak.tar.bz2
/kbd-latarcyrheb-32.tar.bz2
/kbdinfo.1
/kbd-2.6.4.tar.xz

View File

@ -1,3 +0,0 @@
cf5d45c62d6af70b8b1f210d89193b52f5efb05d SOURCES/kbd-2.0.4.tar.xz
17db7aaba451796278758e7c6e443b4659af17b9 SOURCES/kbd-latarcyrheb-32.tar.bz2
a5f6d9dff7a8a484cd5014ec7ffdf1eaed27084a SOURCES/kbd-latsun-fonts.tar.bz2

View File

@ -1,61 +0,0 @@
--- cz.map.orig 2016-10-11 13:11:15.000000000 +0200
+++ cz.map 2016-10-11 13:12:03.093565772 +0200
@@ -39,7 +39,7 @@
keycode 38 = +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l
keycode 39 = +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar
keycode 40 = U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe
-keycode 41 = U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum
+keycode 41 = U+003b dead_grave U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum
keycode 42 = Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift
keycode 43 = dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash
keycode 44 = +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y
@@ -108,3 +108,49 @@
keycode 127 = VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 121 = KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period
strings as usual
+# dead_grave
+compose '`' 'u' to U+016F
+compose '`' 'U' to U+016E
+compose '`' 'z' to U+00B0
+compose '`' 'Z' to U+00B0
+# dead_acute
+compose '\'' 'a' to U+00E1
+compose '\'' 'A' to U+00C1
+compose '\'' 'e' to U+00E9
+compose '\'' 'E' to U+00C9
+compose '\'' 'i' to U+00ED
+compose '\'' 'I' to U+00CD
+compose '\'' 'o' to U+00F3
+compose '\'' 'O' to U+00D3
+compose '\'' 'u' to U+00FA
+compose '\'' 'U' to U+00DA
+compose '\'' 'y' to U+00FD
+compose '\'' 'Y' to U+00DD
+# dead_caron
+compose '^' 'u' to U+016F
+compose '^' 'U' to U+016E
+compose '^' 'c' to U+010D
+compose '^' 'C' to U+010C
+compose '^' 'd' to U+010F
+compose '^' 'D' to U+010E
+compose '^' 'e' to U+011B
+compose '^' 'E' to U+011A
+compose '^' 'n' to U+0148
+compose '^' 'N' to U+0147
+compose '^' 'r' to U+0159
+compose '^' 'R' to U+0158
+compose '^' 's' to U+0161
+compose '^' 'S' to U+0160
+compose '^' 't' to U+0165
+compose '^' 'T' to U+0164
+compose '^' 'z' to U+017E
+compose '^' 'Z' to U+017D
+# dead_diaeresis
+compose '"' 'a' to U+00E4
+compose '"' 'A' to U+00C4
+compose '"' 'e' to U+00EB
+compose '"' 'E' to U+00CB
+compose '"' 'o' to U+00F6
+compose '"' 'O' to U+00D6
+compose '"' 'u' to U+00FC
+compose '"' 'U' to U+00DC

View File

@ -1,18 +0,0 @@
diff -up kbd-2.0.4/docs/man/man1/dumpkeys.1.in.orig kbd-2.0.4/docs/man/man1/dumpkeys.1.in
--- kbd-2.0.4/docs/man/man1/dumpkeys.1.in.orig 2017-01-11 11:12:22.884029413 +0100
+++ kbd-2.0.4/docs/man/man1/dumpkeys.1.in 2017-01-11 11:12:47.537040194 +0100
@@ -164,6 +164,14 @@ output of
.BI \-S shape " " " " \-\-shape= shape
.LP
.TP
+.B \-1 \-\-separate-lines
+This forces
+.B dumpkeys
+to write one line per (modifier,keycode) pair. It prefixes the word
+.I plain
+for plain keycodes.
+.LP
+.TP
.B \-t \-\-funcs-only
When this option is given,
.B dumpkeys

View File

@ -1,24 +0,0 @@
diff -up kbd-2.0.4/src/loadkeys.c.orig kbd-2.0.4/src/loadkeys.c
--- kbd-2.0.4/src/loadkeys.c.orig 2017-01-11 11:14:48.308093019 +0100
+++ kbd-2.0.4/src/loadkeys.c 2017-01-11 11:15:18.018106020 +0100
@@ -27,7 +27,7 @@
#include "keymap.h"
static const char *progname = NULL;
-static const char *const dirpath1[] = { "", DATADIR "/" KEYMAPDIR "/**", KERNDIR "/", 0 };
+static const char *const dirpath1[] = { "", DATADIR "/" KEYMAPDIR "/**", DATADIR "/" XKBKEYMAPDIR "/", DATADIR "/" LEGACYKEYMAPDIR "/**", KERNDIR "/", 0 };
static const char *const suffixes[] = { "", ".kmap", ".map", 0 };
static void __attribute__((noreturn))
diff -up kbd-2.0.4/src/paths.h.orig kbd-2.0.4/src/paths.h
--- kbd-2.0.4/src/paths.h.orig 2017-01-11 11:15:40.404115812 +0100
+++ kbd-2.0.4/src/paths.h 2017-01-11 11:15:59.730124274 +0100
@@ -5,6 +5,8 @@
* The following five subdirectories are defined:
*/
#define KEYMAPDIR "keymaps"
+#define XKBKEYMAPDIR "keymaps/xkb"
+#define LEGACYKEYMAPDIR "keymaps/legacy"
#define UNIMAPDIR "unimaps"
#define TRANSDIR "consoletrans"
#define VIDEOMODEDIR "videomodes"

View File

@ -1,35 +0,0 @@
diff -up kbd-2.0.4/src/kdmapop.c.orig kbd-2.0.4/src/kdmapop.c
--- kbd-2.0.4/src/kdmapop.c.orig 2018-11-05 10:06:05.208744333 +0100
+++ kbd-2.0.4/src/kdmapop.c 2018-11-05 10:14:16.149215908 +0100
@@ -154,6 +154,7 @@ int getunimap(int fd, struct unimapdesc
}
if (ioctl(fd, GIO_UNIMAP, &ud)) {
perror("GIO_UNIMAP");
+ free(ud.entries);
return -1;
}
if (ct != ud.entry_ct)
diff -up kbd-2.0.4/src/libkeymap/common.c.orig kbd-2.0.4/src/libkeymap/common.c
--- kbd-2.0.4/src/libkeymap/common.c.orig 2016-12-19 16:01:51.000000000 +0100
+++ kbd-2.0.4/src/libkeymap/common.c 2018-11-05 10:05:50.207730393 +0100
@@ -246,5 +246,8 @@ int lk_free(struct lk_ctx *ctx)
ctx->key_line = NULL;
}
+ free(ctx);
+ ctx = NULL;
+
return 0;
}
diff -up kbd-2.0.4/src/setfont.c.orig kbd-2.0.4/src/setfont.c
--- kbd-2.0.4/src/setfont.c.orig 2018-11-05 10:28:01.994027734 +0100
+++ kbd-2.0.4/src/setfont.c 2018-11-05 10:35:54.933477039 +0100
@@ -327,6 +327,8 @@ do_loadfont(int fd, char *inbuf, int wid
if (putfont(fd, buf, fontsize, width, hwunit))
exit(EX_OSERR);
+
+ free(buf);
}
static void

View File

@ -1,15 +0,0 @@
diff -up kbd-2.0.4/src/vlock/auth.c.orig kbd-2.0.4/src/vlock/auth.c
--- kbd-2.0.4/src/vlock/auth.c.orig 2016-12-19 16:01:51.000000000 +0100
+++ kbd-2.0.4/src/vlock/auth.c 2023-03-20 09:34:06.010036016 +0100
@@ -140,9 +140,9 @@ int get_password(pam_handle_t *pamh, con
fflush(stdout);
/*
* EOF encountered on read?
- * If not on VT, check stdin.
+ * Check stdin.
*/
- if (is_vt || isatty(STDIN_FILENO)) {
+ if (isatty(STDIN_FILENO)) {
/* Ignore error. */
sleep(SHORT_DELAY);
break;

View File

@ -1,33 +0,0 @@
.TH KBDINFO 1 "June 2011"
.SH NAME
kbdinfo \- obtain information about the status of a console
.SH SYNOPSIS
\fBkbdinfo\fR [\-C \fIDEVICE\fR] getmode [text|graphics]
.LP
\fBkbdinfo\fR [\-C \fIDEVICE\fR] gkbmode [raw|xlate|mediumraw|unicode]
.LP
\fBkbdinfo\fR [\-C \fIDEVICE\fR] gkbmeta [metabit|escprefix]
.LP
\fBkbdinfo\fR [\-C \fIDEVICE\fR] gkbled [scrolllock|numlock|capslock]
.SH DESCRIPTION
.B kbdinfo
is an interface to KDGETMODE, GKBMODE, GKBMETA and GKBLED ioctls. Its
primary use case is to query the status of the given
.I CONSOLE
(or the currently active one, if no \-C option is present) from a shell
script.
.LP
If the final value argument is not specified,
.B kbdinfo
will print the result of the desired ioctl to the standard output.
Otherwise, the given value is compared to the actual result, and the
utility will exit with a status code of 0 for a match, 1 otherwise. No
text is printed for this style of invocation.
.SH "SEE ALSO"
.BR kbd_mode (1)
.SH AUTHOR
kbdinfo is Copyright \(co 2011 Alexey Gladkov
<gladkov.alexey@gmail.com>.
.LP
This manual page was written by Michael Schutte <michi@debian.org> for
the Debian GNU/Linux system (but may be used by others).

108
cz-map.patch Normal file
View File

@ -0,0 +1,108 @@
--- cz.map.new 2023-02-21 11:13:02.527658350 +0100
+++ cz.map.old 2023-02-21 11:14:28.586714959 +0100
@@ -1,17 +1,17 @@
keymaps 0-127
keycode 1 = Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape
keycode 2 = U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam
-keycode 3 = +U+011b U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul
+keycode 3 = +U+011b U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul
keycode 4 = +U+0161 U+0033 U+0023 dead_circumflex +U+0161 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0161 U+0033 U+0023 dead_circumflex +U+0161 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0161 U+0033 U+0023 dead_circumflex +U+0161 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0161 U+0033 U+0023 dead_circumflex +U+0161 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0160 U+0033 U+0023 dead_circumflex +U+0160 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0160 U+0033 U+0023 dead_circumflex +U+0160 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0160 U+0033 U+0023 dead_circumflex +U+0160 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0160 U+0033 U+0023 dead_circumflex +U+0160 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign
-keycode 5 = +U+010d U+0034 U+0024 dead_kbreve +U+010d U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_kbreve +U+010d U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_kbreve +U+010d U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_kbreve +U+010d U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_kbreve +U+010c U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_kbreve +U+010c U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_kbreve +U+010c U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_kbreve +U+010c U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar
-keycode 6 = +U+0159 U+0035 U+0025 dead_abovering +U+0159 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 dead_abovering +U+0159 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 dead_abovering +U+0159 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 dead_abovering +U+0159 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 dead_abovering +U+0158 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 dead_abovering +U+0158 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 dead_abovering +U+0158 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 dead_abovering +U+0158 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent
-keycode 7 = +U+017e U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum
+keycode 5 = +U+010d U+0034 U+0024 dead_breve +U+010d U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_breve +U+010d U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_breve +U+010d U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_breve +U+010d U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_breve +U+010c U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_breve +U+010c U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_breve +U+010c U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_breve +U+010c U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar
+keycode 6 = +U+0159 U+0035 U+0025 U+00b0 +U+0159 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 U+00b0 +U+0159 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 U+00b0 +U+0159 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 U+00b0 +U+0159 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 U+00b0 +U+0158 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 U+00b0 +U+0158 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 U+00b0 +U+0158 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 U+00b0 +U+0158 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent
+keycode 7 = +U+017e U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum
keycode 8 = +U+00fd U+0037 U+0026 dead_grave +U+00fd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00fd U+0037 U+0026 dead_grave +U+00fd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00fd U+0037 U+0026 dead_grave +U+00fd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00fd U+0037 U+0026 dead_grave +U+00fd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00dd U+0037 U+0026 dead_grave +U+00dd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00dd U+0037 U+0026 dead_grave +U+00dd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00dd U+0037 U+0026 dead_grave +U+00dd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00dd U+0037 U+0026 dead_grave +U+00dd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand
-keycode 9 = +U+00e1 U+0038 U+002a dead_abovedot +U+00e1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00e1 U+0038 U+002a dead_abovedot +U+00e1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00e1 U+0038 U+002a dead_abovedot +U+00e1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00e1 U+0038 U+002a dead_abovedot +U+00e1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00c1 U+0038 U+002a dead_abovedot +U+00c1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00c1 U+0038 U+002a dead_abovedot +U+00c1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00c1 U+0038 U+002a dead_abovedot +U+00c1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00c1 U+0038 U+002a dead_abovedot +U+00c1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk
+keycode 9 = +U+00e1 U+0038 U+002a U+002e +U+00e1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00e1 U+0038 U+002a U+002e +U+00e1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00e1 U+0038 U+002a U+002e +U+00e1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00e1 U+0038 U+002a U+002e +U+00e1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00c1 U+0038 U+002a U+002e +U+00c1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00c1 U+0038 U+002a U+002e +U+00c1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00c1 U+0038 U+002a U+002e +U+00c1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00c1 U+0038 U+002a U+002e +U+00c1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose
keycode 10 = +U+00ed U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00ed U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00ed U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00ed U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00cd U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00cd U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00cd U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00cd U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape
-keycode 11 = +U+00e9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright
+keycode 11 = +U+00e9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright
keycode 12 = U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash
-keycode 13 = dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla
+keycode 13 = dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore
keycode 14 = Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace
keycode 15 = Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab
keycode 16 = +U+0071 +U+0051 U+005c +U+03a9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0071 +U+0051 U+005c +U+03a9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0071 +U+0051 U+005c +U+03a9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0071 +U+0051 U+005c +U+03a9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0051 +U+0071 U+005c +U+03c9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0051 +U+0071 U+005c +U+03c9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0051 +U+0071 U+005c +U+03c9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0051 +U+0071 U+005c +U+03c9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash
@@ -34,16 +34,16 @@
keycode 33 = +U+0066 +U+0046 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0066 +U+0046 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0066 +U+0046 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0066 +U+0046 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0046 +U+0066 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0046 +U+0066 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0046 +U+0066 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0046 +U+0066 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape
keycode 34 = +U+0067 +U+0047 U+005d +U+014a Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0067 +U+0047 U+005d +U+014a Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0067 +U+0047 U+005d +U+014a Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0067 +U+0047 U+005d +U+014a Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0047 +U+0067 U+005d +U+014b Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0047 +U+0067 U+005d +U+014b Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0047 +U+0067 U+005d +U+014b Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0047 +U+0067 U+005d +U+014b Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright
keycode 35 = +U+0068 +U+0048 U+0060 +U+0126 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0068 +U+0048 U+0060 +U+0126 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0068 +U+0048 U+0060 +U+0126 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0068 +U+0048 U+0060 +U+0126 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0048 +U+0068 U+0060 +U+0127 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0048 +U+0068 U+0060 +U+0127 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0048 +U+0068 U+0060 +U+0127 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0048 +U+0068 U+0060 +U+0127 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul
-keycode 36 = +U+006a +U+004a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed
+keycode 36 = +U+006a +U+004a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed
keycode 37 = +U+006b +U+004b +U+0142 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+006b +U+004b +U+0142 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+006b +U+004b +U+0142 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+006b +U+004b +U+0142 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+004b +U+006b +U+0141 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+004b +U+006b +U+0141 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+004b +U+006b +U+0141 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+004b +U+006b +U+0141 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k
keycode 38 = +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l
-keycode 39 = +U+016f U+0022 U+0024 dead_kdoubleacute +U+016f U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_kdoubleacute +U+016f U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_kdoubleacute +U+016f U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_kdoubleacute +U+016f U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_kdoubleacute +U+016e U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_kdoubleacute +U+016e U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_kdoubleacute +U+016e U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_kdoubleacute +U+016e U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar
+keycode 39 = +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar
keycode 40 = U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe
-keycode 41 = U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum
+keycode 41 = U+003b dead_grave U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum
keycode 42 = Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift
keycode 43 = dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash
-keycode 44 = +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y
-keycode 45 = +U+0078 +U+0058 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x
+keycode 44 = +U+0079 +U+0059 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y
+keycode 45 = +U+0078 +U+0058 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x
keycode 46 = +U+0063 +U+0043 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0063 +U+0043 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0063 +U+0043 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0063 +U+0043 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0043 +U+0063 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0043 +U+0063 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0043 +U+0063 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0043 +U+0063 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c
keycode 47 = +U+0076 +U+0056 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0076 +U+0056 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0076 +U+0056 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0076 +U+0056 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0056 +U+0076 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0056 +U+0076 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0056 +U+0076 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0056 +U+0076 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul
keycode 48 = +U+0062 +U+0042 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0062 +U+0042 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0062 +U+0042 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0062 +U+0042 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0042 +U+0062 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0042 +U+0062 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0042 +U+0062 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0042 +U+0062 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape
@@ -51,7 +51,7 @@
keycode 50 = +U+006d +U+004d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+006d +U+004d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+006d +U+004d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+006d +U+004d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+004d +U+006d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+004d +U+006d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+004d +U+006d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+004d +U+006d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum
keycode 51 = U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete
keycode 52 = U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose
-keycode 53 = U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore
+keycode 53 = U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose
keycode 54 = Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift
keycode 55 = KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply
keycode 56 = Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt
@@ -108,3 +108,49 @@
keycode 127 = VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 121 = KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period
strings as usual
+# dead_grave
+compose '`' 'u' to U+016F
+compose '`' 'U' to U+016E
+compose '`' 'z' to U+00B0
+compose '`' 'Z' to U+00B0
+# dead_acute
+compose '\'' 'a' to U+00E1
+compose '\'' 'A' to U+00C1
+compose '\'' 'e' to U+00E9
+compose '\'' 'E' to U+00C9
+compose '\'' 'i' to U+00ED
+compose '\'' 'I' to U+00CD
+compose '\'' 'o' to U+00F3
+compose '\'' 'O' to U+00D3
+compose '\'' 'u' to U+00FA
+compose '\'' 'U' to U+00DA
+compose '\'' 'y' to U+00FD
+compose '\'' 'Y' to U+00DD
+# dead_caron
+compose '^' 'u' to U+016F
+compose '^' 'U' to U+016E
+compose '^' 'c' to U+010D
+compose '^' 'C' to U+010C
+compose '^' 'd' to U+010F
+compose '^' 'D' to U+010E
+compose '^' 'e' to U+011B
+compose '^' 'E' to U+011A
+compose '^' 'n' to U+0148
+compose '^' 'N' to U+0147
+compose '^' 'r' to U+0159
+compose '^' 'R' to U+0158
+compose '^' 's' to U+0161
+compose '^' 'S' to U+0160
+compose '^' 't' to U+0165
+compose '^' 'T' to U+0164
+compose '^' 'z' to U+017E
+compose '^' 'Z' to U+017D
+# dead_diaeresis
+compose '"' 'a' to U+00E4
+compose '"' 'A' to U+00C4
+compose '"' 'e' to U+00EB
+compose '"' 'E' to U+00CB
+compose '"' 'o' to U+00F6
+compose '"' 'O' to U+00D6
+compose '"' 'u' to U+00FC
+compose '"' 'U' to U+00DC

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

View File

@ -1,6 +1,6 @@
diff -up kbd-2.0.4/docs/man/man1/showkey.1.orig kbd-2.0.4/docs/man/man1/showkey.1 diff -up kbd-2.3.0/docs/man/man1/showkey.1.orig kbd-2.3.0/docs/man/man1/showkey.1
--- kbd-2.0.4/docs/man/man1/showkey.1.orig 2016-10-31 16:56:02.000000000 +0100 --- kbd-2.3.0/docs/man/man1/showkey.1.orig 2020-07-08 19:25:47.000000000 +0200
+++ kbd-2.0.4/docs/man/man1/showkey.1 2017-01-11 10:45:03.763312393 +0100 +++ kbd-2.3.0/docs/man/man1/showkey.1 2020-07-16 08:56:15.970254183 +0200
@@ -84,6 +84,19 @@ corresponds to what the keyboard hardwar @@ -84,6 +84,19 @@ corresponds to what the keyboard hardwar
to know the scan codes sent by various keys it is better to boot a to know the scan codes sent by various keys it is better to boot a
2.4 kernel. Since 2.6.9 there also is the boot option atkbd.softraw=0 2.4 kernel. Since 2.6.9 there also is the boot option atkbd.softraw=0
@ -21,13 +21,13 @@ diff -up kbd-2.0.4/docs/man/man1/showkey.1.orig kbd-2.0.4/docs/man/man1/showkey.
.SH "SEE ALSO" .SH "SEE ALSO"
.BR loadkeys (1), .BR loadkeys (1),
.BR dumpkeys (1), .BR dumpkeys (1),
diff -up kbd-2.0.4/docs/man/man8/setkeycodes.8.orig kbd-2.0.4/docs/man/man8/setkeycodes.8 diff -up kbd-2.3.0/docs/man/man8/setkeycodes.8.orig kbd-2.3.0/docs/man/man8/setkeycodes.8
--- kbd-2.0.4/docs/man/man8/setkeycodes.8.orig 2016-10-31 16:56:02.000000000 +0100 --- kbd-2.3.0/docs/man/man8/setkeycodes.8.orig 2020-07-08 19:35:35.000000000 +0200
+++ kbd-2.0.4/docs/man/man8/setkeycodes.8 2017-01-11 10:45:03.763312393 +0100 +++ kbd-2.3.0/docs/man/man8/setkeycodes.8 2020-07-16 08:57:52.293900997 +0200
@@ -38,6 +38,10 @@ to showkey(1), the command @@ -42,6 +42,10 @@ the command
.RE will assign the keycode 112 to it, and then
will assign the keycode 112 to it, and then loadkeys(1) can be used .BR loadkeys (1)
to define the function of this key. can be used to define the function of this key.
+ +
+USB keyboards have standardized keycodes and +USB keyboards have standardized keycodes and
+.B setkeycodes +.B setkeycodes
@ -35,7 +35,7 @@ diff -up kbd-2.0.4/docs/man/man8/setkeycodes.8.orig kbd-2.0.4/docs/man/man8/setk
.LP .LP
Some older kernels might hardwire a low scancode range to the Some older kernels might hardwire a low scancode range to the
equivalent keycodes; setkeycodes will fail when you try to remap equivalent keycodes; setkeycodes will fail when you try to remap
@@ -56,6 +60,14 @@ None. @@ -60,6 +64,14 @@ None.
.SH BUGS .SH BUGS
The keycodes of X have nothing to do with those of Linux. The keycodes of X have nothing to do with those of Linux.
Unusual keys can be made visible under Linux, but not under X. Unusual keys can be made visible under Linux, but not under X.
@ -48,5 +48,5 @@ diff -up kbd-2.0.4/docs/man/man8/setkeycodes.8.orig kbd-2.0.4/docs/man/man8/setk
+cannot change the mapping of other devices than the "first" one. +cannot change the mapping of other devices than the "first" one.
+ +
.SH "SEE ALSO" .SH "SEE ALSO"
.I "dumpkeys (1), loadkeys (1), showkey (1), getkeycodes (8)" .BR dumpkeys (1),
.BR loadkeys (1),

View File

@ -1,7 +1,7 @@
diff -up kbd-2.0.4/docs/man/man8/kbdrate.8.orig kbd-2.0.4/docs/man/man8/kbdrate.8 diff -up kbd-2.1.0/docs/man/man8/kbdrate.8.orig kbd-2.1.0/docs/man/man8/kbdrate.8
--- kbd-2.0.4/docs/man/man8/kbdrate.8.orig 2017-01-11 11:04:50.114831348 +0100 --- kbd-2.1.0/docs/man/man8/kbdrate.8.orig 2019-06-21 10:08:17.000000000 +0200
+++ kbd-2.0.4/docs/man/man8/kbdrate.8 2017-01-11 11:05:35.619851252 +0100 +++ kbd-2.1.0/docs/man/man8/kbdrate.8 2019-07-17 10:36:19.876499648 +0200
@@ -22,7 +22,7 @@ Using @@ -19,7 +19,7 @@ Using
without any options will reset the repeat rate to 10.9 characters per second (cps) without any options will reset the repeat rate to 10.9 characters per second (cps)
and the delay to 250 milliseconds (ms) for Intel- and M68K-based systems. and the delay to 250 milliseconds (ms) for Intel- and M68K-based systems.
These are the IBM defaults. On SPARC-based systems it will reset the repeat rate These are the IBM defaults. On SPARC-based systems it will reset the repeat rate
@ -10,10 +10,10 @@ diff -up kbd-2.0.4/docs/man/man8/kbdrate.8.orig kbd-2.0.4/docs/man/man8/kbdrate.
.SH OPTIONS .SH OPTIONS
.TP .TP
diff -up kbd-2.0.4/src/kbdrate.c.orig kbd-2.0.4/src/kbdrate.c diff -up kbd-2.1.0/src/kbdrate.c.orig kbd-2.1.0/src/kbdrate.c
--- kbd-2.0.4/src/kbdrate.c.orig 2017-01-11 11:05:10.226840148 +0100 --- kbd-2.1.0/src/kbdrate.c.orig 2019-07-02 17:44:57.000000000 +0200
+++ kbd-2.0.4/src/kbdrate.c 2017-01-11 11:05:56.832860537 +0100 +++ kbd-2.1.0/src/kbdrate.c 2019-07-17 11:07:04.732486323 +0200
@@ -111,9 +111,12 @@ static int valid_delays[] = { 250, 500, @@ -114,9 +114,12 @@ static int print_only = 0;
static int static int
KDKBDREP_ioctl_ok(double rate, int delay, int silent) KDKBDREP_ioctl_ok(double rate, int delay, int silent)
{ {
@ -26,8 +26,8 @@ diff -up kbd-2.0.4/src/kbdrate.c.orig kbd-2.0.4/src/kbdrate.c
* Since 2.4.9 also on i386. * Since 2.4.9 also on i386.
*/ */
struct my_kbd_repeat kbdrep_s; struct my_kbd_repeat kbdrep_s;
@@ -176,6 +179,9 @@ KDKBDREP_ioctl_ok(double rate, int delay @@ -181,6 +184,9 @@ KDKBDREP_ioctl_ok(double rate, int delay
rate, kbdrep_s.delay); }
return 1; /* success! */ return 1; /* success! */
+#else /* no KDKBDREP or __sparc__ */ +#else /* no KDKBDREP or __sparc__ */
@ -35,31 +35,28 @@ diff -up kbd-2.0.4/src/kbdrate.c.orig kbd-2.0.4/src/kbdrate.c
+#endif /* KDKBDREP */ +#endif /* KDKBDREP */
} }
#ifndef KIOCSRATE #ifdef KIOCSRATE
@@ -226,7 +232,7 @@ sigalrmhandler(int sig __attribute__((un @@ -251,6 +257,9 @@ ioport_set(double rate, int delay, int s
int main(int argc, char **argv)
{ /* https://wiki.osdev.org/PS/2_Keyboard */
#ifdef __sparc__
- double rate = 5.0; /* Default rate */
+ double rate = 20.0; /* Default rate */
int delay = 200; /* Default delay */
#else
double rate = 10.9; /* Default rate */
@@ -275,8 +281,9 @@ int main(int argc, char **argv)
if (KIOCSRATE_ioctl_ok(rate, delay, silent)) /* sparc? */
return 0;
- /* The ioport way */
+ /* The ioport way - will crash on sparc */ + /* The ioport way - will crash on sparc */
+
+#ifndef __sparc__ +#ifndef __sparc__
for (i = 0; i < RATE_COUNT; i++) for (i = 0; i < (int) RATE_COUNT; i++)
if (rate * 10 >= valid_rates[i]) { if (rate * 10 >= valid_rates[i]) {
value &= 0x60; value &= 0x60;
@@ -333,5 +340,6 @@ int main(int argc, char **argv) @@ -304,11 +313,12 @@ ioport_set(double rate, int delay, int s
valid_rates[value & 0x1f] / 10.0, valid_rates[value & 0x1f] / 10.0,
valid_delays[(value & 0x60) >> 5]); valid_delays[(value & 0x60) >> 5]);
+#endif +#endif
return EXIT_SUCCESS; return 1;
} }
#ifdef __sparc__
-double rate = 5.0; /* Default rate */
+double rate = 20.0; /* Default rate */
int delay = 200; /* Default delay */
#else
double rate = 10.9; /* Default rate */

View File

@ -0,0 +1,24 @@
diff -up kbd-2.6.2/src/loadkeys.c.orig kbd-2.6.2/src/loadkeys.c
--- kbd-2.6.2/src/loadkeys.c.orig 2023-08-22 10:02:52.261785310 +0200
+++ kbd-2.6.2/src/loadkeys.c 2023-08-22 10:03:44.351889761 +0200
@@ -27,6 +27,8 @@
static const char *const dirpath1[] = {
DATADIR "/" KEYMAPDIR "/**",
+ DATADIR "/" XKBKEYMAPDIR "/",
+ DATADIR "/" LEGACYKEYMAPDIR "/**",
KERNDIR "/",
NULL
};
diff -up kbd-2.6.2/src/paths.h.orig kbd-2.6.2/src/paths.h
--- kbd-2.6.2/src/paths.h.orig 2023-08-22 10:04:03.021927193 +0200
+++ kbd-2.6.2/src/paths.h 2023-08-22 10:04:35.740992805 +0200
@@ -5,6 +5,8 @@
* The following five subdirectories are defined:
*/
#define KEYMAPDIR "keymaps"
+#define XKBKEYMAPDIR "keymaps/xkb"
+#define LEGACYKEYMAPDIR "keymaps/legacy"
#define UNIMAPDIR "unimaps"
#define TRANSDIR "consoletrans"
#define VIDEOMODEDIR "videomodes"

View File

@ -0,0 +1,49 @@
diff -up kbd-2.6.1/src/libkfont/psffontop.c.orig kbd-2.6.1/src/libkfont/psffontop.c
--- kbd-2.6.1/src/libkfont/psffontop.c.orig 2023-06-23 10:29:44.000000000 +0200
+++ kbd-2.6.1/src/libkfont/psffontop.c 2023-06-30 14:06:06.363944776 +0200
@@ -236,6 +236,7 @@ kfont_read_psffont(struct kfont_context
if (psfhdr->mode > PSF1_MAXMODE) {
KFONT_ERR(ctx, _("Unsupported psf file mode (%d)"), psfhdr->mode);
+ free(psfhdr);
return -EX_DATAERR;
}
fontlen = ((psfhdr->mode & PSF1_MODE512) ? 512 : 256);
@@ -253,6 +254,7 @@ kfont_read_psffont(struct kfont_context
if (psfhdr.version > PSF2_MAXVERSION) {
KFONT_ERR(ctx, _("Unsupported psf version (%d)"), psfhdr.version);
+ free(inputbuf);
return -EX_DATAERR;
}
fontlen = assemble_uint32((unsigned char *)&psfhdr.length);
@@ -263,16 +265,20 @@ kfont_read_psffont(struct kfont_context
fontwidth = assemble_uint32((unsigned char *)&psfhdr.width);
fontheight= assemble_uint32((unsigned char *)&psfhdr.height);
utf8 = 1;
- } else
+ } else {
+ free(inputbuf);
return -EX_DATAERR; /* not psf */
+ }
/* tests required - we divide by these */
if (fontlen == 0) {
KFONT_ERR(ctx, _("zero input font length?"));
+ free(inputbuf);
return -EX_DATAERR;
}
if (charsize == 0) {
KFONT_ERR(ctx, _("zero input character size?"));
+ free(inputbuf);
return -EX_DATAERR;
}
@@ -286,6 +292,7 @@ kfont_read_psffont(struct kfont_context
if (i > inputlth || (!hastable && i != inputlth)) {
KFONT_ERR(ctx, _("Input file: bad input length (%d)"), inputlth);
+ free(inputbuf);
return -EX_DATAERR;
}

View File

@ -0,0 +1,12 @@
diff -up kbd-2.6.4/src/libkfont/setfont.c.orig kbd-2.6.4/src/libkfont/setfont.c
--- kbd-2.6.4/src/libkfont/setfont.c.orig 2023-09-27 11:57:58.000000000 +0200
+++ kbd-2.6.4/src/libkfont/setfont.c 2024-07-29 09:45:11.476820762 +0200
@@ -280,7 +280,7 @@ kfont_load_fonts(struct kfont_context *c
unsigned char *inbuf, *fontbuf, *bigfontbuf;
unsigned int inputlth, fontbuflth, fontsize, height, width;
unsigned int bigfontbuflth, bigfontsize, bigheight, bigwidth;
- unsigned char *ptr;
+ unsigned char *ptr = NULL;
struct unicode_list *uclistheads;
struct kbdfile *fp = NULL;
int i;

View File

@ -1,11 +1,15 @@
Name: kbd # {_exec_prefix}/lib/kbd is correct even on x86_64.
Version: 2.0.4 # It is traditionally used for kdb data (console fonts, keymaps, ...).
Release: 11%{?dist} # It is not used for any shared objects/executables.
Summary: Tools for configuring the console (keyboard, virtual terminals, etc.) %global kbd_datadir %{_exec_prefix}/lib/kbd
Group: System Environment/Base Name: kbd
License: GPLv2+ Version: 2.6.4
Release: 6%{?dist}
Summary: Tools for configuring the console (keyboard, virtual terminals, etc.)
License: GPL-2.0-or-later
URL: http://www.kbd-project.org/ URL: http://www.kbd-project.org/
Source0: ftp://ftp.altlinux.org/pub/people/legion/kbd/kbd-%{version}.tar.xz Source0: ftp://ftp.altlinux.org/pub/people/legion/kbd/kbd-%{version}.tar.xz
Source1: kbd-latsun-fonts.tar.bz2 Source1: kbd-latsun-fonts.tar.bz2
Source2: kbd-latarcyrheb-32.tar.bz2 Source2: kbd-latarcyrheb-32.tar.bz2
@ -19,28 +23,28 @@ Patch0: kbd-1.15-keycodes-man.patch
Patch1: kbd-1.15-sparc.patch Patch1: kbd-1.15-sparc.patch
# Patch2: adds default unicode font to unicode_start script # Patch2: adds default unicode font to unicode_start script
Patch2: kbd-1.15-unicode_start.patch Patch2: kbd-1.15-unicode_start.patch
# Patch3: add missing dumpkeys option to man page # Patch3: fixes decimal separator in Swiss German keyboard layout, bz 882529
Patch3: kbd-1.15.3-dumpkeys-man.patch Patch3: kbd-1.15.5-sg-decimal-separator.patch
# Patch4: fixes decimal separator in Swiss German keyboard layout, bz 882529 # Patch4: adds xkb and legacy keymaps subdirs to loadkyes search path, bz 1028207
Patch4: kbd-1.15.5-sg-decimal-separator.patch Patch4: kbd-1.15.5-loadkeys-search-path.patch
# Patch5: adds xkb and legacy keymaps subdirs to loadkyes search path, bz 1028207 # Patch5: don't hardcode font used in unicode_start, take it from vconsole.conf,
Patch5: kbd-1.15.5-loadkeys-search-path.patch
# Patch6: don't hardcode font used in unicode_start, take it from vconsole.conf,
# bz 1101007 # bz 1101007
Patch6: kbd-2.0.2-unicode-start-font.patch Patch5: kbd-2.0.2-unicode-start-font.patch
# Patch7: fixes issues found by static analysis, bz 1602566 # Patch6: fixes issues found by static analysis
Patch7: kbd-2.0.4-covscan-fixes.patch Patch6: kbd-2.4.0-covscan-fixes.patch
# Patch8: fixes vlock when console or terminal is closed abruptly, bz 2178798 # Patch7: initializes variable (SAST)
Patch8: kbd-2.0.4-vlock-stdin-closed-inf-loop.patch Patch7: kbd-2.6.4-initialize-variable.patch
BuildRequires: bison, flex, gettext, pam-devel, check-devel BuildRequires: gcc, bison, flex, gettext, pam-devel, check-devel, automake
BuildRequires: console-setup, xkeyboard-config BuildRequires: console-setup, xkeyboard-config
BuildRequires: make
Requires: %{name}-misc = %{version}-%{release} Requires: %{name}-misc = %{version}-%{release}
# Temporarily require -legacy
Requires: %{name}-legacy = %{version}-%{release} Requires: %{name}-legacy = %{version}-%{release}
# Be sure that system is after UsrMove
Conflicts: filesystem < 3
Provides: vlock = %{version} Provides: vlock = %{version}
Conflicts: vlock <= 1.3 Conflicts: vlock <= 1.3
Obsoletes: vlock Obsoletes: vlock < 1.3-34
%description %description
The %{name} package contains tools for managing a Linux The %{name} package contains tools for managing a Linux
@ -67,15 +71,9 @@ Please note that %{name}-legacy is not helpful without kbd.
%setup -q -a 1 -a 2 %setup -q -a 1 -a 2
cp -fp %{SOURCE3} . cp -fp %{SOURCE3} .
cp -fp %{SOURCE6} . cp -fp %{SOURCE6} .
%patch0 -p1 -b .keycodes-man %autopatch -p1
%patch1 -p1 -b .sparc aclocal
%patch2 -p1 -b .unicode_start autoconf
%patch3 -p1 -b .dumpkeys-man
%patch4 -p1 -b .sg-decimal-separator
%patch5 -p1 -b .loadkeys-search-path
%patch6 -p1 -b .unicode-start-font
%patch7 -p1 -b .covscan-fixes
%patch8 -p1 -b .vlock-stdin-closed-inf-loop
# 7-bit maps are obsolete; so are non-euro maps # 7-bit maps are obsolete; so are non-euro maps
pushd data/keymaps/i386 pushd data/keymaps/i386
@ -88,7 +86,6 @@ cp azerty/fr-latin9.map azerty/fr.map
cp azerty/fr-latin9.map azerty/fr-latin0.map # legacy alias cp azerty/fr-latin9.map azerty/fr-latin0.map # legacy alias
# Rename conflicting keymaps # Rename conflicting keymaps
mv dvorak/no.map dvorak/no-dvorak.map
mv fgGIod/trf.map fgGIod/trf-fgGIod.map mv fgGIod/trf.map fgGIod/trf-fgGIod.map
mv olpc/es.map olpc/es-olpc.map mv olpc/es.map olpc/es-olpc.map
mv olpc/pt.map olpc/pt-olpc.map mv olpc/pt.map olpc/pt-olpc.map
@ -105,79 +102,66 @@ iconv -f iso-8859-1 -t utf-8 < "ChangeLog" > "ChangeLog_"
mv "ChangeLog_" "ChangeLog" mv "ChangeLog_" "ChangeLog"
%build %build
%configure --prefix=%{_prefix} --datadir=/lib/kbd --mandir=%{_mandir} --localedir=%{_datadir}/locale --enable-nls %configure --prefix=%{_prefix} --datadir=%{kbd_datadir} --mandir=%{_mandir} --localedir=%{_datadir}/locale --enable-nls
make %{?_smp_mflags} %make_build
%install %install
make install DESTDIR=$RPM_BUILD_ROOT %make_install
# ro_win.map.gz is useless # ro_win.map.gz is useless
rm -f $RPM_BUILD_ROOT/lib/kbd/keymaps/i386/qwerty/ro_win.map.gz rm -f $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/i386/qwerty/ro_win.map.gz
# Create additional name for Serbian latin keyboard # Create additional name for Serbian latin keyboard
ln -s sr-cy.map.gz $RPM_BUILD_ROOT/lib/kbd/keymaps/i386/qwerty/sr-latin.map.gz ln -s sr-cy.map.gz $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/i386/qwerty/sr-latin.map.gz
# The rhpl keyboard layout table is indexed by kbd layout names, so we need a # The rhpl keyboard layout table is indexed by kbd layout names, so we need a
# Korean keyboard # Korean keyboard
ln -s us.map.gz $RPM_BUILD_ROOT/lib/kbd/keymaps/i386/qwerty/ko.map.gz ln -s us.map.gz $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/i386/qwerty/ko.map.gz
# Move binaries which we use before /usr is mounted from %{_bindir} to /bin. # https://bugzilla.redhat.com/show_bug.cgi?id=2015972
mkdir -p $RPM_BUILD_ROOT/bin # xkb Arabic layout is 'ara', not 'fa', langtable tells us to use 'ara'
for binary in setfont dumpkeys kbd_mode unicode_start unicode_stop loadkeys ; do ln -s fa.map.gz $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/i386/qwerty/ara.map.gz
mv $RPM_BUILD_ROOT%{_bindir}/$binary $RPM_BUILD_ROOT/bin/
done
# Some microoptimization # Some microoptimization
sed -i -e 's,\<kbd_mode\>,/bin/kbd_mode,g;s,\<setfont\>,/bin/setfont,g' \ sed -i -e 's,\<kbd_mode\>,%{_bindir}/kbd_mode,g;s,\<setfont\>,%{_bindir}/setfont,g' \
$RPM_BUILD_ROOT/bin/unicode_start $RPM_BUILD_ROOT%{_bindir}/unicode_start
# Link open to openvt
ln -s openvt $RPM_BUILD_ROOT%{_bindir}/open
ln -s openvt.1.gz $RPM_BUILD_ROOT%{_mandir}/man1/open.1.gz
# install kbdinfo manpage # install kbdinfo manpage
gzip -c %SOURCE5 > $RPM_BUILD_ROOT/%{_mandir}/man1/kbdinfo.1.gz gzip -c %SOURCE5 > $RPM_BUILD_ROOT/%{_mandir}/man1/kbdinfo.1.gz
# Move locale files to correct place
cp -r $RPM_BUILD_ROOT/lib/kbd/locale/ $RPM_BUILD_ROOT%{_datadir}/locale
rm -rf $RPM_BUILD_ROOT/lib/kbd/locale
# Install PAM configuration for vlock # Install PAM configuration for vlock
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pam.d mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pam.d
install -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/vlock install -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/vlock
# Move original keymaps to legacy directory # Move original keymaps to legacy directory
mkdir -p $RPM_BUILD_ROOT/lib/kbd/keymaps/legacy mkdir -p $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/legacy
mv $RPM_BUILD_ROOT/lib/kbd/keymaps/{amiga,atari,i386,include,mac,ppc,sun} $RPM_BUILD_ROOT/lib/kbd/keymaps/legacy mv $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/{amiga,atari,i386,include,mac,ppc,sun} $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/legacy
# Convert X keyboard layouts to console keymaps # Convert X keyboard layouts to console keymaps
mkdir -p $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb mkdir -p $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb
perl xml2lst.pl < /usr/share/X11/xkb/rules/base.xml > layouts-variants.lst perl xml2lst.pl < /usr/share/X11/xkb/rules/base.xml > layouts-variants.lst
while read line; do while read line; do
XKBLAYOUT=`echo "$line" | cut -d " " -f 1` XKBLAYOUT=`echo "$line" | cut -d " " -f 1`
echo "$XKBLAYOUT" >> layouts-list.lst echo "$XKBLAYOUT" >> layouts-list.lst
XKBVARIANT=`echo "$line" | cut -d " " -f 2` XKBVARIANT=`echo "$line" | cut -d " " -f 2`
ckbcomp "$XKBLAYOUT" "$XKBVARIANT" | gzip > $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/"$XKBLAYOUT"-"$XKBVARIANT".map.gz ckbcomp -rules base "$XKBLAYOUT" "$XKBVARIANT" | gzip > $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/"$XKBLAYOUT"-"$XKBVARIANT".map.gz
done < layouts-variants.lst done < layouts-variants.lst
# Convert X keyboard layouts (plain, no variant) # Convert X keyboard layouts (plain, no variant)
cat layouts-list.lst | sort -u >> layouts-list-uniq.lst cat layouts-list.lst | sort -u >> layouts-list-uniq.lst
while read line; do while read line; do
ckbcomp "$line" | gzip > $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/"$line".map.gz ckbcomp -rules base "$line" | gzip > $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/"$line".map.gz
done < layouts-list-uniq.lst done < layouts-list-uniq.lst
# wipe converted layouts which cannot input ASCII (#1031848) # wipe converted layouts which cannot input ASCII (#1031848)
zgrep -L "U+0041" $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/* | xargs rm -f zgrep -L "U+0041" $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/* | xargs rm -f
# Rename the converted default fi (kotoistus) layout (#1117891) # Fix converted cz layout - add compose rules, if exists
gunzip $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/fi.map.gz if [ -f "$RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/cz.map.gz" ]; then
mv $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/fi.map $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/fi-kotoistus.map gunzip $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/cz.map.gz
gzip $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/fi-kotoistus.map patch $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/cz.map < %{SOURCE6}
gzip $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/cz.map
# Fix converted cz layout - add compose rules fi
gunzip $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/cz.map.gz
patch $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/cz.map < %{SOURCE6}
gzip $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/cz.map
%find_lang %{name} %find_lang %{name}
@ -187,41 +171,184 @@ make check
%endif %endif
%files -f %{name}.lang %files -f %{name}.lang
%doc ChangeLog AUTHORS README COPYING docs/doc/kbd.FAQ*.html docs/doc/font-formats/*.html docs/doc/utf/utf* docs/doc/dvorak/* %license COPYING
/bin/* %doc ChangeLog AUTHORS README docs/doc/kbd.FAQ*.html docs/doc/font-formats/*.html docs/doc/utf/utf* docs/doc/dvorak/*
%{_bindir}/* %{_bindir}/*
%{_mandir}/*/* %{_mandir}/*/*
%config(noreplace) %{_sysconfdir}/pam.d/vlock %config(noreplace) %{_sysconfdir}/pam.d/vlock
%files misc %files misc
/lib/kbd %{kbd_datadir}
%exclude /lib/kbd/keymaps/legacy %exclude %{kbd_datadir}/keymaps/legacy
%files legacy %files legacy
/lib/kbd/keymaps/legacy %{kbd_datadir}/keymaps/legacy
%changelog %changelog
* Tue Apr 18 2023 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.0.4-11 * Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 2.6.4-6
- Fix vlock when console or terminal is closed abruptly - Bump release for October 2024 mass rebuild:
Resolves: #2178798 Resolves: RHEL-64018
* Wed Jun 17 2020 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.0.4-10 * Mon Jul 29 2024 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.6.4-5
- Add %%check, rebuild - Initialize variable to avoid possible uninitialized use
Resolves: RHEL-40728
* Tue Jun 16 2020 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.0.4-9 * Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 2.6.4-4
- Rebuild - Bump release for June 2024 mass rebuild
Resolves: #1844967
* Mon Dec 10 2018 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.0.4-8 * Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.4-3
- Fix issues found by static analysis - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
Resoloves: #1602566
* Tue Jul 31 2018 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.0.4-7 * Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.4-2
- Drop initscripts Require - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
Resolves: #1610277
* Tue Jul 24 2018 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.0.4-6 * Fri Dec 15 2023 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.6.4-1
- Rebuilt (reuploaded upstream tarball, the checksum differed) - Update to kbd-2.6.4
Resolves: #2254010
* Wed Sep 20 2023 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.6.3-1
- Update to kbd-2.6.3
Resolves: #2239620
* Thu Aug 24 2023 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.6.2-1
- Update to kbd-2.6.2
Resolves: #2232126
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Mon Jul 03 2023 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.6.1-1
- Update to kbd-2.6.1
Resolves: #2218174
* Tue Jun 13 2023 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.6.0-1
- Update to kbd-2.6.0
Resolves: #2214279
* Fri May 26 2023 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.5.1-6
- SPDX migration
* Tue Feb 21 2023 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.5.1-5
- Update patch adding compose rules for converted cz layout
Resolves: #2171583
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Sep 21 2022 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.5.1-3
- Require kbd-legacy in main kbd package again
Resolves: #2127513
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Tue Jun 21 2022 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.5.1-1
- Update to kbd-2.5.1
Resolves: #2097840
* Wed Jun 08 2022 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.5.0-1
- Update to kbd-2.5.0
Resolves: #2092957
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.0-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Oct 21 2021 Adam Williamson <awilliam@redhat.com> - 2.4.0-8
- Symlink fa.map.gz to ara.map.gz so Arabic console layout works (#2015972)
- Drop one mapping from fa.map that causes it to fail to load
* Mon Sep 13 2021 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.4.0-7
- Use default Finnish xkb-converted layout
Resolves: #2001787
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Thu May 20 2021 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.4.0-5
- Fix setfont exit code
* Tue Apr 27 2021 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.4.0-4
- Remove one part of the static analysis fix that actually breaks the package
Resolves: #1953782
* Thu Apr 22 2021 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.4.0-3
- Fix issues detected by static analysis
- Fix layout->keymap conversion broken by change in xkeyboard-config
(patch by Peter Hutterer)
Related: #1950406
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Dec 16 2020 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.4.0-1
- Update to kbd-2.4.0
Resolves: #1908123
* Thu Oct 29 2020 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.3.0-4
- Don't require kbd-legacy in main kbd package anymore
Resolves: #1891811
* Wed Sep 23 2020 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.3.0-3
- Exclude test library instead of removing it to fix --nocheck builds
Resolves: #1881515
* Fri Aug 28 2020 Adam Williamson <awilliam@redhat.com> - 2.3.0-2
- Rebuild with grep #1872913 fix to correctly drop non-ASCII layouts
Resolves: #1872922
* Wed Jul 29 2020 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.3.0-1
- Make changes in converted layouts conditionally
- Use make macros, patch by Tom Stellard <tstellar@redhat.com>
(https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro)
- Update to kbd-2.3.0
Resolves: #1855867
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Mar 17 2020 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.2.0-3
- Use upstream test suite in %%check
* Thu Mar 05 2020 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.2.0-2
- Don't move binaries to /bin, shouldn't be needed after UsrMove
- Move kbd data (console fonts, keymaps, ...) to /usr
Resolves: #1809257
* Mon Feb 10 2020 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.2.0-1
- Update to kbd-2.2.0
Resolves: #1742036
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.4-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.4-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.4-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Wed Nov 28 2018 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.0.4-12
- Apply only tty non-breaking fixes from -10
* Tue Nov 13 2018 Adam Williamson <awilliam@redhat.com> - 2.0.4-11
- Drop fixes from -10 for now as they are breaking ttys (#1649531)
* Mon Nov 12 2018 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.0.4-10
- Fix issues detected by static analysis
* Mon Aug 13 2018 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.0.4-9
- Remove the link from open to openvt
(related discussion and rationale in Debian bug tracker, bug #732796)
* Mon Jul 30 2018 Peter Robinson <pbrobinson@fedoraproject.org> 2.0.4-8
- Drop initscripts Require, use %%license
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.4-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Wed Feb 21 2018 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.0.4-6
- Add BuildRequires gcc
- Escape macro in comment, remove Group tag
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.4-5 * Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

16
plans/tier1.fmf Normal file
View File

@ -0,0 +1,16 @@
---
summary: Tier1 plan for kbd
discover:
how: fmf
url: https://pkgs.devel.redhat.com/git/tests/kbd
ref: master
filter: tier:1
execute:
how: tmt
adjust:
enabled: false
when: distro == centos-stream or distro == fedora

4
sources Normal file
View File

@ -0,0 +1,4 @@
SHA512 (kbd-latsun-fonts.tar.bz2) = b98da5df85017ef1bd297eb2255046d54dd805c84356db7533f24e49fb78c8e3999901a45a49cdf6a74c0002bba2e0aa8327469d78dd38b6e747103972c30584
SHA512 (kbd-latarcyrheb-32.tar.bz2) = 1870a708e16cf16f8343f02f7e97940e8404655078f92709a0b8a334be772faa99b4dbaca37e8d8c5b16d0d4d811fe6b102e4f76ae821148eb33075613dc95b8
SHA512 (kbdinfo.1) = 8696d55f6c15f0ee2c2936eca6180b18100a87b11f0efe809a9531bb1228c67cd096cbc8fa25d9ee496daab28892ee5f320cc4bc9c9d816ff666bb4f80271c99
SHA512 (kbd-2.6.4.tar.xz) = a4149cb0f85fd79b333a6c137d70896a30ebceb1cf9d4b5eef3abb2e1866d83b46cee651e4f3e512bf7e0ccd232d955c14f693e57020a3626e4943c4695fc8ab