From 9063907061972f0164bd3c7ac7c44a00d33c346a Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Fri, 25 Oct 2024 15:56:14 +0300 Subject: [PATCH] import kbd-2.6.4-5.el10 --- .gitignore | 3 + .kbd.metadata | 3 + SOURCES/cz-map.patch | 108 +++ SOURCES/kbd-1.15-keycodes-man.patch | 52 ++ SOURCES/kbd-1.15-sparc.patch | 62 ++ SOURCES/kbd-1.15-unicode_start.patch | 21 + SOURCES/kbd-1.15.5-loadkeys-search-path.patch | 24 + SOURCES/kbd-1.15.5-sg-decimal-separator.patch | 12 + SOURCES/kbd-2.0.2-unicode-start-font.patch | 15 + SOURCES/kbd-2.4.0-covscan-fixes.patch | 49 + SOURCES/kbd-2.6.4-initialize-variable.patch | 12 + SOURCES/kbdinfo.1 | 33 + SOURCES/vlock.pamd | 3 + SOURCES/xml2lst.pl | 231 +++++ SPECS/kbd.spec | 844 ++++++++++++++++++ 15 files changed, 1472 insertions(+) create mode 100644 .gitignore create mode 100644 .kbd.metadata create mode 100644 SOURCES/cz-map.patch create mode 100644 SOURCES/kbd-1.15-keycodes-man.patch create mode 100644 SOURCES/kbd-1.15-sparc.patch create mode 100644 SOURCES/kbd-1.15-unicode_start.patch create mode 100644 SOURCES/kbd-1.15.5-loadkeys-search-path.patch create mode 100644 SOURCES/kbd-1.15.5-sg-decimal-separator.patch create mode 100644 SOURCES/kbd-2.0.2-unicode-start-font.patch create mode 100644 SOURCES/kbd-2.4.0-covscan-fixes.patch create mode 100644 SOURCES/kbd-2.6.4-initialize-variable.patch create mode 100644 SOURCES/kbdinfo.1 create mode 100644 SOURCES/vlock.pamd create mode 100644 SOURCES/xml2lst.pl create mode 100644 SPECS/kbd.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1cfb884 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +SOURCES/kbd-2.6.4.tar.xz +SOURCES/kbd-latarcyrheb-32.tar.bz2 +SOURCES/kbd-latsun-fonts.tar.bz2 diff --git a/.kbd.metadata b/.kbd.metadata new file mode 100644 index 0000000..60bf129 --- /dev/null +++ b/.kbd.metadata @@ -0,0 +1,3 @@ +4b054f9d77232e2b6de9e673b3a1c45aed93b1c9 SOURCES/kbd-2.6.4.tar.xz +17db7aaba451796278758e7c6e443b4659af17b9 SOURCES/kbd-latarcyrheb-32.tar.bz2 +a5f6d9dff7a8a484cd5014ec7ffdf1eaed27084a SOURCES/kbd-latsun-fonts.tar.bz2 diff --git a/SOURCES/cz-map.patch b/SOURCES/cz-map.patch new file mode 100644 index 0000000..810c3c4 --- /dev/null +++ b/SOURCES/cz-map.patch @@ -0,0 +1,108 @@ +--- cz.map.new 2023-02-21 11:13:02.527658350 +0100 ++++ cz.map.old 2023-02-21 11:14:28.586714959 +0100 +@@ -1,17 +1,17 @@ + keymaps 0-127 + keycode 1 = Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape + keycode 2 = U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam U+002b U+0031 U+0021 dead_tilde U+002b U+0031 U+0021 dead_tilde Meta_plus Meta_one Meta_exclam Meta_exclam Meta_plus Meta_one Meta_exclam Meta_exclam +-keycode 3 = +U+011b U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_kcaron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul ++keycode 3 = +U+011b U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011b U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul +U+011a U+0032 U+0040 dead_caron nul U+0032 nul nul Meta_two Meta_two Meta_at Meta_at Meta_nul Meta_two Meta_nul Meta_nul + keycode 4 = +U+0161 U+0033 U+0023 dead_circumflex +U+0161 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0161 U+0033 U+0023 dead_circumflex +U+0161 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0161 U+0033 U+0023 dead_circumflex +U+0161 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0161 U+0033 U+0023 dead_circumflex +U+0161 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0160 U+0033 U+0023 dead_circumflex +U+0160 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0160 U+0033 U+0023 dead_circumflex +U+0160 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0160 U+0033 U+0023 dead_circumflex +U+0160 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +U+0160 U+0033 U+0023 dead_circumflex +U+0160 U+0033 U+0023 dead_circumflex Meta_three Meta_three Meta_numbersign Meta_numbersign Meta_three Meta_three Meta_numbersign Meta_numbersign +-keycode 5 = +U+010d U+0034 U+0024 dead_kbreve +U+010d U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_kbreve +U+010d U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_kbreve +U+010d U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_kbreve +U+010d U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_kbreve +U+010c U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_kbreve +U+010c U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_kbreve +U+010c U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_kbreve +U+010c U+0034 U+0024 dead_kbreve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +-keycode 6 = +U+0159 U+0035 U+0025 dead_abovering +U+0159 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 dead_abovering +U+0159 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 dead_abovering +U+0159 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 dead_abovering +U+0159 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 dead_abovering +U+0158 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 dead_abovering +U+0158 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 dead_abovering +U+0158 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 dead_abovering +U+0158 U+0035 U+0025 dead_abovering Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +-keycode 7 = +U+017e U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_kogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum ++keycode 5 = +U+010d U+0034 U+0024 dead_breve +U+010d U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_breve +U+010d U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_breve +U+010d U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010d U+0034 U+0024 dead_breve +U+010d U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_breve +U+010c U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_breve +U+010c U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_breve +U+010c U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar +U+010c U+0034 U+0024 dead_breve +U+010c U+0034 U+0024 dead_breve Meta_four Meta_four Meta_dollar Meta_dollar Meta_four Meta_four Meta_dollar Meta_dollar ++keycode 6 = +U+0159 U+0035 U+0025 U+00b0 +U+0159 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 U+00b0 +U+0159 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 U+00b0 +U+0159 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0159 U+0035 U+0025 U+00b0 +U+0159 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 U+00b0 +U+0158 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 U+00b0 +U+0158 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 U+00b0 +U+0158 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent +U+0158 U+0035 U+0025 U+00b0 +U+0158 U+0035 U+0025 U+00b0 Meta_five Meta_five Meta_percent Meta_percent Meta_five Meta_five Meta_percent Meta_percent ++keycode 7 = +U+017e U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017e U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum +U+017d U+0036 U+005e dead_ogonek Control_asciicircum U+0036 Control_asciicircum Control_asciicircum Meta_six Meta_six Meta_asciicircum Meta_asciicircum Meta_Control_asciicircum Meta_six Meta_Control_asciicircum Meta_Control_asciicircum + keycode 8 = +U+00fd U+0037 U+0026 dead_grave +U+00fd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00fd U+0037 U+0026 dead_grave +U+00fd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00fd U+0037 U+0026 dead_grave +U+00fd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00fd U+0037 U+0026 dead_grave +U+00fd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00dd U+0037 U+0026 dead_grave +U+00dd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00dd U+0037 U+0026 dead_grave +U+00dd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00dd U+0037 U+0026 dead_grave +U+00dd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +U+00dd U+0037 U+0026 dead_grave +U+00dd U+0037 U+0026 dead_grave Meta_seven Meta_seven Meta_ampersand Meta_ampersand Meta_seven Meta_seven Meta_ampersand Meta_ampersand +-keycode 9 = +U+00e1 U+0038 U+002a dead_abovedot +U+00e1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00e1 U+0038 U+002a dead_abovedot +U+00e1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00e1 U+0038 U+002a dead_abovedot +U+00e1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00e1 U+0038 U+002a dead_abovedot +U+00e1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00c1 U+0038 U+002a dead_abovedot +U+00c1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00c1 U+0038 U+002a dead_abovedot +U+00c1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00c1 U+0038 U+002a dead_abovedot +U+00c1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk +U+00c1 U+0038 U+002a dead_abovedot +U+00c1 U+0038 U+002a dead_abovedot Meta_eight Meta_eight Meta_asterisk Meta_asterisk Meta_eight Meta_eight Meta_asterisk Meta_asterisk ++keycode 9 = +U+00e1 U+0038 U+002a U+002e +U+00e1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00e1 U+0038 U+002a U+002e +U+00e1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00e1 U+0038 U+002a U+002e +U+00e1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00e1 U+0038 U+002a U+002e +U+00e1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00c1 U+0038 U+002a U+002e +U+00c1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00c1 U+0038 U+002a U+002e +U+00c1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00c1 U+0038 U+002a U+002e +U+00c1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose +U+00c1 U+0038 U+002a U+002e +U+00c1 Compose Compose Compose Meta_eight Meta_eight Meta_asterisk Meta_period Compose Compose Compose Compose + keycode 10 = +U+00ed U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00ed U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00ed U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00ed U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00cd U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00cd U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00cd U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +U+00cd U+0039 U+007b dead_acute Escape U+0039 Escape Escape Meta_nine Meta_nine Meta_braceleft Meta_braceleft Meta_Escape Meta_nine Meta_Escape Meta_Escape +-keycode 11 = +U+00e9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_kdoubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright ++keycode 11 = +U+00e9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00e9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright +U+00c9 U+0030 U+007d dead_doubleacute Control_bracketright U+0030 Control_bracketright Control_bracketright Meta_zero Meta_zero Meta_braceright Meta_braceright Meta_Control_bracketright Meta_zero Meta_Control_bracketright Meta_Control_bracketright + keycode 12 = U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash U+003d U+0025 U+005c dead_diaeresis Control_backslash U+0025 Control_backslash Control_backslash Meta_equal Meta_percent Meta_backslash Meta_backslash Meta_Control_backslash Meta_percent Meta_Control_backslash Meta_Control_backslash +-keycode 13 = dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla dead_acute dead_kcaron dead_macron dead_cedilla ++keycode 13 = dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore dead_acute dead_caron U+005f dead_cedilla Control_underscore dead_caron Control_underscore Control_underscore Meta_underscore dead_caron Meta_underscore Meta_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore Meta_Control_underscore + keycode 14 = Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace Delete Delete Delete Delete BackSpace BackSpace BackSpace BackSpace Meta_Delete Meta_Delete Meta_Delete Meta_Delete Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace + keycode 15 = Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Tab Meta_Tab Tab Meta_Tab Tab Tab Tab Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab Meta_Tab + keycode 16 = +U+0071 +U+0051 U+005c +U+03a9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0071 +U+0051 U+005c +U+03a9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0071 +U+0051 U+005c +U+03a9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0071 +U+0051 U+005c +U+03a9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0051 +U+0071 U+005c +U+03c9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0051 +U+0071 U+005c +U+03c9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0051 +U+0071 U+005c +U+03c9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +U+0051 +U+0071 U+005c +U+03c9 Control_q Control_q Control_backslash Control_backslash Meta_q Meta_Q Meta_backslash Meta_backslash Meta_Control_q Meta_Control_q Meta_Control_backslash Meta_Control_backslash +@@ -34,16 +34,16 @@ + keycode 33 = +U+0066 +U+0046 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0066 +U+0046 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0066 +U+0046 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0066 +U+0046 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0046 +U+0066 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0046 +U+0066 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0046 +U+0066 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape +U+0046 +U+0066 U+005b +U+00aa Control_f Control_f Escape Escape Meta_f Meta_F Meta_bracketleft Meta_bracketleft Meta_Control_f Meta_Control_f Meta_Escape Meta_Escape + keycode 34 = +U+0067 +U+0047 U+005d +U+014a Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0067 +U+0047 U+005d +U+014a Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0067 +U+0047 U+005d +U+014a Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0067 +U+0047 U+005d +U+014a Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0047 +U+0067 U+005d +U+014b Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0047 +U+0067 U+005d +U+014b Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0047 +U+0067 U+005d +U+014b Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright +U+0047 +U+0067 U+005d +U+014b Control_g Control_g Control_bracketright Control_bracketright Meta_g Meta_G Meta_bracketright Meta_bracketright Meta_Control_g Meta_Control_g Meta_Control_bracketright Meta_Control_bracketright + keycode 35 = +U+0068 +U+0048 U+0060 +U+0126 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0068 +U+0048 U+0060 +U+0126 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0068 +U+0048 U+0060 +U+0126 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0068 +U+0048 U+0060 +U+0126 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0048 +U+0068 U+0060 +U+0127 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0048 +U+0068 U+0060 +U+0127 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0048 +U+0068 U+0060 +U+0127 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +U+0048 +U+0068 U+0060 +U+0127 BackSpace BackSpace nul nul Meta_h Meta_H Meta_grave Meta_grave Meta_BackSpace Meta_BackSpace Meta_nul Meta_nul +-keycode 36 = +U+006a +U+004a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 dead_horn Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed ++keycode 36 = +U+006a +U+004a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+006a +U+004a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed +U+004a +U+006a U+0027 U+031b Linefeed Linefeed Linefeed Linefeed Meta_j Meta_J Meta_apostrophe Meta_apostrophe Meta_Linefeed Meta_Linefeed Meta_Linefeed Meta_Linefeed + keycode 37 = +U+006b +U+004b +U+0142 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+006b +U+004b +U+0142 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+006b +U+004b +U+0142 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+006b +U+004b +U+0142 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+004b +U+006b +U+0141 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+004b +U+006b +U+0141 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+004b +U+006b +U+0141 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k +U+004b +U+006b +U+0141 U+0026 Control_k Control_k Control_k Control_k Meta_k Meta_K Meta_ampersand Meta_ampersand Meta_Control_k Meta_Control_k Meta_Control_k Meta_Control_k + keycode 38 = +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +-keycode 39 = +U+016f U+0022 U+0024 dead_kdoubleacute +U+016f U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_kdoubleacute +U+016f U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_kdoubleacute +U+016f U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_kdoubleacute +U+016f U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_kdoubleacute +U+016e U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_kdoubleacute +U+016e U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_kdoubleacute +U+016e U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_kdoubleacute +U+016e U+0022 U+0024 dead_kdoubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar ++keycode 39 = +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar + keycode 40 = U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe +-keycode 41 = U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b dead_abovering U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum ++keycode 41 = U+003b dead_grave U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum + keycode 42 = Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift + keycode 43 = dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash +-keycode 44 = +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +-keycode 45 = +U+0078 +U+0058 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+003e Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_greater Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x ++keycode 44 = +U+0079 +U+0059 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+2039 Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_y Meta_Y Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y ++keycode 45 = +U+0078 +U+0058 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0078 +U+0058 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x +U+0058 +U+0078 U+0023 U+203a Control_x Control_x Control_x Control_x Meta_x Meta_X Meta_numbersign Meta_numbersign Meta_Control_x Meta_Control_x Meta_Control_x Meta_Control_x + keycode 46 = +U+0063 +U+0043 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0063 +U+0043 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0063 +U+0043 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0063 +U+0043 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0043 +U+0063 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0043 +U+0063 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0043 +U+0063 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c +U+0043 +U+0063 U+0026 U+00a9 Control_c Control_c Control_c Control_c Meta_c Meta_C Meta_ampersand Meta_ampersand Meta_Control_c Meta_Control_c Meta_Control_c Meta_Control_c + keycode 47 = +U+0076 +U+0056 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0076 +U+0056 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0076 +U+0056 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0076 +U+0056 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0056 +U+0076 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0056 +U+0076 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0056 +U+0076 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul +U+0056 +U+0076 U+0040 U+201a Control_v Control_v nul nul Meta_v Meta_V Meta_at Meta_at Meta_Control_v Meta_Control_v Meta_nul Meta_nul + keycode 48 = +U+0062 +U+0042 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0062 +U+0042 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0062 +U+0042 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0062 +U+0042 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0042 +U+0062 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0042 +U+0062 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0042 +U+0062 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +U+0042 +U+0062 U+007b U+2018 Control_b Control_b Escape Escape Meta_b Meta_B Meta_braceleft Meta_braceleft Meta_Control_b Meta_Control_b Meta_Escape Meta_Escape +@@ -51,7 +51,7 @@ + keycode 50 = +U+006d +U+004d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+006d +U+004d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+006d +U+004d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+006d +U+004d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+004d +U+006d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+004d +U+006d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+004d +U+006d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum +U+004d +U+006d U+005e +U+00ba Return Return Control_asciicircum Control_asciicircum Meta_m Meta_M Meta_asciicircum Meta_asciicircum Meta_Control_m Meta_Control_m Meta_Control_asciicircum Meta_Control_asciicircum + keycode 51 = U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete U+002c U+003f U+003c U+00d7 Delete Delete U+003c Delete Meta_comma Meta_question Meta_less Meta_less Meta_Delete Meta_Delete Meta_less Meta_Delete + keycode 52 = U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose U+002e U+003a U+003e U+00f7 Compose Compose Compose U+00f7 Meta_period Meta_colon Meta_greater Meta_greater Compose Compose Compose Compose +-keycode 53 = U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore U+002d U+005f U+002a dead_abovedot Control_underscore Control_underscore U+002a Control_underscore Meta_minus Meta_underscore Meta_asterisk Meta_asterisk Meta_Control_underscore Meta_Control_underscore Meta_asterisk Meta_Control_underscore ++keycode 53 = U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose U+002d U+005f U+002a U+002e Control_underscore Control_underscore Compose Compose Meta_minus Meta_underscore Meta_asterisk Meta_period Meta_Control_underscore Meta_Control_underscore Compose Compose + keycode 54 = Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift + keycode 55 = KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply Hex_C KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply + keycode 56 = Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt +@@ -108,3 +108,49 @@ + keycode 127 = VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol + keycode 121 = KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period + strings as usual ++# dead_grave ++compose '`' 'u' to U+016F ++compose '`' 'U' to U+016E ++compose '`' 'z' to U+00B0 ++compose '`' 'Z' to U+00B0 ++# dead_acute ++compose '\'' 'a' to U+00E1 ++compose '\'' 'A' to U+00C1 ++compose '\'' 'e' to U+00E9 ++compose '\'' 'E' to U+00C9 ++compose '\'' 'i' to U+00ED ++compose '\'' 'I' to U+00CD ++compose '\'' 'o' to U+00F3 ++compose '\'' 'O' to U+00D3 ++compose '\'' 'u' to U+00FA ++compose '\'' 'U' to U+00DA ++compose '\'' 'y' to U+00FD ++compose '\'' 'Y' to U+00DD ++# dead_caron ++compose '^' 'u' to U+016F ++compose '^' 'U' to U+016E ++compose '^' 'c' to U+010D ++compose '^' 'C' to U+010C ++compose '^' 'd' to U+010F ++compose '^' 'D' to U+010E ++compose '^' 'e' to U+011B ++compose '^' 'E' to U+011A ++compose '^' 'n' to U+0148 ++compose '^' 'N' to U+0147 ++compose '^' 'r' to U+0159 ++compose '^' 'R' to U+0158 ++compose '^' 's' to U+0161 ++compose '^' 'S' to U+0160 ++compose '^' 't' to U+0165 ++compose '^' 'T' to U+0164 ++compose '^' 'z' to U+017E ++compose '^' 'Z' to U+017D ++# dead_diaeresis ++compose '"' 'a' to U+00E4 ++compose '"' 'A' to U+00C4 ++compose '"' 'e' to U+00EB ++compose '"' 'E' to U+00CB ++compose '"' 'o' to U+00F6 ++compose '"' 'O' to U+00D6 ++compose '"' 'u' to U+00FC ++compose '"' 'U' to U+00DC diff --git a/SOURCES/kbd-1.15-keycodes-man.patch b/SOURCES/kbd-1.15-keycodes-man.patch new file mode 100644 index 0000000..e400c9d --- /dev/null +++ b/SOURCES/kbd-1.15-keycodes-man.patch @@ -0,0 +1,52 @@ +diff -up kbd-2.3.0/docs/man/man1/showkey.1.orig kbd-2.3.0/docs/man/man1/showkey.1 +--- kbd-2.3.0/docs/man/man1/showkey.1.orig 2020-07-08 19:25:47.000000000 +0200 ++++ kbd-2.3.0/docs/man/man1/showkey.1 2020-07-16 08:56:15.970254183 +0200 +@@ -84,6 +84,19 @@ corresponds to what the keyboard hardwar + 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 ++.B atkbd.softraw=0 ++kernel parameter is used. ++When the raw scan codes are not available, the kernel uses a fixed built-in ++table to produce scan codes from keycodes. Thus, ++.BR setkeycodes (8) ++can affect the output of ++.B showkey ++in scan code dump mode. ++ + .SH "SEE ALSO" + .BR loadkeys (1), + .BR dumpkeys (1), +diff -up kbd-2.3.0/docs/man/man8/setkeycodes.8.orig kbd-2.3.0/docs/man/man8/setkeycodes.8 +--- kbd-2.3.0/docs/man/man8/setkeycodes.8.orig 2020-07-08 19:35:35.000000000 +0200 ++++ kbd-2.3.0/docs/man/man8/setkeycodes.8 2020-07-16 08:57:52.293900997 +0200 +@@ -42,6 +42,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 ++doesn't affect them at all. + .LP + Some older kernels might hardwire a low scancode range to the + equivalent keycodes; setkeycodes will fail when you try to remap +@@ -60,6 +64,14 @@ None. + .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. ++ ++.B setkeycodes ++affects only the "first" input device ++that has modifiable scancode-to-keycode mapping. ++If there is more than one such device, ++.B setkeycodes ++cannot change the mapping of other devices than the "first" one. ++ + .SH "SEE ALSO" + .BR dumpkeys (1), + .BR loadkeys (1), diff --git a/SOURCES/kbd-1.15-sparc.patch b/SOURCES/kbd-1.15-sparc.patch new file mode 100644 index 0000000..3fbc0fb --- /dev/null +++ b/SOURCES/kbd-1.15-sparc.patch @@ -0,0 +1,62 @@ +diff -up kbd-2.1.0/docs/man/man8/kbdrate.8.orig kbd-2.1.0/docs/man/man8/kbdrate.8 +--- kbd-2.1.0/docs/man/man8/kbdrate.8.orig 2019-06-21 10:08:17.000000000 +0200 ++++ kbd-2.1.0/docs/man/man8/kbdrate.8 2019-07-17 10:36:19.876499648 +0200 +@@ -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 +-to 5 cps and the delay to 200 ms. ++to 20 cps and the delay to 200 ms. + + .SH OPTIONS + .TP +diff -up kbd-2.1.0/src/kbdrate.c.orig kbd-2.1.0/src/kbdrate.c +--- kbd-2.1.0/src/kbdrate.c.orig 2019-07-02 17:44:57.000000000 +0200 ++++ kbd-2.1.0/src/kbdrate.c 2019-07-17 11:07:04.732486323 +0200 +@@ -114,9 +114,12 @@ static int print_only = 0; + static int + KDKBDREP_ioctl_ok(double rate, int delay, int silent) + { ++#if defined(KDKBDREP) && !defined(__sparc__) + /* + * This ioctl is defined in but is not + * implemented anywhere - must be in some m68k patches. ++ * We cannot blindly try unimplemented ioctls on sparc64 - ++ * the 32<->64bit transition layer does not like it. + * Since 2.4.9 also on i386. + */ + struct my_kbd_repeat kbdrep_s; +@@ -181,6 +184,9 @@ KDKBDREP_ioctl_ok(double rate, int delay + } + + return 1; /* success! */ ++#else /* no KDKBDREP or __sparc__ */ ++ return 0; ++#endif /* KDKBDREP */ + } + + #ifdef KIOCSRATE +@@ -251,6 +257,9 @@ ioport_set(double rate, int delay, int s + + /* https://wiki.osdev.org/PS/2_Keyboard */ + ++ /* The ioport way - will crash on sparc */ ++ ++#ifndef __sparc__ + for (i = 0; i < (int) RATE_COUNT; i++) + if (rate * 10 >= valid_rates[i]) { + value &= 0x60; +@@ -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 1; + } + + #ifdef __sparc__ +-double rate = 5.0; /* Default rate */ ++double rate = 20.0; /* Default rate */ + int delay = 200; /* Default delay */ + #else + double rate = 10.9; /* Default rate */ diff --git a/SOURCES/kbd-1.15-unicode_start.patch b/SOURCES/kbd-1.15-unicode_start.patch new file mode 100644 index 0000000..119fe78 --- /dev/null +++ b/SOURCES/kbd-1.15-unicode_start.patch @@ -0,0 +1,21 @@ +diff -up kbd-1.15.2/src/unicode_start.orig kbd-1.15.2/src/unicode_start +--- kbd-1.15.2/src/unicode_start.orig 2011-01-05 13:28:22.079662644 +0100 ++++ kbd-1.15.2/src/unicode_start 2011-01-05 13:29:01.327353698 +0100 +@@ -72,6 +72,9 @@ stty iutf8 + # have a Unicode map attached, or explicitly specified, e.g., + # by giving `def.uni' as a second argument. + ++DEFAULT_UNICODE_FONT=latarcyrheb-sun16 ++# Also drdos8x16 is a good candidate. ++ + case "$#" in + 2) + setfont "$1" -u "$2" +@@ -80,6 +83,7 @@ case "$#" in + setfont "$1" + ;; + 0) ++ setfont $DEFAULT_UNICODE_FONT + ;; + *) + echo "usage: unicode_start [font [unicode map]]" diff --git a/SOURCES/kbd-1.15.5-loadkeys-search-path.patch b/SOURCES/kbd-1.15.5-loadkeys-search-path.patch new file mode 100644 index 0000000..aeb771c --- /dev/null +++ b/SOURCES/kbd-1.15.5-loadkeys-search-path.patch @@ -0,0 +1,24 @@ +diff -up kbd-2.6.2/src/loadkeys.c.orig kbd-2.6.2/src/loadkeys.c +--- kbd-2.6.2/src/loadkeys.c.orig 2023-08-22 10:02:52.261785310 +0200 ++++ kbd-2.6.2/src/loadkeys.c 2023-08-22 10:03:44.351889761 +0200 +@@ -27,6 +27,8 @@ + + static const char *const dirpath1[] = { + DATADIR "/" KEYMAPDIR "/**", ++ DATADIR "/" XKBKEYMAPDIR "/", ++ DATADIR "/" LEGACYKEYMAPDIR "/**", + KERNDIR "/", + NULL + }; +diff -up kbd-2.6.2/src/paths.h.orig kbd-2.6.2/src/paths.h +--- kbd-2.6.2/src/paths.h.orig 2023-08-22 10:04:03.021927193 +0200 ++++ kbd-2.6.2/src/paths.h 2023-08-22 10:04:35.740992805 +0200 +@@ -5,6 +5,8 @@ + * The following five subdirectories are defined: + */ + #define KEYMAPDIR "keymaps" ++#define XKBKEYMAPDIR "keymaps/xkb" ++#define LEGACYKEYMAPDIR "keymaps/legacy" + #define UNIMAPDIR "unimaps" + #define TRANSDIR "consoletrans" + #define VIDEOMODEDIR "videomodes" diff --git a/SOURCES/kbd-1.15.5-sg-decimal-separator.patch b/SOURCES/kbd-1.15.5-sg-decimal-separator.patch new file mode 100644 index 0000000..cb7398d --- /dev/null +++ b/SOURCES/kbd-1.15.5-sg-decimal-separator.patch @@ -0,0 +1,12 @@ +diff -up kbd-1.15.5/data/keymaps/i386/qwertz/sg.map.orig kbd-1.15.5/data/keymaps/i386/qwertz/sg.map +--- kbd-1.15.5/data/keymaps/i386/qwertz/sg.map.orig 2013-02-21 15:54:39.362799094 +0100 ++++ kbd-1.15.5/data/keymaps/i386/qwertz/sg.map 2013-02-21 15:54:46.448838554 +0100 +@@ -1,7 +1,7 @@ + keymaps 0-2,4-6,8,12 + include "qwertz-layout" + include "linux-with-alt-and-altgr.inc" +- plain keycode 83 = KP_Comma ++ plain keycode 83 = KP_Period + strings as usual + + keycode 1 = Escape Escape diff --git a/SOURCES/kbd-2.0.2-unicode-start-font.patch b/SOURCES/kbd-2.0.2-unicode-start-font.patch new file mode 100644 index 0000000..72d47f4 --- /dev/null +++ b/SOURCES/kbd-2.0.2-unicode-start-font.patch @@ -0,0 +1,15 @@ +diff -up kbd-2.0.2/src/unicode_start.orig kbd-2.0.2/src/unicode_start +--- kbd-2.0.2/src/unicode_start.orig 2014-08-12 14:47:53.019028849 +0200 ++++ kbd-2.0.2/src/unicode_start 2014-08-12 14:54:42.631427602 +0200 +@@ -72,7 +72,10 @@ stty iutf8 + # have a Unicode map attached, or explicitly specified, e.g., + # by giving `def.uni' as a second argument. + +-DEFAULT_UNICODE_FONT=latarcyrheb-sun16 ++# Source /etc/vconsole.conf to get default font ++. /etc/vconsole.conf ++ ++DEFAULT_UNICODE_FONT=$FONT + # Also drdos8x16 is a good candidate. + + case "$#" in diff --git a/SOURCES/kbd-2.4.0-covscan-fixes.patch b/SOURCES/kbd-2.4.0-covscan-fixes.patch new file mode 100644 index 0000000..67cdd50 --- /dev/null +++ b/SOURCES/kbd-2.4.0-covscan-fixes.patch @@ -0,0 +1,49 @@ +diff -up kbd-2.6.1/src/libkfont/psffontop.c.orig kbd-2.6.1/src/libkfont/psffontop.c +--- kbd-2.6.1/src/libkfont/psffontop.c.orig 2023-06-23 10:29:44.000000000 +0200 ++++ kbd-2.6.1/src/libkfont/psffontop.c 2023-06-30 14:06:06.363944776 +0200 +@@ -236,6 +236,7 @@ kfont_read_psffont(struct kfont_context + + if (psfhdr->mode > PSF1_MAXMODE) { + KFONT_ERR(ctx, _("Unsupported psf file mode (%d)"), psfhdr->mode); ++ free(psfhdr); + return -EX_DATAERR; + } + fontlen = ((psfhdr->mode & PSF1_MODE512) ? 512 : 256); +@@ -253,6 +254,7 @@ kfont_read_psffont(struct kfont_context + + if (psfhdr.version > PSF2_MAXVERSION) { + KFONT_ERR(ctx, _("Unsupported psf version (%d)"), psfhdr.version); ++ free(inputbuf); + return -EX_DATAERR; + } + fontlen = assemble_uint32((unsigned char *)&psfhdr.length); +@@ -263,16 +265,20 @@ kfont_read_psffont(struct kfont_context + fontwidth = assemble_uint32((unsigned char *)&psfhdr.width); + fontheight= assemble_uint32((unsigned char *)&psfhdr.height); + utf8 = 1; +- } else ++ } else { ++ free(inputbuf); + return -EX_DATAERR; /* not psf */ ++ } + + /* tests required - we divide by these */ + if (fontlen == 0) { + KFONT_ERR(ctx, _("zero input font length?")); ++ free(inputbuf); + return -EX_DATAERR; + } + if (charsize == 0) { + KFONT_ERR(ctx, _("zero input character size?")); ++ free(inputbuf); + return -EX_DATAERR; + } + +@@ -286,6 +292,7 @@ kfont_read_psffont(struct kfont_context + + if (i > inputlth || (!hastable && i != inputlth)) { + KFONT_ERR(ctx, _("Input file: bad input length (%d)"), inputlth); ++ free(inputbuf); + return -EX_DATAERR; + } + diff --git a/SOURCES/kbd-2.6.4-initialize-variable.patch b/SOURCES/kbd-2.6.4-initialize-variable.patch new file mode 100644 index 0000000..545b1b9 --- /dev/null +++ b/SOURCES/kbd-2.6.4-initialize-variable.patch @@ -0,0 +1,12 @@ +diff -up kbd-2.6.4/src/libkfont/setfont.c.orig kbd-2.6.4/src/libkfont/setfont.c +--- kbd-2.6.4/src/libkfont/setfont.c.orig 2023-09-27 11:57:58.000000000 +0200 ++++ kbd-2.6.4/src/libkfont/setfont.c 2024-07-29 09:45:11.476820762 +0200 +@@ -280,7 +280,7 @@ kfont_load_fonts(struct kfont_context *c + unsigned char *inbuf, *fontbuf, *bigfontbuf; + unsigned int inputlth, fontbuflth, fontsize, height, width; + unsigned int bigfontbuflth, bigfontsize, bigheight, bigwidth; +- unsigned char *ptr; ++ unsigned char *ptr = NULL; + struct unicode_list *uclistheads; + struct kbdfile *fp = NULL; + int i; diff --git a/SOURCES/kbdinfo.1 b/SOURCES/kbdinfo.1 new file mode 100644 index 0000000..da84f76 --- /dev/null +++ b/SOURCES/kbdinfo.1 @@ -0,0 +1,33 @@ +.TH KBDINFO 1 "June 2011" +.SH NAME +kbdinfo \- obtain information about the status of a console +.SH SYNOPSIS +\fBkbdinfo\fR [\-C \fIDEVICE\fR] getmode [text|graphics] +.LP +\fBkbdinfo\fR [\-C \fIDEVICE\fR] gkbmode [raw|xlate|mediumraw|unicode] +.LP +\fBkbdinfo\fR [\-C \fIDEVICE\fR] gkbmeta [metabit|escprefix] +.LP +\fBkbdinfo\fR [\-C \fIDEVICE\fR] gkbled [scrolllock|numlock|capslock] +.SH DESCRIPTION +.B kbdinfo +is an interface to KDGETMODE, GKBMODE, GKBMETA and GKBLED ioctls. Its +primary use case is to query the status of the given +.I CONSOLE +(or the currently active one, if no \-C option is present) from a shell +script. +.LP +If the final value argument is not specified, +.B kbdinfo +will print the result of the desired ioctl to the standard output. +Otherwise, the given value is compared to the actual result, and the +utility will exit with a status code of 0 for a match, 1 otherwise. No +text is printed for this style of invocation. +.SH "SEE ALSO" +.BR kbd_mode (1) +.SH AUTHOR +kbdinfo is Copyright \(co 2011 Alexey Gladkov +. +.LP +This manual page was written by Michael Schutte for +the Debian GNU/Linux system (but may be used by others). diff --git a/SOURCES/vlock.pamd b/SOURCES/vlock.pamd new file mode 100644 index 0000000..d2d47e5 --- /dev/null +++ b/SOURCES/vlock.pamd @@ -0,0 +1,3 @@ +#%PAM-1.0 +auth include system-auth +account required pam_permit.so diff --git a/SOURCES/xml2lst.pl b/SOURCES/xml2lst.pl new file mode 100644 index 0000000..96cf01e --- /dev/null +++ b/SOURCES/xml2lst.pl @@ -0,0 +1,231 @@ +#!/usr/bin/perl + +# converts the .xml file to the old format .lst file +# +# Usage: +# +# perl xml2lst.pl < filename.xml > filename.lst +# +# author Ivan Pascal +# modified by Vitezslav Crhonek + +$doc = new_document( 0, ''); +parse('', $doc); + +($reg) = node_by_name($doc, '/xkbConfigRegistry'); +@models = node_by_name($reg, 'modelList/model/configItem'); +@layouts = node_by_name($reg, 'layoutList/layout/configItem'); +@options = node_by_name($reg, 'optionList/group/configItem'); + +for $i (@layouts) { + ($name) = node_by_name($i, 'name'); + @variants = node_by_name($i, '../variantList/variant/configItem'); + for $v (@variants) { + ($variant) = node_by_name($v, 'name'); + printf("%s %s\n", text_child($name), text_child($variant)); + } +} + +sub with_attribute { + local ($nodelist, $attrexpr) = @_; + local ($attr, $value) = split (/=/, $attrexpr); + local ($node, $attrvalue); + if (defined $value && $value ne '') { + $value =~ s/"//g; + foreach $node (@{$nodelist}) { + $attrvalue = node_attribute($node, $attr); + if (defined $attrvalue && $attrvalue eq $value) { + return $node; + } + } + } else { + foreach $node (@{$nodelist}) { + if (! defined node_attribute($node, $attr)) { + return $node; + } + } + } + undef; +} + +# Subroutines + +sub parse { + local $intag = 0; + my (@node_stack, $parent); + $parent = @_[1]; + local ($tag, $text); + + while (<>) { + chomp; + @str = split /([<>])/; + shift @str if ($str[0] eq '' || $str[0] =~ /^[ \t]*$/); + + while (scalar @str) { + $token = shift @str; + if ($token eq '<') { + $intag = 1; + if (defined $text) { + add_text_node($parent, $text); + undef $text; + } + } elsif ($token eq '>') { + $intag = 0; + if ($tag =~ /^\/(.*)/) { # close tag + $parent = pop @node_stack; + } elsif ($tag =~ /^([^\/]*)\/$/) { + empty_tag($parent, $1); + } else { + if (defined ($node = open_tag($parent, $tag))) { + push @node_stack, $parent; + $parent = $node; + } + } + undef $tag; + } else { + if ($intag == 1) { + if (defined $tag) { + $tag .= ' '. $token; + } else { + $tag = $token; + } + } else { + if (defined $text) { + $text .= "\n" . $token; + } else { + $text = $token; + } + } + } + } + } +} + +sub new_document { + $doc = new_node( 0, '', 'DOCUMENT'); + $doc->{CHILDREN} = []; + return $doc; +} + +sub new_node { + local ($parent_node, $tag, $type) = @_; + + my %node; + $node{PARENT} = $parent_node; + $node{TYPE} = $type; + + if ($type eq 'COMMENT' || $type eq 'TEXT') { + $node{TEXT} = $tag; + $node{NAME} = $type; + return \%node; + } + + local ($tname, $attr) = split(' ', $tag, 2); + $node{NAME} = $tname; + + if (defined $attr && $attr ne '') { + my %attr_table; + local @attr_list = split ( /"/, $attr); + local ($name, $value); + while (scalar @attr_list) { + $name = shift @attr_list; + $name =~ s/[ =]//g; + next if ($name eq ''); + $value = shift @attr_list; + $attr_table{$name} =$value; + } + $node{ATTRIBUTES} = \%attr_table; + } + return \%node; +} + +sub add_node { + local ($parent_node, $node) = @_; + push @{$parent_node->{CHILDREN}}, $node; + + local $tname = $node->{NAME}; + if (defined $parent_node->{$tname}) { + push @{$parent_node->{$tname}}, $node + } else { + $parent_node->{$tname} = [ $node ]; + } +} + +sub empty_tag { + local ($parent_node, $tag) = @_; + local $node = new_node($parent_node, $tag, 'EMPTY'); + add_node($parent_node, $node); +} + +sub open_tag { + local ($parent_node, $tag) = @_; + local $node; + + if ($tag =~ /^\?.*/ || $tag =~ /^\!.*/) { + $node = new_node($parent_node, $tag, 'COMMENT'); + add_node($parent_node, $node); + undef; return; + } else { + $node = new_node($parent_node, $tag, 'NODE'); + $node->{CHILDREN} = []; + add_node($parent_node, $node); + return $node; + } +} + +sub add_text_node { + local ($parent_node, $text) = @_; + local $node = new_node($parent_node, $text, 'TEXT'); + add_node($parent_node, $node); +} + +sub node_by_name { + local ($node, $name) = @_; + local ($tagname, $path) = split(/\//, $name, 2); + + my @nodelist; + + if ($tagname eq '') { + while ($node->{PARENT} != 0) { + $node = $node->{PARENT}; + } + sublist_by_name($node, $path, \@nodelist); + } else { + sublist_by_name($node, $name, \@nodelist); + } + return @nodelist; +} + +sub sublist_by_name { + local ($node, $name, $res) = @_; + local ($tagname, $path) = split(/\//, $name, 2); + + if (! defined $path) { + push @{$res}, (@{$node->{$tagname}}); + return; + } + + if ($tagname eq '..' && $node->{PARENT} != 0) { + $node = $node->{PARENT}; + sublist_by_name($node, $path, $res); + } else { + local $n; + for $n (@{$node->{$tagname}}) { + sublist_by_name($n, $path, $res); + } + } +} + +sub node_attribute { + local $node = @_[0]; + if (defined $node->{ATTRIBUTES}) { + return $node->{ATTRIBUTES}{@_[1]}; + } + undef; +} + +sub text_child { + local ($node) = @_; + local ($child) = node_by_name($node, 'TEXT'); + return $child->{TEXT}; +} diff --git a/SPECS/kbd.spec b/SPECS/kbd.spec new file mode 100644 index 0000000..196b61f --- /dev/null +++ b/SPECS/kbd.spec @@ -0,0 +1,844 @@ +# {_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.6.4 +Release: 5%{?dist} +Summary: Tools for configuring the console (keyboard, virtual terminals, etc.) +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 +Source1: kbd-latsun-fonts.tar.bz2 +Source2: kbd-latarcyrheb-32.tar.bz2 +Source3: xml2lst.pl +Source4: vlock.pamd +Source5: kbdinfo.1 +Source6: cz-map.patch +# Patch0: puts additional information into man pages +Patch0: kbd-1.15-keycodes-man.patch +# Patch1: sparc modifications +Patch1: kbd-1.15-sparc.patch +# Patch2: adds default unicode font to unicode_start script +Patch2: kbd-1.15-unicode_start.patch +# 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 +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: initializes variable (SAST) +Patch7: kbd-2.6.4-initialize-variable.patch + +BuildRequires: gcc, bison, flex, gettext, pam-devel, check-devel, automake +BuildRequires: console-setup, xkeyboard-config +BuildRequires: make +Requires: %{name}-misc = %{version}-%{release} +Requires: %{name}-legacy = %{version}-%{release} +# Be sure that system is after UsrMove +Conflicts: filesystem < 3 +Provides: vlock = %{version} +Conflicts: vlock <= 1.3 +Obsoletes: vlock < 1.3-34 + +%description +The %{name} package contains tools for managing a Linux +system's console's behavior, including the keyboard, the screen +fonts, the virtual terminals and font files. + +%package misc +Summary: Data for kbd package +BuildArch: noarch + +%description misc +The %{name}-misc package contains data for kbd package - console fonts, +keymaps etc. Please note that %{name}-misc is not helpful without kbd. + +%package legacy +Summary: Legacy data for kbd package +BuildArch: noarch + +%description legacy +The %{name}-legacy package contains original keymaps for kbd package. +Please note that %{name}-legacy is not helpful without kbd. + +%prep +%setup -q -a 1 -a 2 +cp -fp %{SOURCE3} . +cp -fp %{SOURCE6} . +%autopatch -p1 +aclocal +autoconf + +# 7-bit maps are obsolete; so are non-euro maps +pushd data/keymaps/i386 +cp qwerty/pt-latin9.map qwerty/pt.map +cp qwerty/sv-latin1.map qwerty/se-latin1.map + +mv azerty/fr.map azerty/fr-old.map +cp azerty/fr-latin9.map azerty/fr.map + +cp azerty/fr-latin9.map azerty/fr-latin0.map # legacy alias + +# Rename conflicting keymaps +mv fgGIod/trf.map fgGIod/trf-fgGIod.map +mv olpc/es.map olpc/es-olpc.map +mv olpc/pt.map olpc/pt-olpc.map +mv qwerty/cz.map qwerty/cz-qwerty.map +popd + +# remove obsolete "gr" translation +pushd po +rm -f gr.po gr.gmo +popd + +# Convert to utf-8 +iconv -f iso-8859-1 -t utf-8 < "ChangeLog" > "ChangeLog_" +mv "ChangeLog_" "ChangeLog" + +%build +%configure --prefix=%{_prefix} --datadir=%{kbd_datadir} --mandir=%{_mandir} --localedir=%{_datadir}/locale --enable-nls +%make_build + +%install +%make_install + +# ro_win.map.gz is useless +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%{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%{kbd_datadir}/keymaps/i386/qwerty/ko.map.gz + +# 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,\,%{_bindir}/kbd_mode,g;s,\,%{_bindir}/setfont,g' \ + $RPM_BUILD_ROOT%{_bindir}/unicode_start + +# install kbdinfo manpage +gzip -c %SOURCE5 > $RPM_BUILD_ROOT/%{_mandir}/man1/kbdinfo.1.gz + +# 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%{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%{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 -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 -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%{kbd_datadir}/keymaps/xkb/* | xargs rm -f + +# 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} + +%check +%ifnarch s390x +make check +%endif + +%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/* +%{_bindir}/* +%{_mandir}/*/* +%config(noreplace) %{_sysconfdir}/pam.d/vlock + +%files misc +%{kbd_datadir} +%exclude %{kbd_datadir}/keymaps/legacy + +%files legacy +%{kbd_datadir}/keymaps/legacy + +%changelog +* Fri Oct 25 2024 MSVSphere Packaging Team - 2.6.4-5 +- Rebuilt for MSVSphere 10 + +* Mon Jul 29 2024 Vitezslav Crhonek - 2.6.4-5 +- Initialize variable to avoid possible uninitialized use + Resolves: RHEL-40728 + +* Mon Jun 24 2024 Troy Dawson - 2.6.4-4 +- Bump release for June 2024 mass rebuild + +* Wed Jan 24 2024 Fedora Release Engineering - 2.6.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 2.6.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Dec 15 2023 Vitezslav Crhonek - 2.6.4-1 +- Update to kbd-2.6.4 + Resolves: #2254010 + +* Wed Sep 20 2023 Vitezslav Crhonek - 2.6.3-1 +- Update to kbd-2.6.3 + Resolves: #2239620 + +* Thu Aug 24 2023 Vitezslav Crhonek - 2.6.2-1 +- Update to kbd-2.6.2 + Resolves: #2232126 + +* Thu Jul 20 2023 Fedora Release Engineering - 2.6.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Mon Jul 03 2023 Vitezslav Crhonek - 2.6.1-1 +- Update to kbd-2.6.1 + Resolves: #2218174 + +* Tue Jun 13 2023 Vitezslav Crhonek - 2.6.0-1 +- Update to kbd-2.6.0 + Resolves: #2214279 + +* Fri May 26 2023 Vitezslav Crhonek - 2.5.1-6 +- SPDX migration + +* Tue Feb 21 2023 Vitezslav Crhonek - 2.5.1-5 +- Update patch adding compose rules for converted cz layout + Resolves: #2171583 + +* Thu Jan 19 2023 Fedora Release Engineering - 2.5.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Sep 21 2022 Vitezslav Crhonek - 2.5.1-3 +- Require kbd-legacy in main kbd package again + Resolves: #2127513 + +* Thu Jul 21 2022 Fedora Release Engineering - 2.5.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jun 21 2022 Vitezslav Crhonek - 2.5.1-1 +- Update to kbd-2.5.1 + Resolves: #2097840 + +* Wed Jun 08 2022 Vitezslav Crhonek - 2.5.0-1 +- Update to kbd-2.5.0 + Resolves: #2092957 + +* Thu Jan 20 2022 Fedora Release Engineering - 2.4.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Oct 21 2021 Adam Williamson - 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 - 2.4.0-7 +- Use default Finnish xkb-converted layout + Resolves: #2001787 + +* Thu Jul 22 2021 Fedora Release Engineering - 2.4.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu May 20 2021 Vitezslav Crhonek - 2.4.0-5 +- Fix setfont exit code + +* Tue Apr 27 2021 Vitezslav Crhonek - 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 - 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 - 2.4.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Dec 16 2020 Vitezslav Crhonek - 2.4.0-1 +- Update to kbd-2.4.0 + Resolves: #1908123 + +* Thu Oct 29 2020 Vitezslav Crhonek - 2.3.0-4 +- Don't require kbd-legacy in main kbd package anymore + Resolves: #1891811 + +* Wed Sep 23 2020 Vitezslav Crhonek - 2.3.0-3 +- Exclude test library instead of removing it to fix --nocheck builds + Resolves: #1881515 + +* Fri Aug 28 2020 Adam Williamson - 2.3.0-2 +- Rebuild with grep #1872913 fix to correctly drop non-ASCII layouts + Resolves: #1872922 + +* Wed Jul 29 2020 Vitezslav Crhonek - 2.3.0-1 +- Make changes in converted layouts conditionally +- Use make macros, patch by Tom Stellard + (https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro) +- Update to kbd-2.3.0 + Resolves: #1855867 + +* Tue Jul 28 2020 Fedora Release Engineering - 2.2.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Mar 17 2020 Vitezslav Crhonek - 2.2.0-3 +- Use upstream test suite in %%check + +* Thu Mar 05 2020 Vitezslav Crhonek - 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 - 2.2.0-1 +- Update to kbd-2.2.0 + Resolves: #1742036 + +* Wed Jan 29 2020 Fedora Release Engineering - 2.0.4-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jul 25 2019 Fedora Release Engineering - 2.0.4-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 2.0.4-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Nov 28 2018 Vitezslav Crhonek - 2.0.4-12 +- Apply only tty non-breaking fixes from -10 + +* Tue Nov 13 2018 Adam Williamson - 2.0.4-11 +- Drop fixes from -10 for now as they are breaking ttys (#1649531) + +* Mon Nov 12 2018 Vitezslav Crhonek - 2.0.4-10 +- Fix issues detected by static analysis + +* Mon Aug 13 2018 Vitezslav Crhonek - 2.0.4-9 +- Remove the link from open to openvt + (related discussion and rationale in Debian bug tracker, bug #732796) + +* Mon Jul 30 2018 Peter Robinson 2.0.4-8 +- Drop initscripts Require, use %%license + +* Fri Jul 13 2018 Fedora Release Engineering - 2.0.4-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 21 2018 Vitezslav Crhonek - 2.0.4-6 +- Add BuildRequires gcc +- Escape macro in comment, remove Group tag + +* Wed Feb 07 2018 Fedora Release Engineering - 2.0.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 2.0.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 2.0.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 2.0.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Jan 11 2017 Vitezslav Crhonek - 2.0.4-1 +- Update to kbd-2.0.4 + Resolves: #1411174 + +* Tue Oct 11 2016 Vitezslav Crhonek - 2.0.3-4 +- Fix FTBFS + Resolves: #1381878 + +* Thu Feb 04 2016 Fedora Release Engineering - 2.0.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Aug 06 2015 Vitezslav Crhonek - 2.0.3-2 +- Add compose rules to generated cz.map + Resolves: #1181581 + +* Wed Jul 15 2015 Vitezslav Crhonek - 2.0.3-1 +- Update to kbd-2.0.3 + Resolves: #1242684 + +* Wed Jun 17 2015 Fedora Release Engineering - 2.0.2-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat Feb 21 2015 Till Maas - 2.0.2-6 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Mon Oct 06 2014 Vitezslav Crhonek - 2.0.2-5 +- Rename and keep Finnish xkb converted layout (patch by Marko Myllynen) + Related: #1117891 + +* Sat Aug 16 2014 Fedora Release Engineering - 2.0.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Tue Aug 12 2014 Vitezslav Crhonek - 2.0.2-3 +- Fix unicode_start hardcodes font + Resolves: #1101007 + +* Wed Jul 16 2014 Vitezslav Crhonek - 2.0.2-2 +- Remove Finnish xkb converted layout + Resolves: #1117891 + +* Tue Jul 08 2014 Vitezslav Crhonek - 2.0.2-1 +- Update to kbd-2.0.2 + +* Sun Jun 08 2014 Fedora Release Engineering - 2.0.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon Feb 17 2014 Vitezslav Crhonek - 2.0.1-6 +- Add man page for kbdinfo, link open man page to openvt man page + +* Wed Nov 27 2013 Vitezslav Crhonek - 2.0.1-5 +- Add missing patch for loadkeys search path + +* Tue Nov 26 2013 Vitezslav Crhonek - 2.0.1-4 +- Add xkb and legacy keymaps subdirs to loadkyes search path, remove symlinks + Related: #1028207 +- Don't convert layouts that can't input ASCII (patch by Adam Williamson) + Resolves: #1031848 +- Fix vlock doesn't perform PAM account management or credential reinitialization + (patch by Dmitry V. Levin) + Resolves: #913311 + +* Wed Nov 06 2013 Vitezslav Crhonek - 2.0.1-3 +- Add PAM config for vlock + Resolves: #913309 + +* Mon Nov 04 2013 Vitezslav Crhonek - 2.0.1-2 +- Fix URL +- Remove source files already included in upstream tarball + +* Mon Nov 04 2013 Vitezslav Crhonek - 2.0.1-1 +- Update to kbd-2.0.1 + +* Sat Aug 03 2013 Fedora Release Engineering - 1.15.5-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Thu May 23 2013 Vitezslav Crhonek - 1.15.5-8 +- Add vlock to obsoletes + +* Wed May 22 2013 Vitezslav Crhonek - 1.15.5-7 +- Convert also plain layouts (no variant), point relevant symlinks to them + +* Tue May 21 2013 Vitezslav Crhonek - 1.15.5-6 +- Original keymaps moved to legacy dir, created symlinks to xkb keymaps + +* Thu Feb 21 2013 Vitezslav Crhonek - 1.15.5-5 +- Fix decimal separator in Swiss German keyboard layout + Resolves: #882529 + +* Thu Feb 14 2013 Fedora Release Engineering - 1.15.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Jan 22 2013 Vitezslav Crhonek - 1.15.5-3 +- Include xkb layouts from xkeyboard-config converted to console keymaps +- Add version to vlock provides + Resolves: #902564 + +* Mon Jan 21 2013 Vitezslav Crhonek - 1.15.5-2 +- Fix loadkeys regression + Resolves: #902259 + +* Mon Jan 14 2013 Vitezslav Crhonek - 1.15.5-1 +- Update to kbd-1.15.5 (removed kbd-1.15-resizecon-x86_64.patch, + kbd-1.15-defkeymap.patch, kbd-1.15.3-fix-es-translation.patch, + kbd-1.15.3-loadkeys-d.patch) + +* Thu Sep 13 2012 Vitezslav Crhonek - 1.15.3-8 +- Fix link to upstream tarball + +* Tue Aug 28 2012 Vitezslav Crhonek - 1.15.3-7 +- Fix issues found by fedora-review utility in the spec file + +* Thu Jul 19 2012 Fedora Release Engineering - 1.15.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jan 13 2012 Fedora Release Engineering - 1.15.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Dec 13 2011 Vitezslav Crhonek - 1.15.3-4 +- Ship double scaled latarcyrheb console font for high resolution screens + (created by Tom Horsley) + Resolves: #617768 + +* Mon Oct 24 2011 Vitezslav Crhonek - 1.15.3-3 +* Fix loadkeys -d option (patch by Jaroslav Skarvada) + Resolves: #744567 + +* Tue Aug 23 2011 Vitezlsav Crhonek - 1.15.3-2 +- Add missing dumpkeys option to man page + Resolves: #732121 + +* Mon Aug 22 2011 Vitezslav Crhonek - 1.15.3-1 +- Update to kbd-1.15.3 + +* Thu Apr 21 2011 Vitezslav Crhonek - 1.15.2-3 +- Add French Canadian Dvorak keymap + Resolves: #680989 + +* Mon Feb 07 2011 Fedora Release Engineering - 1.15.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Jan 5 2011 Vitezslav Crhonek - 1.15.2-1 +- Update to kbd-1.15.2 (removed kbd-1.15-quiet_doc.patch and romanian keymaps, both are + part of the upstream tarball now) + +* Thu Jun 24 2010 Vitezslav Crhonek - 1.15-11 +- Ship /lib/kbd in separate subpackage + +* Mon Jun 14 2010 Vitezslav Crhonek - 1.15-10 +- Fix name referring to default keymap + +* Wed Aug 26 2009 Karsten Hopp 1.15-9 +- drop excludearch s390x, we need this package to be able to build other packages on s390x + +* Fri Jul 24 2009 Fedora Release Engineering - 1.15-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu Mar 5 2009 Vitezslav Crhonek - 1.15-7 +- Add loadkeys 'q' option to loadkeys manpage and --help + Resolves: #487538 + +* Mon Mar 2 2009 Vitezslav Crhonek - 1.15-6 +- Remove static loadkeys binary (it's not needed anymore) + +* Wed Feb 25 2009 Fedora Release Engineering - 1.15-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Feb 6 2009 Vitezslav Crhonek - 1.15-4 +- Merge review (drop Provides/Obsoletes, change Prereq to Requires, + add URL, convert ChangeLog to utf-8, replace locale destination + with macro, add COPYING and add dvorak documentation) + Resolves: #225958 + +* Thu Jan 29 2009 Vitezslav Crhonek - 1.15-3 +- Rename conflicting keymaps to have unique names + Resolves: #481674 + +* Mon Jan 12 2009 Vitezslav Crhonek - 1.15-2 +- Move loadkeys to /bin + +* Thu Jan 8 2009 Vitezslav Crhonek - 1.15-1 +- Update to kbd-1.15 + +* Mon Sep 8 2008 Vitezslav Crhonek - 1.12-32 +- Rediff all patches to work with patch --fuzz=0 +- Add static loadkeys + Related: #451672 + +* Tue Feb 26 2008 Vitezslav Crhonek - 1.12-31 +- Fix trq.map + Resolves: #216710 + +* Fri Feb 22 2008 Vitezslav Crhonek - 1.12-30 +- Rebuild fo GCC 4.3 + +* Tue Nov 27 2007 Vitezslav Crhonek - 1.12-29 +- Stop kbdrate using consolehelper + Resolves: #393231 + +* Thu Nov 15 2007 Vitezslav Crhonek - 1.12-28 +- Fix ro.map.gz, add ro_std.map.gz, drop ro_win.map.gz, + add Lat2-Terminus16.psf console font (many thanks to Alexandru Szasz + ) + Resolves: #253892 + +* Wed Oct 17 2007 Vitezslav Crhonek - 1.12-27 +- Add resizecons (with man page) for x86_64 + Resolves: #333651 + +* Mon Oct 15 2007 Vitezslav Crhonek - 1.12-26 +- Fix ro.map to generate right unicode for s, S, t, T with comma +- Fix LatArCyrHeb-16 unicode mapping table to show comma-version + of s, S, t, T and cedilla-version of s, S, t, T as the same glyph + (because there is no font in kbd for comma-version) + Resolves: #329071 + +* Tue Sep 18 2007 Vitezslav Crhonek - 1.12-25 +- Add new romanian keymap + Resolves: #253892 + +* Mon Aug 27 2007 Vitezslav Crhonek - 1.12-24 +- Fix license +- Symlink sr-cy layout to sr-latin + Resolves: #253957 + +* Tue Jul 3 2007 Vitezslav Crhonek - 1.12-23 +- Rebuild + +* Tue Jul 3 2007 Vitezslav Crhonek - 1.12-22 +- Fix sun12x22 font missing unicode mapping table + Resolves: #244628 + +* Tue Jan 9 2007 Miloslav Trmac - 1.12-21 +- Add a "ko" (Korean) keyboard layout, equivalent to the "us" layout + Resolves: #220151 + +* Thu Dec 7 2006 Miloslav Trmac - 1.12-20 +- Document that setkeycodes doesn't affect USB keyboards and that the kernel + doesn't provide the raw scan codes by default + Resolves: #211803 + +* Tue Oct 31 2006 Miloslav Trmac - 1.12-19 +- Ship "el" translation instead of the obsolete "gr" translation + Resolves: #210749 +- Fix %% quoting in %%changelog + +* Fri Sep 29 2006 Miloslav Trmac - 1.12-18 +- Add a missing tilde to U+00E3 in latarcyrheb-sun16.psfu (#204470) + +* Fri Jul 14 2006 Jesse Keating - 1.12-17 +- Obsoletes/Provides open +- Create a symlink from open to openvt + +* Wed Jul 12 2006 Jesse Keating - 1.12-16.1 +- rebuild + +* Sun Jul 9 2006 Miloslav Trmac - 1.12-16 +- Don't include on SPARC (#198040, patch by Dennis Gilmore + ) + +* Mon May 29 2006 Miloslav Trmac - 1.12-15 +- Fix missing BuildRequires (#193406) + +* Mon Mar 27 2006 Miloslav Trmac - 1.12-14 +- Don't install resizecons.8 on non-x86 (#186877, patch by Keiichi Mori + ) + +* Fri Feb 10 2006 Jesse Keating - 1.12-13.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 1.12-13.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Jan 20 2006 Miloslav Trmac - 1.12-13 +- Fix build with new coreutils +- Hardcode paths in unicode_start to avoid a few file lookups (#178329) +- Drop unnecessary Prereq: sed mktemp + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Thu Dec 1 2005 Miloslav Trmac - 1.12-12 +- Don't reload the keymap in unicode_start (#172425) + +* Fri Nov 11 2005 Miloslav Trmac - 1.12-11 +- Don't ship character set lists (they are already in glibc-common) and an + obsolete copy of kbd.FAQ + +* Fri May 20 2005 Miloslav Trmac - 1.12-10 +- Don't attempt to open directories as source files (#141634, original patch by + Paul Nasrat) + +* Tue May 17 2005 Miloslav Trmac - 1.12-9 +- Fix another violation of C aliasing rules (#157720, patch by Jan Kratochvil) + +* Sat Mar 12 2005 Miloslav Trmac - 1.12-8 +- Fix violation of C aliasing rules (#150440) + +* Sun Mar 6 2005 Miloslav Trmac - 1.12-7 +- Don't run ldconfig +- Don't strip executables + +* Fri Mar 4 2005 Miloslav Trmac - 1.12-6 +- Rebuild with gcc4 + +* Sun Feb 20 2005 Miloslav Trmac - 1.12-5 +- Put "Meta_acute" back in German keymaps, just ignore it in (loadkeys -u) + (patch by Jochen Schmitt) +- Don't ship patch backup files, simpler way + +* Sat Feb 19 2005 Miloslav Trmac - 1.12-4 +- Don't ship a patch backup file +- Mention in setfont.8 that 512-glyph fonts reduce the number of available + colors (#140935, patch by Dmitry Butskoj) +- Remove "Meta_acute" from German keymaps (#143124) +- Make the %%triggerun script condition more precise, ignore failure of the + script + +* Mon Feb 14 2005 Adrian Havill +- rebuilt + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Thu Feb 26 2004 Adrian Havill +- update to 1.12 + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Wed Jan 14 2004 Bill Nottingham 1.08-12 +- remove speakup patch at request of author + +* Wed Jan 14 2004 Bill Nottingham 1.08-12 +- remove speakup patch at request of author + +* Fri Oct 10 2003 Bill Nottingham 1.08-11 +- remove keytable init script (#106783) + +* Tue Aug 12 2003 Adrian Havill 1.08-10.1 +- bump for RHEL + +* Tue Aug 12 2003 Adrian Havill 1.08-10 +- apply the rukbd patch (#78218) + +* Thu Jul 31 2003 Adrian Havill 1.08-9 +- don't print "plus before..." warnings about non-supported capslock + in unimode (#81855) + +* Wed Jul 30 2003 Adrian Havill 1.08-8 +- replaced Russian keyboard map with working UTF-8 equivalent (#79338) + +* Thu Jul 24 2003 Adrian Havill 1.08-7 +- make euro/latin-9 the default instead of latin-1 and 7-bit (#97013) +- fix swedish keymap; se, not sv (#88791) +- add fr-latin0 legacy alias of fr-latin-9 (#88324) +- add ".map" ext to filename param of init script (#90562) + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Thu Mar 06 2003 Florian La Roche +- build new rpm + +* Fri Feb 21 2003 Florian La Roche +- ExcludeArch mainframe + +* Thu Jan 30 2003 Bill Nottingham 1.08-4 +- remove condrestart from initscript + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Fri Dec 6 2002 Nalin Dahyabhai 1.08-2 +- only output terminal unicode init sequence if both stdout and stderr are + connected to terminals, so that it doesn't show up when script outputs + get piped to files + +* Fri Nov 22 2002 Nalin Dahyabhai 1.08-1 +- update to 1.08 +- drop updates which went mainline + +* Mon Nov 11 2002 Nalin Dahyabhai 1.06-27 +- add detached signature +- remove directory names from PAM configuration so that the same config file + can be used for any arch on multilib systems + +* Wed Sep 4 2002 Bill Nottingham 1.06-26 +- don't munge /etc/sysconfig/i18n + +* Tue Sep 3 2002 Bill Nottingham 1.06-25 +- don't run setsysfont in upgrade trigger on console-tools + +* Thu Aug 29 2002 Jakub Jelinek 1.06-24 +- use cyr-sun16 cyrillic chars in latarcyrheb-sun16 font + instead of old LatArCyrHeb-16 chars +- add Euro character to latarcyrheb-sun16 +- use latarcyrheb-sun16 by default in unicode_start script + +* Tue Aug 27 2002 Jakub Jelinek 1.06-23 +- add back lat[02]-sun16 fonts plus latarcyrheb-sun16 font + +* Thu Aug 22 2002 Karsten Hopp +- needs to conflict with older util-linux packages + (kbdrate moved between packages) + +* Tue Aug 13 2002 Bill Nottingham 1.06-21 +- remove Evil Hack in favor of slightly-less-evil-hack in initscripts + +* Tue Jul 9 2002 Bill Nottingham 1.06-20 +- fix speakup keymap names + +* Tue Jul 09 2002 Phil Knirsch 1.06-19 +- Evil hack to make setfont work correctly on all consoles (#68018) + +* Thu Jun 27 2002 Bill Nottingham 1.06-18 +- move unicode_stop to /bin too +- fix path to loadkeys in keytable.init +- add in speakup keymaps + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Tue Jun 11 2002 Nalin Dahyabhai 1.06-16 +- fix incorrect path in console.apps configuration file + +* Thu May 30 2002 Bill Nottingham 1.06-14 +- move some more stuff to /bin (unicode_start and dependencies) + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Mon Feb 25 2002 Bernhard Rosenkraenzer 1.06-12 +- Rebuild in new environment + +* Wed Jan 30 2002 Bernhard Rosenkraenzer 1.06-11 +- Oops, actually list the pam files in %%files + +* Tue Jan 29 2002 Bernhard Rosenkraenzer 1.06-10 +- Add and consolehelper'ify kbdrate + +* Tue Jan 29 2002 Bernhard Rosenkraenzer 1.06-9 +- Re-remove kbdrate + +* Thu Jan 24 2002 Bernhard Rosenkraenzer 1.06-7 +- Fix build in current environment +- Get rid of kbdrate, it's in util-linux these days + +* Wed Jul 18 2001 Matt Wilson +- added a patch (Patch4) that allows --tty= in setfont +- modified patch not to break translations + +* Tue Jul 3 2001 Bernhard Rosenkraenzer 1.06-4 +- Add cyrillic patches from leon@geon.donetsk.ua (#47144) + +* Tue Jun 26 2001 Bernhard Rosenkraenzer 1.06-3 +- Fix "Alt+AltGr=Compose" in qwertz-keyboards + +* Mon Jun 25 2001 Bernhard Rosenkraenzer 1.06-2 +- Fix "make install" and init script (#45327) + +* Sat Jun 16 2001 Than Ngo +- update to 1.0.6 +- use %%{_tmppath} +- use find_lang +- support new gettext +- remove some patch files, which are included in 1.0.6 +- fix to use RPM_OPT_FLAGS + +* Thu May 3 2001 Bernhard Rosenkraenzer 1.05-3 +- Fix up resizecons + +* Wed May 2 2001 Bernhard Rosenkraenzer 1.05-2 +- Build everything, obsoletes console-tools +- s/Copyright:/License:/ +- License is GPL, not just distributable +- Add our compose mappings from old console-tools +- Add triggerpostun -- console-tools magic to get sane fonts and mappings + +* Tue Apr 17 2001 Erik Troan +- initial packaging for kbdrate