Compare commits

...
Sign in to create a new pull request.

51 commits

Author SHA1 Message Date
Fedora Release Engineering
6bad9f1fea Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild 2026-07-16 04:31:32 +00:00
Vitezslav Crhonek
990654f736 Update to kbd-2.10.0
Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2026-06-10 06:24:35 +02:00
Vitezslav Crhonek
92a7d10456 Fix setfont segmentation fault
When setfont is invoked with an option that needs
an argument and that argument is missing.

Resolves: #2447892

Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2026-03-24 08:51:35 +01:00
Fedora Release Engineering
b9cf7908d1 Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild 2026-01-16 17:22:56 +00:00
Vitezslav Crhonek
006901a271 Update to kbd-2.9.0
Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2025-09-22 14:42:19 +02:00
Fedora Release Engineering
5455dcf44b Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-24 18:14:05 +00:00
Vitezslav Crhonek
36dccdf64f Fix kfont_load_font(): setfont killed by SIGSEGV
The issue was caused by accessing previously free'd
memory and introduced by covscan fix. Do not free
inputbuf variable in kfont_read_psffont().

Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2025-07-15 10:13:51 +02:00
Vitezslav Crhonek
495467a9c1 Update to kbd-2.8.0
Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2025-06-09 09:09:55 +02:00
Adam Williamson
88612fd7df Add Georgian layout and font (from upstream PR #127)
These are added as source files rather than a patch because the
patch would be binary and autosetup won't apply those, but we're
just adding the same two files the upstream PR adds. This adds a
switched keyboard layout and a console font for Georgian. Thanks
to Temuri Doghonadze and Gia Shervashidze for these.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2025-01-27 13:39:52 -08:00
Fedora Release Engineering
e4adfcb5b6 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-17 08:19:02 +00:00
Adam Williamson
04bd752f9b Drop xkb-converted Georgian layout (#2336875)
In https://bugzilla.redhat.com/show_bug.cgi?id=2336875 and
https://src.fedoraproject.org/rpms/kbd/pull-request/2#comment-239318
we found out that the Georgian xkb-converted layout (ge.map.gz) is
not really ASCII-capable. It has mappings for ASCII characters,
but the ones for lower-case Latin letters are not reachable
(they rely on modifier keys that are not mapped). Let's just
wipe it, rather than trying to write a much cleverer ASCII check.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2025-01-10 17:17:26 -08:00
Vitezslav Crhonek
19eef3310f Update to kbd-2.7.1
Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2025-01-02 13:22:55 +01:00
Vitezslav Crhonek
2fd209b56b Update to kbd-2.7
Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2024-12-17 07:37:29 +01:00
Vitezslav Crhonek
0b01da5bee Add vlock option to issue prompt before invokation of pam stack 2024-09-10 13:26:41 +02:00
Fedora Release Engineering
0f3e690579 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-18 11:22:59 +00:00
Fedora Release Engineering
be64e0bccc Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-24 23:40:55 +00:00
Fedora Release Engineering
2a39d142ff Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-21 00:00:42 +00:00
Vitezslav Crhonek
0c0055eae4 Update to kbd-2.6.4
Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2023-12-15 09:10:16 +01:00
Vitezslav Crhonek
cdf66d478d Update to kbd-2.6.3
Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2023-09-20 16:34:15 +02:00
Vitezslav Crhonek
1392cb9cd0 Update to kbd-2.6.2, remove unused patch, version obsoletes
Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2023-08-24 11:30:12 +02:00
Fedora Release Engineering
44dc89c083 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-20 08:26:16 +00:00
Vitezslav Crhonek
7b60b7f694 Update to kbd-2.6.1
Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2023-07-03 08:59:09 +02:00
Vitezslav Crhonek
be8cf27e5d Update to kbd-2.6.0
Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2023-06-13 09:40:19 +02:00
Vitezslav Crhonek
5bcce9c3b3 SPDX migration, replace deprecated patchN
Signed-off-by: Vitezslav Crhonek <vcrhonek@redhat.com>
2023-05-26 12:18:25 +02:00
Vitezslav Crhonek
91d7302f5b Update patch adding compose rules for converted cz layout, fixes FTBFS 2023-02-21 11:54:04 +01:00
Fedora Release Engineering
952ea5e1e0 Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-19 14:07:42 +00:00
Vitezslav Crhonek
2c037184b4 Require kbd-legacy in main kbd package again 2022-09-21 10:37:26 +02:00
Fedora Release Engineering
3bf51becf7 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-21 15:38:03 +00:00
Vitezslav Crhonek
45b6b9f2cf Update to kbd-2.5.1 2022-06-21 10:36:03 +02:00
Vitezslav Crhonek
bb8392f7ea Update to kbd-2.5.0 2022-06-08 10:16:20 +02:00
Fedora Release Engineering
f075c2adb3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-20 14:11:28 +00:00
Adam Williamson
f8cf2198ea Add compat name for Arabic keymap, remove problem char (#2015972) 2021-10-21 14:31:24 -07:00
Vitezslav Crhonek
918f776f5d Use default Finnish xkb-converted layout 2021-09-13 14:40:32 +02:00
Fedora Release Engineering
472ff21333 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-22 09:28:18 +00:00
Vitezslav Crhonek
bd4172466e Fix setfont exit code 2021-05-20 09:32:00 +02:00
Vitezslav Crhonek
ab3545efb9 Remove one part of the static analysis fix that actually breaks the package 2021-04-27 10:14:12 +02:00
Vitezslav Crhonek
94d128363a Fix issues detected by static analysis, fix layout->keymap conversion 2021-04-22 12:48:49 +02:00
Fedora Release Engineering
a1aed0e27a - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-26 15:14:06 +00:00
Tom Stellard
e597e2b25c Add BuildRequires: make
https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot
2021-01-04 22:32:37 +00:00
Vitezslav Crhonek
9193782db0 Update to kbd-2.4.0 2020-12-16 11:15:40 +01:00
Vitezslav Crhonek
de77dbc7a3 Don't require kbd-legacy in main kbd package anymore 2020-10-29 11:42:20 +01:00
Vitezslav Crhonek
02a2eb26c9 Fix kbd fails to build with --nocheck 2020-09-23 08:11:51 +02:00
Adam Williamson
bd9efc38c3 Rebuild with grep #1872913 fix to correctly drop non-ASCII layouts 2020-08-28 11:26:46 -07:00
Vitezslav Crhonek
5b68f0b6fd Update to kbd-2.3.0, use make macros, minor spec file changes 2020-07-29 11:56:19 +02:00
Fedora Release Engineering
cba2479a4c - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-28 02:46:22 +00:00
Vitezslav Crhonek
2a4b9b3481 skip check on s390x, one test fails, investigate later 2020-03-17 11:51:20 +01:00
Vitezslav Crhonek
2c41c60b31 Use upstream test suite in %%check 2020-03-17 10:50:40 +01:00
Vitezslav Crhonek
2b80b1d7ba Move binaries and kbd data to /usr 2020-03-05 13:46:53 +01:00
Vitezslav Crhonek
70af662a75 Update to kbd-2.2.0 2020-02-10 11:24:21 +01:00
Fedora Release Engineering
eff44b086d - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-29 06:42:08 +00:00
Fedora Release Engineering
6260d1e570 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-25 11:06:46 +00:00
12 changed files with 451 additions and 267 deletions

15
.gitignore vendored
View file

@ -1,4 +1,3 @@
kbd-1.12.tar.bz2
kbd-latsun-fonts.tar.bz2
sun12x22-fixed.psfu
kbd-sun12x22-fixed.tar.bz2
@ -7,18 +6,8 @@ ro.tar.bz2
kbd-latarcyrheb-16-fixed.tar.bz2
ro_maps.tar.bz2
terminus.tar.bz2
kbd-1.13wip.tar.gz
kbd-1.15.tar.gz
/kbd-1.15.2.tar.bz2
/kbd-1.15.2.tar.bz2.sign
/fr-dvorak.tar.bz2
/kbd-1.15.3.tar.bz2
/kbd-1.15.3.tar.bz2.sign
/kbd-latarcyrheb-32.tar.bz2
/kbd-1.15.3.tar.gz
/kbd-1.15.5.tar.gz
/kbd-2.0.1.tar.gz
/kbdinfo.1
/kbd-2.0.2.tar.xz
/kbd-2.0.3.tar.xz
/kbd-2.0.4.tar.xz
/kbd-2.9.0.tar.xz
/kbd-2.10.0.tar.xz

View file

@ -1,14 +1,61 @@
--- 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 @@
--- 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_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 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 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_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 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

View file

@ -1,11 +1,10 @@
diff -up kbd-2.0.4/docs/man/man1/showkey.1.orig kbd-2.0.4/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.0.4/docs/man/man1/showkey.1 2017-01-11 10:45:03.763312393 +0100
@@ -84,6 +84,19 @@ corresponds to what the keyboard hardwar
diff -up kbd-2.7-rc1/docs/man/man1/showkey.1.orig kbd-2.7-rc1/docs/man/man1/showkey.1
--- kbd-2.7-rc1/docs/man/man1/showkey.1.orig 2024-10-25 10:52:17.000000000 +0200
+++ kbd-2.7-rc1/docs/man/man1/showkey.1 2024-10-29 11:59:53.540044621 +0100
@@ -84,6 +84,17 @@ corresponds to what the keyboard hardwar
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
that tells the 2.6 kernel to return the actual scan codes.
+
+.SH NOTES
+The raw scan codes are available only on AT and PS/2 keyboards,
+and even then they are disabled unless the
@ -17,17 +16,16 @@ diff -up kbd-2.0.4/docs/man/man1/showkey.1.orig kbd-2.0.4/docs/man/man1/showkey.
+can affect the output of
+.B showkey
+in scan code dump mode.
+
.SH AUTHORS
Andries Brouwer <aeb@cwi.nl>
.SH "SEE ALSO"
.BR loadkeys (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
--- kbd-2.0.4/docs/man/man8/setkeycodes.8.orig 2016-10-31 16:56:02.000000000 +0100
+++ kbd-2.0.4/docs/man/man8/setkeycodes.8 2017-01-11 10:45:03.763312393 +0100
@@ -38,6 +38,10 @@ to showkey(1), the command
.RE
will assign the keycode 112 to it, and then loadkeys(1) can be used
to define the function of this key.
diff -up kbd-2.7-rc1/docs/man/man8/setkeycodes.8.orig kbd-2.7-rc1/docs/man/man8/setkeycodes.8
--- kbd-2.7-rc1/docs/man/man8/setkeycodes.8.orig 2024-10-24 19:15:13.000000000 +0200
+++ kbd-2.7-rc1/docs/man/man8/setkeycodes.8 2024-10-29 12:01:28.367235566 +0100
@@ -43,6 +43,10 @@ the command
will assign the keycode 112 to it, and then
.BR loadkeys (1)
can be used to define the function of this key.
+
+USB keyboards have standardized keycodes and
+.B setkeycodes
@ -35,7 +33,7 @@ diff -up kbd-2.0.4/docs/man/man8/setkeycodes.8.orig kbd-2.0.4/docs/man/man8/setk
.LP
Some older kernels might hardwire a low scancode range to the
equivalent keycodes; setkeycodes will fail when you try to remap
@@ -56,6 +60,14 @@ None.
@@ -69,6 +73,14 @@ print this usage message.
.SH BUGS
The keycodes of X have nothing to do with those of Linux.
Unusual keys can be made visible under Linux, but not under X.
@ -48,5 +46,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.
+
.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
--- kbd-2.0.4/docs/man/man8/kbdrate.8.orig 2017-01-11 11:04:50.114831348 +0100
+++ kbd-2.0.4/docs/man/man8/kbdrate.8 2017-01-11 11:05:35.619851252 +0100
@@ -22,7 +22,7 @@ Using
diff -up kbd-2.7-rc1/docs/man/man8/kbdrate.8.orig kbd-2.7-rc1/docs/man/man8/kbdrate.8
--- kbd-2.7-rc1/docs/man/man8/kbdrate.8.orig 2023-08-09 13:57:23.000000000 +0200
+++ kbd-2.7-rc1/docs/man/man8/kbdrate.8 2024-10-29 12:03:53.354503358 +0100
@@ -19,7 +19,7 @@ Using
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.
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
.TP
diff -up kbd-2.0.4/src/kbdrate.c.orig kbd-2.0.4/src/kbdrate.c
--- kbd-2.0.4/src/kbdrate.c.orig 2017-01-11 11:05:10.226840148 +0100
+++ kbd-2.0.4/src/kbdrate.c 2017-01-11 11:05:56.832860537 +0100
@@ -111,9 +111,12 @@ static int valid_delays[] = { 250, 500,
diff -up kbd-2.7-rc1/src/kbdrate.c.orig kbd-2.7-rc1/src/kbdrate.c
--- kbd-2.7-rc1/src/kbdrate.c.orig 2024-10-19 00:12:27.000000000 +0200
+++ kbd-2.7-rc1/src/kbdrate.c 2024-10-29 12:08:24.289921559 +0100
@@ -114,9 +114,12 @@ static int print_only = 0;
static int
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.
*/
struct my_kbd_repeat kbdrep_s;
@@ -176,6 +179,9 @@ KDKBDREP_ioctl_ok(double rate, int delay
rate, kbdrep_s.delay);
@@ -181,6 +184,9 @@ KDKBDREP_ioctl_ok(double rate, int delay
}
return 1; /* success! */
+#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 */
}
#ifndef KIOCSRATE
@@ -226,7 +232,7 @@ sigalrmhandler(int sig __attribute__((un
int main(int argc, char **argv)
{
#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;
#ifdef KIOCSRATE
@@ -251,6 +257,9 @@ ioport_set(double rate, int delay, int s
/* https://wiki.osdev.org/PS/2_Keyboard */
- /* The ioport way */
+ /* The ioport way - will crash on sparc */
+
+#ifndef __sparc__
for (i = 0; i < RATE_COUNT; i++)
for (i = 0; i < (int) RATE_COUNT; i++)
if (rate * 10 >= valid_rates[i]) {
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_delays[(value & 0x60) >> 5]);
+#endif
return EXIT_SUCCESS;
return 1;
}
#ifdef __sparc__
-static double rate = 5.0; /* Default rate */
+static double rate = 20.0; /* Default rate */
static int delay = 200; /* Default delay */
#else
static double rate = 10.9; /* Default rate */

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 +1,24 @@
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"
diff -up kbd-2.7-rc1/configure.ac.orig kbd-2.7-rc1/configure.ac
--- kbd-2.7-rc1/configure.ac.orig 2024-10-28 16:18:31.000000000 +0100
+++ kbd-2.7-rc1/configure.ac 2024-10-29 12:15:12.915552224 +0100
@@ -156,6 +156,8 @@ AC_DEFUN([KBD_SUBST_DEFINE], [
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 };
KBD_SUBST_DEFINE([OLDKEYMAPDIR], ["keytables"], [Subdirectory of DATADIR])
KBD_SUBST_DEFINE([KEYMAPDIR], ["keymaps"], [Subdirectory of DATADIR])
+KBD_SUBST_DEFINE([XKBKEYMAPDIR], ["keymaps/xkb"], [Subdirectory of DATADIR])
+KBD_SUBST_DEFINE([LEGACYKEYMAPDIR], ["keymaps/legacy"], [Subdirectory of DATADIR])
KBD_SUBST_DEFINE([UNIMAPDIR], ["unimaps"], [Subdirectory of DATADIR])
KBD_SUBST_DEFINE([TRANSDIR], ["consoletrans"], [Subdirectory of DATADIR])
KBD_SUBST_DEFINE([VIDEOMODEDIR], ["videomodes"], [Subdirectory of DATADIR])
diff -up kbd-2.7-rc1/src/loadkeys.c.orig kbd-2.7-rc1/src/loadkeys.c
--- kbd-2.7-rc1/src/loadkeys.c.orig 2024-10-19 00:12:27.000000000 +0200
+++ kbd-2.7-rc1/src/loadkeys.c 2024-10-29 12:17:24.519755349 +0100
@@ -26,6 +26,8 @@
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"
static const char *const dirpath1[] = {
DATADIR "/" KEYMAPDIR "/**",
+ DATADIR "/" XKBKEYMAPDIR "/",
+ DATADIR "/" LEGACYKEYMAPDIR "/**",
KERNDIR "/",
NULL
};

View file

@ -1,61 +0,0 @@
--- a/src/vlock/auth.c
+++ b/src/vlock/auth.c
@@ -4,7 +4,7 @@
PAM authentication routine for vlock, the VT locking program for linux.
Copyright (C) 1994-1998 Michael K. Johnson <johnsonm@redhat.com>
- Copyright (C) 2002, 2005 Dmitry V. Levin <ldv@altlinux.org>
+ Copyright (C) 2002, 2005, 2013 Dmitry V. Levin <ldv@altlinux.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -36,6 +36,25 @@
/* Unrecognized PAM error timeout. */
#define ERROR_TIMEOUT 10
+static int
+do_account_password_management (pam_handle_t *pamh)
+{
+ int rc;
+
+ /* Whether the authenticated user is allowed to log in? */
+ rc = pam_acct_mgmt (pamh, 0);
+
+ /* Do we need to prompt the user for a new password? */
+ if (rc == PAM_NEW_AUTHTOK_REQD)
+ rc = pam_chauthtok (pamh, PAM_CHANGE_EXPIRED_AUTHTOK);
+
+ /* Extend the lifetime of the existing credentials. */
+ if (rc == PAM_SUCCESS)
+ rc = pam_setcred (pamh, PAM_REFRESH_CRED);
+
+ return rc;
+}
+
int
get_password (pam_handle_t * pamh, const char *username, const char *tty)
{
@@ -84,6 +103,23 @@ get_password (pam_handle_t * pamh, const char *username, const char *tty)
switch (rc)
{
case PAM_SUCCESS:
+ rc = do_account_password_management (pamh);
+
+ if (rc != PAM_SUCCESS)
+ {
+ /*
+ * The user was authenticated but
+ * either account or password management
+ * returned an error.
+ */
+ printf ("%s.\n\n\n",
+ pam_strerror (pamh, rc));
+ fflush (stdout);
+ pam_end (pamh, rc);
+ pamh = 0;
+ break;
+ }
+
pam_end (pamh, rc);
/* Log the fact of console unlocking. */
syslog (LOG_NOTICE,

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

@ -0,0 +1,84 @@
diff -up kbd-2.7-rc1/src/vlock/auth.c.orig kbd-2.7-rc1/src/vlock/auth.c
--- kbd-2.7-rc1/src/vlock/auth.c.orig 2024-10-09 15:14:58.000000000 +0200
+++ kbd-2.7-rc1/src/vlock/auth.c 2024-10-29 12:20:40.451059945 +0100
@@ -91,6 +91,12 @@ int get_password(pam_handle_t *pamh, con
}
fflush(stdout);
+ if (prompt) {
+ printf(_("Press ENTER to continue.\n"));
+ fflush(stdout);
+ (void )getchar();
+ }
+
/*
* No need to request a delay on failure via pam_fail_delay(3):
* authentication module should do it for us.
diff -up kbd-2.7-rc1/src/vlock/parse.c.orig kbd-2.7-rc1/src/vlock/parse.c
--- kbd-2.7-rc1/src/vlock/parse.c.orig 2024-10-19 00:12:27.000000000 +0200
+++ kbd-2.7-rc1/src/vlock/parse.c 2024-10-29 12:23:51.730369348 +0100
@@ -39,6 +39,13 @@
*/
int o_lock_all;
+/*
+ * This determines whether there will be prompt before invoking pam
+ * auth stack.
+ * 0 means no, 1 means yes.
+ */
+int prompt;
+
const char *
locked_name(void)
{
@@ -64,6 +71,8 @@ show_help(void)
" switch to other virtual consoles.\n"
"-a or --all: lock all virtual consoles by preventing other users\n"
" from switching virtual consoles.\n"
+ "-p or --prompt: wait for keypress before invoking pam auth stack,\n"
+ " useful for unlocking with smartcard setup.\n"
"-v or --version: Print the version number of vlock and exit.\n"
"-h or --help: Print this help message and exit.\n"),
program_invocation_short_name, program_invocation_short_name);
@@ -75,13 +84,14 @@ void parse(int ac, char *const av[])
static struct option long_options[] = {
{ "current", 0, NULL, 'c' },
{ "all", 0, NULL, 'a' },
+ { "prompt", 0, NULL, 'p' },
{ "version", 0, NULL, 'v' },
{ "help", 0, NULL, 'h' },
{ NULL, 0, NULL, 0 },
};
int c;
- while ((c = getopt_long(ac, av, "acvh", long_options, NULL)) != -1) {
+ while ((c = getopt_long(ac, av, "acpvh", long_options, NULL)) != -1) {
switch (c) {
case 'c':
o_lock_all = 0;
@@ -89,6 +99,9 @@ void parse(int ac, char *const av[])
case 'a':
o_lock_all = 1;
break;
+ case 'p':
+ prompt = 1;
+ break;
case 'v':
fprintf(stderr, "%s\n", VERSION);
exit(EXIT_SUCCESS);
diff -up kbd-2.7-rc1/src/vlock/vlock.h.orig kbd-2.7-rc1/src/vlock/vlock.h
--- kbd-2.7-rc1/src/vlock/vlock.h.orig 2024-10-08 12:35:16.000000000 +0200
+++ kbd-2.7-rc1/src/vlock/vlock.h 2024-10-29 12:24:21.315417215 +0100
@@ -40,5 +40,12 @@ const char *locked_name(void);
*/
extern int o_lock_all;
+/*
+ * This determines whether there will be prompt before invoking pam
+ * auth stack.
+ * 0 means no, 1 means yes.
+ */
+extern int prompt;
+
/* Copy of the VT mode when the program was started. */
extern int is_vt;

View file

@ -0,0 +1,11 @@
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);

298
kbd.spec
View file

@ -1,8 +1,13 @@
# {_exec_prefix}/lib/kbd is correct even on x86_64.
# It is traditionally used for kdb data (console fonts, keymaps, ...).
# It is not used for any shared objects/executables.
%global kbd_datadir %{_exec_prefix}/lib/kbd
Name: kbd
Version: 2.0.4
Release: 13%{?dist}
Version: 2.10.0
Release: 2%{?dist}
Summary: Tools for configuring the console (keyboard, virtual terminals, etc.)
License: GPLv2+
License: GPL-2.0-or-later
URL: http://www.kbd-project.org/
Source0: ftp://ftp.altlinux.org/pub/people/legion/kbd/kbd-%{version}.tar.xz
@ -18,26 +23,27 @@ Patch0: kbd-1.15-keycodes-man.patch
Patch1: kbd-1.15-sparc.patch
# Patch2: adds default unicode font to unicode_start script
Patch2: kbd-1.15-unicode_start.patch
# Patch3: add missing dumpkeys option to man page
Patch3: kbd-1.15.3-dumpkeys-man.patch
# Patch4: fixes decimal separator in Swiss German keyboard layout, bz 882529
Patch4: kbd-1.15.5-sg-decimal-separator.patch
# Patch5: adds xkb and legacy keymaps subdirs to loadkyes search path, bz 1028207
Patch5: kbd-1.15.5-loadkeys-search-path.patch
# Patch6: don't hardcode font used in unicode_start, take it from vconsole.conf,
# Patch3: fixes decimal separator in Swiss German keyboard layout, bz 882529
Patch3: kbd-1.15.5-sg-decimal-separator.patch
# Patch4: adds xkb and legacy keymaps subdirs to loadkyes search path, bz 1028207
Patch4: kbd-1.15.5-loadkeys-search-path.patch
# Patch5: don't hardcode font used in unicode_start, take it from vconsole.conf,
# bz 1101007
Patch6: kbd-2.0.2-unicode-start-font.patch
# Patch7: fixes issues found by static analysis
Patch7: kbd-2.0.4-covscan-fixes.patch
Patch5: kbd-2.0.2-unicode-start-font.patch
# Patch6: fixes issues found by static analysis
Patch6: kbd-2.4.0-covscan-fixes.patch
# Patch7: adds vlock option to issue prompt before invokation of pam stack
Patch7: kbd-2.0.4-vlock-add-prompt-option.patch
BuildRequires: gcc, bison, flex, gettext, pam-devel, check-devel
BuildRequires: console-setup, xkeyboard-config
BuildRequires: gcc, bison, flex, gettext, pam-devel, check-devel, automake, make
BuildRequires: console-setup, xkeyboard-config, libxkbcommon-devel
Requires: %{name}-misc = %{version}-%{release}
# Temporarily require -legacy
Requires: %{name}-legacy = %{version}-%{release}
# Be sure that system is after UsrMove
Conflicts: filesystem < 3
Provides: vlock = %{version}
Conflicts: vlock <= 1.3
Obsoletes: vlock
Obsoletes: vlock < 1.3-34
%description
The %{name} package contains tools for managing a Linux
@ -64,14 +70,9 @@ Please note that %{name}-legacy is not helpful without kbd.
%setup -q -a 1 -a 2
cp -fp %{SOURCE3} .
cp -fp %{SOURCE6} .
%patch0 -p1 -b .keycodes-man
%patch1 -p1 -b .sparc
%patch2 -p1 -b .unicode_start
%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
%autopatch -p1
aclocal
autoconf
# 7-bit maps are obsolete; so are non-euro maps
pushd data/keymaps/i386
@ -84,7 +85,6 @@ cp azerty/fr-latin9.map azerty/fr.map
cp azerty/fr-latin9.map azerty/fr-latin0.map # legacy alias
# Rename conflicting keymaps
mv dvorak/no.map dvorak/no-dvorak.map
mv fgGIod/trf.map fgGIod/trf-fgGIod.map
mv olpc/es.map olpc/es-olpc.map
mv olpc/pt.map olpc/pt-olpc.map
@ -101,94 +101,266 @@ iconv -f iso-8859-1 -t utf-8 < "ChangeLog" > "ChangeLog_"
mv "ChangeLog_" "ChangeLog"
%build
%configure --prefix=%{_prefix} --datadir=/lib/kbd --mandir=%{_mandir} --localedir=%{_datadir}/locale --enable-nls
make %{?_smp_mflags}
%configure --prefix=%{_prefix} --datadir=%{kbd_datadir} \
--mandir=%{_mandir} --localedir=%{_datadir}/locale --enable-nls --enable-xkb
%make_build
%install
make install DESTDIR=$RPM_BUILD_ROOT
%make_install
# 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
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
# 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.
mkdir -p $RPM_BUILD_ROOT/bin
for binary in setfont dumpkeys kbd_mode unicode_start unicode_stop loadkeys ; do
mv $RPM_BUILD_ROOT%{_bindir}/$binary $RPM_BUILD_ROOT/bin/
done
# https://bugzilla.redhat.com/show_bug.cgi?id=2015972
# xkb Arabic layout is 'ara', not 'fa', langtable tells us to use 'ara'
ln -s fa.map.gz $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/i386/qwerty/ara.map.gz
# Some microoptimization
sed -i -e 's,\<kbd_mode\>,/bin/kbd_mode,g;s,\<setfont\>,/bin/setfont,g' \
$RPM_BUILD_ROOT/bin/unicode_start
sed -i -e 's,\<kbd_mode\>,%{_bindir}/kbd_mode,g;s,\<setfont\>,%{_bindir}/setfont,g' \
$RPM_BUILD_ROOT%{_bindir}/unicode_start
# install kbdinfo manpage
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
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pam.d
install -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/vlock
# Move original keymaps to legacy directory
mkdir -p $RPM_BUILD_ROOT/lib/kbd/keymaps/legacy
mv $RPM_BUILD_ROOT/lib/kbd/keymaps/{amiga,atari,i386,include,mac,ppc,sun} $RPM_BUILD_ROOT/lib/kbd/keymaps/legacy
mkdir -p $RPM_BUILD_ROOT%{kbd_datadir}/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
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
while read line; do
XKBLAYOUT=`echo "$line" | cut -d " " -f 1`
echo "$XKBLAYOUT" >> layouts-list.lst
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
# Convert X keyboard layouts (plain, no variant)
cat layouts-list.lst | sort -u >> layouts-list-uniq.lst
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
# 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
# wipe the xkb-converted georgian layout, it is unusable, see:
# https://bugzilla.redhat.com/show_bug.cgi?id=2336875
# https://src.fedoraproject.org/rpms/kbd/pull-request/2#comment-239318
rm -f $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/ge.map.gz
# Rename the converted default fi (kotoistus) layout (#1117891)
gunzip $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/fi.map.gz
mv $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/fi.map $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/fi-kotoistus.map
gzip $RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/fi-kotoistus.map
# Fix converted cz layout - add compose rules
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
# Fix converted cz layout - add compose rules, if exists
if [ -f "$RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/cz.map.gz" ]; then
gunzip $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/cz.map.gz
patch $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/cz.map < %{SOURCE6}
gzip $RPM_BUILD_ROOT%{kbd_datadir}/keymaps/xkb/cz.map
fi
%find_lang %{name}
%files -f %{name}.lang
%license COPYING
%doc ChangeLog AUTHORS README docs/doc/kbd.FAQ*.html docs/doc/font-formats/*.html docs/doc/utf/utf* docs/doc/dvorak/*
/bin/*
%doc ChangeLog AUTHORS README docs/doc/font-formats/*.html docs/doc/dvorak/*
%{_bindir}/*
%{_mandir}/*/*
%config(noreplace) %{_sysconfdir}/pam.d/vlock
%files misc
/lib/kbd
%exclude /lib/kbd/keymaps/legacy
%{kbd_datadir}
%exclude %{kbd_datadir}/keymaps/legacy
%files legacy
/lib/kbd/keymaps/legacy
%{kbd_datadir}/keymaps/legacy
%changelog
* Thu Jul 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 2.10.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
* Wed Jun 10 2026 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.10.0-1
- Update to kbd-2.10.0
Resolves: #2481141
* Tue Mar 24 2026 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.9.0-3
- Fix setfont segmentation fault when argument for option is missing
Resolves: #2447892
* Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Mon Sep 22 2025 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.9.0-1
- Update to kbd-2.9.0
Resolves: #2393145
* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.8.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Tue Jul 15 2025 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.8.0-2
- Fix kfont_load_font(): setfont killed by SIGSEGV
Resolves: #2370214
* Mon Jun 09 2025 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.8.0-1
- Update to kbd-2.8.0
Resolves: #2369419
* Mon Jan 27 2025 Adam Williamson <awilliam@redhat.com> - 2.7.1-3
- Add Georgian layout and font (from upstream PR #127)
* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Thu Jan 02 2025 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.7.1-1
- Update to kbd-2.7.1
Resolves: #2331264
* Tue Dec 17 2024 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.7-1
- Update to kbd-2.7
Resolves: #2331264
* Tue Sep 10 2024 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.6.4-5
- Add vlock option to issue prompt before invokation of pam stack
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Dec 15 2023 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.6.4-1
- 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

View file

@ -1,4 +1,4 @@
SHA512 (kbd-latsun-fonts.tar.bz2) = b98da5df85017ef1bd297eb2255046d54dd805c84356db7533f24e49fb78c8e3999901a45a49cdf6a74c0002bba2e0aa8327469d78dd38b6e747103972c30584
SHA512 (kbd-latarcyrheb-32.tar.bz2) = 1870a708e16cf16f8343f02f7e97940e8404655078f92709a0b8a334be772faa99b4dbaca37e8d8c5b16d0d4d811fe6b102e4f76ae821148eb33075613dc95b8
SHA512 (kbdinfo.1) = 8696d55f6c15f0ee2c2936eca6180b18100a87b11f0efe809a9531bb1228c67cd096cbc8fa25d9ee496daab28892ee5f320cc4bc9c9d816ff666bb4f80271c99
SHA512 (kbd-2.0.4.tar.xz) = 5e264b3695b0af0bc85e0a4fa2c43e13648d8ea82102f3b051c28da2abfc52977577c470bce48f30cec9b0d215297e48c9b05e00561c990e3770fb68f6544e0f
SHA512 (kbd-2.10.0.tar.xz) = 1b7f55f0a1b34d9b6b4237a1ff3e10eedf4bdebe50e906a7acdea48f85b3c455e72737127491a0c494388b999797aa65411b20b44c3f5612fdeee4d8289f937c