Hello community,

here is the log from the commit of package kbd for openSUSE:Factory checked in 
at 2020-09-23 13:00:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kbd (Old)
 and      /work/SRC/openSUSE:Factory/.kbd.new.4249 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kbd"

Wed Sep 23 13:00:44 2020 rev:100 rq: version:2.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kbd/kbd.changes  2020-09-23 12:59:20.217774336 
+0200
+++ /work/SRC/openSUSE:Factory/.kbd.new.4249/kbd.changes        2020-09-23 
13:00:45.773857737 +0200
@@ -1,0 +2,679 @@
+Thu Sep 17 22:43:16 UTC 2020 - Stanislav Brabec <[email protected]>
+
+- Make kbdsettings working in both bash and dash (boo#1175040).
+
+-------------------------------------------------------------------
+Thu Sep 17 14:47:04 UTC 2020 - Stanislav Brabec <[email protected]>
+
+- Fix kbd-1.15.5-loadkeys-search-path.patch to prefer xkb keymaps
+  (boo#1176302).
+
+-------------------------------------------------------------------
+Thu Aug 20 11:34:32 UTC 2020 - Jiri Slaby <[email protected]>
+
+- add libkeymap-Fix-mk_mapname-for-the-plain-map.patch
+
+-------------------------------------------------------------------
+Tue Apr 21 13:08:11 UTC 2020 - Ludwig Nussel <[email protected]>
+
+- drop broken kbd command as well as guess_encoding (boo#1170067)
+- don't use subdirectory for legacy keymaps (boo#1166423)
+- use fdupes
+
+-------------------------------------------------------------------
+Tue Mar  3 02:25:10 CET 2020 - [email protected]
+
+- Update to version 2.2.0:
+  * setfont: Add option -d to double size of font.
+  * kbd_mode: Add -f option and deny dangerous mode switches
+    without it.
+  * Data files updates.
+  * Fix gcc warnings and error with gcc-10 (boo#1160273).
+  * Other fixes.
+  * For a full list of changes see:
+    https://git.kernel.org/pub/scm/linux/kernel/git/legion/kbd.git/log/
+- Update home page.
+- Refresh patches: kbd-1.15.2-dumpkeys-C-opt.patch,
+  kbd-1.15.2-setfont-no-cruft.patch,
+  kbd-1.15.5-loadkeys-search-path.patch.
+
+-------------------------------------------------------------------
+Thu Jan  9 22:35:51 UTC 2020 - Stefan Brüns <[email protected]>
+
+- Use a UTF-8 capable locale, otherwise ckbcomp will not not able
+  to do proper uppercase/lowercase conversions.
+- Rebase cz-map.patch after UTF-8 changes.
+- Skip compression/decompression of maps which are about to be
+  discarded later (~30%). Avoid zgrep, which is a shell script
+  spawning grep and gunzip for each input file.
+
+-------------------------------------------------------------------
+Thu Dec  5 12:15:22 UTC 2019 - [email protected]
+
+- Move pam.d/vlock to /usr/etc
+
+-------------------------------------------------------------------
+Thu Sep 19 09:05:55 UTC 2019 - Martin Vidner <[email protected]>
+
+- Allow YaST to select Iranian (Persian, Farsi) keyboard layout
+  (bsc#1092920)
+
+-------------------------------------------------------------------
+Thu Aug  2 08:06:01 UTC 2018 - [email protected]
+
+- fbtest.c: include <sys/sysmacros.h> for major/minor
+
+-------------------------------------------------------------------
+Thu May 24 16:14:57 CEST 2018 - [email protected]
+
+- Use %license instead of %doc [bsc#1082318]
+
+-------------------------------------------------------------------
+Thu Apr  5 17:32:03 CEST 2018 - [email protected]
+
+- Disable characters >=U+F000. These do not work properly
+  (bsc#1085432#c15, kbd-unicode-fxxx.patch).
+
+-------------------------------------------------------------------
+Thu Mar 15 17:04:06 CET 2018 - [email protected]
+
+- Do not cause error on UNICODE characters >= 0xF000 (e. g.
+  ligature fi) (bsc#1085432, kbd-unicode-fxxx.patch).
+
+-------------------------------------------------------------------
+Fri Jan 12 17:39:18 CET 2018 - [email protected]
+
+- Move initial NumLock handling from systemd back to kbd:
+  * Add kbdsettings service written by Thomas Blume (boo#1010880,
+    kbdsettings, kbdsettings.service, numlockbios.c,
+    update sysconfig.console and sysconfig.keyboard).
+  * Exclude numlockbios support for non x86 platforms
+    (kbdsettings-nox86.patch).
+- Drop references to KEYTABLE and COMPOSETABLE (boo#1010880#c32,
+  boo#1010880#c54,  sysconfig.keyboard.del, README.SUSE,
+  drop kbd.fillup).
+- Fix paths in kbd.pl.
+
+-------------------------------------------------------------------
+Wed Dec  6 13:30:49 UTC 2017 - [email protected]
+
+- Drop from some fill-up templates, a couple of sysconfig variables no
+  more read by systemd (fate#319454)
+
+  So the relevant settings can be defined in only one place.
+
+-------------------------------------------------------------------
+Thu Nov 23 13:40:21 UTC 2017 - [email protected]
+
+- Replace references to /var/adm/fillup-templates with new 
+  %_fillupdir macro (boo#1069468)
+
+-------------------------------------------------------------------
+Fri Oct 13 14:53:41 CEST 2017 - [email protected]
+
+- Add vlock.pamd PAM file (bsc#1056449#c8).
+- Clean spec file.
+
+-------------------------------------------------------------------
+Fri Sep 22 15:51:51 CEST 2017 - [email protected]
+
+- Version update to 2.0.4:
+  * translation updates
+  * support for U+202F
+  * minor fixes and code cleanup
+  * minor improvements and more characters support
+- Enable vlock (bsc#1056449, FATE#261).
+
+-------------------------------------------------------------------
+Sun Apr 30 04:31:25 UTC 2017 - [email protected]
+
+- call gzip -n to make build fully reproducible
+
+-------------------------------------------------------------------
+Thu Mar 23 23:23:20 UTC 2017 - [email protected]
+
+- Revert dropping of kdb-legacy Requires: There are still packages
+  and installation flows that needs this to be present
+  (boo#1027379).
+
+-------------------------------------------------------------------
+Sun Feb 12 23:37:52 UTC 2017 - [email protected]
+
+- Drop kdb-legacy Requires: No longer needed, and was always meant
+  to be temporary.
+
+-------------------------------------------------------------------
+Tue Jul 12 12:52:31 UTC 2016 - [email protected]
+
+- Version update to 2.0.3:
+  * Various small updates
+- Obsolete merged patch:
+  * kbd-1.15.5-br-abnt2-slash-question.patch
+- Quickly run over with spec-cleaner
+- Remove arch check for alpha and other unused platforms
+- Drop kbd.fillup.nonpc as it should not be needed nowdays
+
+-------------------------------------------------------------------
+Thu Jun 16 00:18:55 CET 2016 - [email protected]
+
+- Fix data/keymaps/i386/querty/br-abnt2.map
+  (boo#984958, kbd-1.15.5-br-abnt2-slash-question.patch)
+
+-------------------------------------------------------------------
+Thu Dec 10 16:31:10 CET 2015 - [email protected]
+
+- Fix missing dependency on coreutils for initrd macros (boo#958562)
+- Call missing initrd macro at postun (boo#958562)
+
+-------------------------------------------------------------------
+Fri Aug 21 10:50:21 UTC 2015 - [email protected]
+
+- Rename conflicting legacy keymaps:
+  * dvorak/no.map -> dvorak/no-dvorak.map
+  * fgGIod/trf.map -> fgGIod/trf-fgGIod.map
+  * olpc/pt.map -> olpc/pt-olpc.map
+  * qwerty/cz.map -> qwerty/cz-qwerty.map
+- i386/qwerty/sr-latin links to sr-cy
+- add compose rules to cz layout (rh#1181581)
+
+-------------------------------------------------------------------
+Mon Aug 10 11:53:48 UTC 2015 - [email protected]
+
+- genmap4systemd.sh: use 'abnt2' model for 'br' layouts, 'jp106'
+  model for 'jp' layouts and 'microsoftpro' for anything else
+  (instead of 'pc105' before) (FATE#318426)
+
+-------------------------------------------------------------------
+Tue Jul 21 10:05:35 UTC 2015 - [email protected]
+
+- added genmap4systemd.sh tool, which generates entries for 
+  systemd's /usr/share/systemd/kbd-model-map table from 
+  xkeyboard-config converted keymaps; entries are written to 
+  /usr/share/systemd/kbd-model-map.xkb-generated, so these can
+  easily be added to /usr/share/systemd/kbd-model-map by systemd
+  package (FATE#318426)
+
+-------------------------------------------------------------------
+Fri Jul 17 12:54:27 UTC 2015 - [email protected]
++++ 488 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/kbd/kbd.changes
++++ and /work/SRC/openSUSE:Factory/.kbd.new.4249/kbd.changes

Old:
----
  README.SuSE
  kbd-1.12-Meta-Tab.diff
  kbd-1.12-be-nice-to-kdm.diff
  kbd-1.12-cz-us-qwertz.diff
  kbd-1.12-docu-X11R6-xorg.diff
  kbd-1.12-dumpkeys-full.diff
  kbd-1.12-dumpkeys-ppc.diff
  kbd-1.12-el-locale-update.diff
  kbd-1.12-handle-small-table.diff
  kbd-1.12-happy-abuild.diff
  kbd-1.12-kbd_mode.diff
  kbd-1.12-loadkeys-C-opt.diff
  kbd-1.12-loadkeys-repstdout.diff
  kbd-1.12-mac-de.diff
  kbd-1.12-mac-dk.diff
  kbd-1.12-noclaudio.diff
  kbd-1.12-nohang-kbdrate2.diff
  kbd-1.12-nounicode-nontty.diff
  kbd-1.12-prtscr_no_sigquit.diff
  kbd-1.12-setfont-fpclose.diff
  kbd-1.12-setfont-no-cruft.diff
  kbd-1.12-showconsolefont-info.diff
  kbd-1.12-strip.diff
  kbd-1.12-swiss.diff
  kbd-1.12-unicode_scripts.diff
  kbd-1.12.diff
  kbd-1.12.lsm
  kbd-1.12.tar.bz2
  kbd.fillup
  kbd.fillup.nonpc
  kbd.init
  piofont_debug.diff
  sv-latin1-keycode10.diff
  testutf8.c

New:
----
  README.SUSE
  cz-map.patch
  fbtest.8
  fbtest.c
  genmap4systemd.sh
  kbd-1.15.2-docu-X11R6-xorg.patch
  kbd-1.15.2-dumpkeys-C-opt.patch
  kbd-1.15.2-prtscr_no_sigquit.patch
  kbd-1.15.2-setfont-no-cruft.patch
  kbd-1.15.2-sv-latin1-keycode10.patch
  kbd-1.15.2-unicode_scripts.patch
  kbd-1.15.5-loadkeys-search-path.patch
  kbd-2.0.2-comment-typo-qwerty.patch
  kbd-2.0.2-doshell-reference.patch
  kbd-2.0.2-euro-unicode.patch
  kbd-2.0.2-fix-bashisms.patch
  kbd-2.2.0-repack.tar.xz
  kbd-unicode-fxxx.patch
  kbdsettings
  kbdsettings-nox86.patch
  kbdsettings.service
  libkeymap-Fix-mk_mapname-for-the-plain-map.patch
  numlockbios.c
  vlock.pamd
  xml2lst.pl

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kbd.spec ++++++
++++ 652 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/kbd/kbd.spec
++++ and /work/SRC/openSUSE:Factory/.kbd.new.4249/kbd.spec

++++++ README.SUSE ++++++
Handling of composition of characters
=====================================

Most of the fonts have much more characters than you can reach directly
through the keyboard. To access all of them you may use showconsolefont,
deduce the decimal code and enter it by holding down <alt> and entering
the code via the keypad. There's a much better way, though:
Most characters may be entered via composition. Many characters are just
consisting of a standard character with some sort of accent or change.
Such characters can be composed by composition. Just press the <compose>
key, let it go again, enter the accent and then the letter.
Some examples: (Assuming Iso-Latin-1/9 character set:)
<compose> " a => ä
<compose> , c => ç
<compose> | S => $

Support for composition is unfortunately not contained in most keymaps.
Most lack two things:
(a) The <compose> key is not mapped
(b) The compose tables are not included

Look at the compose.* files in /usr/share/kbd/keymaps/include/:
(a) You find there two files for having the <compose> key mapped.
(b) You find there compose tables which are suitable for different
    character sets.

ad (a): winkeys:   The compose key will be mapped on the W*n menu key
        shiftctrl: The compose key will be mapped to Shift Ctrl.
        You can use both, if you like.
ad (b): latin, latinX, latin1.add, 8859_X: Contains the compose
        combinations suitable for the respective character set.
        Many people will want to use latin1 or latin1.add. Just
        using latin is also sort of an acceptable compromise for
        many Latin character sets.
        YOU MAY ONLY USE ONE OF THOSE.
        If you want the combination of more than one table, you
        have to create a file which includes what you want.

Please keep in mind, that all these settings only affect the console,
i.e. text mode.

                                Your SuSE team
++++++ cz-map.patch ++++++
--- cz.map.orig 2015-08-06 13:54:28.823257906 +0200
+++ cz.map      2015-08-06 13:54:49.338038186 +0200
@@ -39,7 +39,7 @@
 keycode 38 = +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l 
Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l 
Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l 
Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l 
Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 
Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L 
Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c 
+U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l 
Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c 
+U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L 
Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l 
+U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l 
Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l 
Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l 
Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l 
Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l 
Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l 
Meta_Control_l Meta_Control_l Meta_Control_l
 keycode 39 = +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 
dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar 
Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 
dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl 
Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar 
Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 
dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar 
Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 
dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl 
Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar 
Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 
dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar 
Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 
dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl 
Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar 
Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 
dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar 
Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 
dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl 
Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar 
Meta_dollar
 keycode 40 = U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df 
Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam 
Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 
U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe 
Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 
+U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe 
Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 
U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam 
Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe 
Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 
Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam 
Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 
U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe 
Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 
+U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe 
Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 
U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam 
Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe 
Meta_apostrophe
-keycode 41 = U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul 
Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde 
Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b 
U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum 
Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul 
Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 
U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon 
Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum 
Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul 
Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon 
Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul 
Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum 
nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave 
Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul 
Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum 
nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave 
Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul 
Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum 
nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave 
Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul 
Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum 
nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave 
Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul 
Meta_Control_asciicircum
+keycode 41 = U+003b dead_grave U+0060 U+007e nul Control_asciicircum nul 
Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde 
Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b 
U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum 
Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul 
Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 
U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon 
Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum 
Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul 
Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon 
Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul 
Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum 
nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave 
Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul 
Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum 
nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave 
Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul 
Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum 
nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave 
Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul 
Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum 
nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave 
Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul 
Meta_Control_asciicircum
 keycode 42 = Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift 
Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift 
Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift 
Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift 
Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift 
Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift 
Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift 
Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift 
Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift 
Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift
 keycode 43 = dead_diaeresis U+0027 U+005c U+007c Control_backslash 
Control_backslash Control_backslash Control_backslash Meta_apostrophe 
Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash 
Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash 
dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash 
Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe 
Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash 
Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c 
U+007c Control_backslash Control_backslash Control_backslash Control_backslash 
Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash 
Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash 
dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash 
Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe 
Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash 
Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c 
U+007c Control_backslash Control_backslash Control_backslash Control_backslash 
Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash 
Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash 
dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash 
Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe 
Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash 
Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c 
U+007c Control_backslash Control_backslash Control_backslash Control_backslash 
Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash 
Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash 
dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash 
Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe 
Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash 
Meta_Control_backslash Meta_Control_backslash
 keycode 44 = +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y 
Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y 
Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y 
Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y 
Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c 
Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less 
Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 
U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less 
Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 
+U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y 
Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y 
+U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y 
Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y 
Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y 
Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y 
Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y 
Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y 
Meta_Control_y Meta_Control_y Meta_Control_y
@@ -108,3 +108,49 @@
 keycode 127 = VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol
 keycode 121 = KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period 
KP_Period KP_Period
 strings as usual
+# dead_grave
+compose '`' 'u' to U+016F
+compose '`' 'U' to U+016E
+compose '`' 'z' to U+00B0
+compose '`' 'Z' to U+00B0
+# dead_acute
+compose '\'' 'a' to U+00E1
+compose '\'' 'A' to U+00C1
+compose '\'' 'e' to U+00E9
+compose '\'' 'E' to U+00C9
+compose '\'' 'i' to U+00ED
+compose '\'' 'I' to U+00CD
+compose '\'' 'o' to U+00F3
+compose '\'' 'O' to U+00D3
+compose '\'' 'u' to U+00FA
+compose '\'' 'U' to U+00DA
+compose '\'' 'y' to U+00FD
+compose '\'' 'Y' to U+00DD
+# dead_caron
+compose '^' 'u' to U+016F
+compose '^' 'U' to U+016E
+compose '^' 'c' to U+010D
+compose '^' 'C' to U+010C
+compose '^' 'd' to U+010F
+compose '^' 'D' to U+010E
+compose '^' 'e' to U+011B
+compose '^' 'E' to U+011A
+compose '^' 'n' to U+0148
+compose '^' 'N' to U+0147
+compose '^' 'r' to U+0159
+compose '^' 'R' to U+0158
+compose '^' 's' to U+0161
+compose '^' 'S' to U+0160
+compose '^' 't' to U+0165
+compose '^' 'T' to U+0164
+compose '^' 'z' to U+017E
+compose '^' 'Z' to U+017D
+# dead_diaeresis
+compose '"' 'a' to U+00E4
+compose '"' 'A' to U+00C4
+compose '"' 'e' to U+00EB
+compose '"' 'E' to U+00CB
+compose '"' 'o' to U+00F6
+compose '"' 'O' to U+00D6
+compose '"' 'u' to U+00FC
+compose '"' 'U' to U+00DC
++++++ fbtest.8 ++++++
'\" -*- coding: UTF-8 -*-
.\"
.\" Copyright 2008 Werner Fink, 2008 SUSE LINUX Products GmbH, Germany.
.\"
.\" This program is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 2 of the License, or
.\" (at your option) any later version.
.\"
.TH FBTEST 8 "May 6, 2008" "0.42" "International Support"
.SH NAME
fbtest \- test if a virtual console is mapped to a frame buffer devive
.SH SYNOPSIS
.B fbtest
.RB [ \-f \ \fI<fb_device>\fR]
.RB [ \-C \ \fI<vc_device>\fR]
.br
.B fbtest
.B \-\-help
.SH DESCRIPTION
The program
.BR fbtest (8)
is used to test if a virtual console, e.g.
.I /dev/tty1
is mapped on a frame buffer device.
.SH OPTIONS
.TP
.BR \-f ,\  \-\-fb = \fI<fb_device>\fR
This option specifies an other frame buffer device than
the default
.IR /dev/fb0 .
.TP
.BR \-C ,\  \-\-vc = \fI<vc_device>\fR
This option specifies an other virtual console than the default
.IR /dev/tty1 .
.SH EXIT STATUS
.IP \fB0\fR 5
The virtual console is mapped onto a frame buffer device.
.IP \fB1\fR 5
The virtual console is
.B not
mapped onto a frame buffer device.
.PP
.SH FILES
.I /dev/fb0
.br
.I /dev/tty<1...63>
.SH SEE ALSO
.BR fbset (8).
++++++ fbtest.c ++++++
/*
 * fbtest(.c)
 *
 * Copyright 2008 Werner Fink, 2008 SUSE LINUX Products GmbH, Germany.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 */

#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/sysmacros.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <fcntl.h>
#include <getopt.h>
#include <unistd.h>
#include <linux/fb.h>

static struct option options[] = {
    { "fb",   required_argument, 0, 'f'},
    { "vc",   required_argument, 0, 'C'},
    { "help", no_argument,       0, 'h'},
    { (const char*)0, 0, (int*)0, 0}
};

int main(int argc, char * argv[])
{
    struct fb_con2fbmap map = {1, -1};
    const char *base = basename(argv[0]);
    const char * fb = (char*)0;
    const char * vc = (char*)0;
    struct stat st;
    int c, fd;

    opterr = 0;
    while ((c = getopt_long(argc, argv, "hf:C:", options, (int *)0)) != -1) {
        switch (c) {
        case 'f':
            fb = optarg;
            break;
        case 'C':
            vc = optarg;
            break;
        case 'h':
            fprintf(stderr, "%s: Usage:\n    %s [-f <fb_device>] [-C 
<vc_device>]\n", base, base);
            fprintf(stderr, "Valid options are:\n");
            fprintf(stderr, "    -f <fb_device>       The frame buffer device 
(default /dev/fb0)\n");
            fprintf(stderr, "    -C <vc_device>       The virtual console 
device (default /dev/tty1)\n");
            return 0;
        case '?':
            fprintf(stdout, "%s: Invalid option for help use:\n    %s 
--help\n", base, base);
            return 1;
            break;
        default:
            break;
        }
    }

    if (fb == (char*)0) {
        fb = "/dev/fb/0";
        if (stat(fb, &st) < 0) {
            if (errno != ENOENT && errno != ENOTDIR) {
                fprintf(stderr, "%s: %s: %m\n", base, fb);
                return 1;
            }
            fb = "/dev/fb0";
            if (stat(fb, &st) < 0) {
                fprintf(stderr, "%s: %s: %m\n", base, fb);
                return 1;
            }
        }
    }

    if (vc == (char*)0)
        vc = "/dev/tty1";

    if (stat(vc, &st) < 0) {
        fprintf(stderr, "%s: %s: %m\n", base, vc);
        return 1;
    }

    if (major(st.st_rdev) != (dev_t)4) {
        errno = ECANCELED;
        fprintf(stderr, "%s: %s: %m\n", base, vc);
        return 1;
    }

    if ((fd = open(fb, O_RDONLY|O_NOCTTY)) < 0) {
        if (errno != ENODEV)
            fprintf(stderr, "%s: %s: %m\n", base, fb);
        return 1;
    }

    map.console = (typeof(map.console))minor(st.st_rdev);
    map.framebuffer = (typeof(map.framebuffer))-1;

    if (ioctl(fd, FBIOGET_CON2FBMAP, &map) < 0) {
        fprintf(stderr, "%s: %s: %m\n", base, fb);
        return 1;
    }

    return map.framebuffer > FB_MAX;
}
++++++ genmap4systemd.sh ++++++
#!/bin/bash

# Generate entries for systemd's /usr/share/systemd/kbd-model-map

if [ $# -eq 0 ]; then
  pushd /usr/share/kbd/keymaps/xkb > /dev/null || exit 1
else
  pushd > /dev/null $1 || exit 1
fi

echo "# generated from xkb generated keymaps (basic layouts *without* variant)"
for i in $(ls *.map.gz|grep -v "-"); do
  consolelayout=$(echo $i|sed 's/.map.gz//g')
  layout=$consolelayout
  variant="-"
  printf '%s' "$consolelayout"
  printf "\t\t\t"
  printf '%s' "$layout"
  printf '\t'
  printf 'microsoftpro\t\t'
  printf '%s' "$variant"
  printf '\t\t'
  printf 'terminate:ctrl_alt_bksp\n'
done | sort -u

echo "# generated from xkb generated keymaps (layouts *with* variant)"
for i in $(ls *-*.map.gz); do 
  consolelayout=$(echo $i|sed 's/.map.gz//g')
  conlen=$(echo "$consolelayout" |wc -m)
  conlen=$((conlen - 1))

  layout=$(echo $i|cut -d "-" -f 1)

  variant=$(echo $i|cut -d "-" -f 2,3,4,5,6,7,8,9,10|cut -d "." -f1)
  varlen=$(echo $variant|wc -m)
  varlen=$((varlen -1))

  printf '%s' "$consolelayout"
  if [ $conlen -lt 8 ]; then
    printf "\t\t\t"
  elif [ $conlen -lt 16 ]; then 
    printf "\t\t"
  elif [ $conlen -lt 24 ]; then 
    printf "\t"
  else
    printf ' '
  fi
  printf '%s' "$layout"
  printf '\t'
  if [ "$layout" == "br" ]; then
    printf 'abnt2\t\t'
  elif [ "$layout" == "jp" ]; then
    printf 'jp106\t\t'
  else
    printf 'microsoftpro\t\t'
  fi
  printf '%s' "$variant"
  if [ $varlen -lt 8 ]; then
    printf "\t\t"
  elif [ $varlen -lt 16 ]; then 
    printf "\t"
  else
    printf ' '
  fi
  printf 'terminate:ctrl_alt_bksp\n'

done | sort -u

popd > /dev/null

++++++ kbd-1.15.2-docu-X11R6-xorg.patch ++++++
--- docs/doc/kbd.FAQ-15.html.orig       2012-02-27 13:27:11.000000000 +0300
+++ docs/doc/kbd.FAQ-15.html    2013-07-30 18:56:43.697000005 +0300
@@ -188,7 +188,7 @@
 <P>XFree86 also supports Slow Keys, Repeat Keys, Bounce Keys and an
 audible bell. <CODE>xkbcomp</CODE> can be used to generate a <CODE>.xkm</CODE> 
file
 to enable these. The appropriate <CODE>xkbcomp</CODE> commands are listed in
-<CODE>/usr/X11R6/lib/X11/xkb/compat/accessx</CODE>.
+<CODE>/usr/{X11R6/lib,share}/X11/xkb/compat/accessx</CODE>.
 Unfortunately, the exact process is still undocumented.
 <P>
 <HR>
--- docs/doc/kbd.FAQ.txt.orig   2012-02-27 13:27:11.000000000 +0300
+++ docs/doc/kbd.FAQ.txt        2013-07-30 18:57:41.150000005 +0300
@@ -1253,7 +1253,7 @@
   1. The Linux keyboard driver mechanism, used in conjunction with
      loadkeys.
   2. The X mechanism - see X386keybd(1), later XFree86kbd(1).  Under
-     X11R6: edit /usr/X11R6/lib/X11/locale/iso8859-1/Compose.
+     X11R6: edit /usr/{X11R6/lib,/usr/share}/X11/locale/iso8859-1/Compose.
 
      See also Andrew D. Balsa's comments at
      http://wauug.erols.com/~balsa/linux/deadkeys/index.html.
--- docs/doc/kbd.FAQ-8.html.orig        2012-02-27 13:27:11.000000000 +0300
+++ docs/doc/kbd.FAQ-8.html     2013-07-30 18:58:23.978000004 +0300
@@ -154,7 +154,7 @@
 <OL>
 <LI>The Linux keyboard driver mechanism, used in conjunction with 
loadkeys.</LI>
 <LI>The X mechanism - see X386keybd(1), later XFree86kbd(1).
-Under X11R6: edit 
<CODE>/usr/X11R6/lib/X11/locale/iso8859-1/Compose</CODE>.<P>See also Andrew D. 
Balsa's comments at
+Under X11R6: edit 
<CODE>/usr/{X11R6/lib,share}/X11/locale/iso8859-1/Compose</CODE>.<P>See also 
Andrew D. Balsa's comments at
 <A 
HREF="http://wauug.erols.com/~balsa/linux/deadkeys/index.html";>http://wauug.erols.com/~balsa/linux/deadkeys/index.html</A>.
 </LI>
 <LI>The emacs mechanism obtained by loading "iso-insert.el" or
++++++ kbd-1.15.2-dumpkeys-C-opt.patch ++++++
Index: docs/man/man1/dumpkeys.1.in
===================================================================
--- docs/man/man1/dumpkeys.1.in.orig
+++ docs/man/man1/dumpkeys.1.in
@@ -4,6 +4,7 @@
 dumpkeys \- dump keyboard translation tables
 .SH SYNOPSIS
 .B dumpkeys
+.RI [ \-C\ '<vc>' | \-\-console='<vc>' ]
 [
 .\".B \-1Vdfhiklnstv
 .B \-h \-\-help \-i \-\-short\-info \-l \-s \-\-long\-info
@@ -212,6 +213,12 @@ loadkeys how to interpret the keymap. (F
 .B \-V \-\-version
 Prints version number and exits.
 .LP
+The affected console device can be specified using the 
+.I -C 
+(or
+.I --console
+) option. This option supports exactly one device name.
+.LP
 .SH FILES
 .PD 0
 .TP 20
Index: src/dumpkeys.c
===================================================================
--- src/dumpkeys.c.orig
+++ src/dumpkeys.c
@@ -41,6 +41,8 @@ usage(int rc)
        "  -t, --funcs-only      display only the function key strings;\n"
        "  -k, --keys-only       display only key bindings;\n"
        "  -d, --compose-only    display only compose key combinations;\n"
+       "  -C <vc>\n"
+       "  --console=<vc>        Indicate the virtual console device to be 
used;\n"
        "  -c, --charset="));
        lk_list_charsets(stderr);
        fprintf(stderr, _(
@@ -55,7 +57,7 @@ usage(int rc)
 
 int main(int argc, char *argv[])
 {
-       const char *short_opts          = "hilvsnf1tkdS:c:V";
+       const char *short_opts          = "hilvsnf1tkdS:C:c:V";
        const struct option long_opts[] = {
                { "help", no_argument, NULL, 'h' },
                { "short-info", no_argument, NULL, 'i' },
@@ -68,6 +70,7 @@ int main(int argc, char *argv[])
                { "keys-only", no_argument, NULL, 'k' },
                { "compose-only", no_argument, NULL, 'd' },
                { "charset", required_argument, NULL, 'c' },
+               { "console", required_argument, NULL, 'C' },
                { "verbose", no_argument, NULL, 'v' },
                { "version", no_argument, NULL, 'V' },
                { NULL, 0, NULL, 0 }
@@ -82,6 +85,7 @@ int main(int argc, char *argv[])
        char funcs_only      = 0;
        char keys_only       = 0;
        char diac_only       = 0;
+        char * console = NULL;
 
        struct lk_ctx *ctx;
 
@@ -135,6 +139,9 @@ int main(int argc, char *argv[])
                                }
                                printf("charset \"%s\"\n", optarg);
                                break;
+                       case 'C':
+                               console = optarg;
+                               break;
                        case 'V':
                                print_version_and_exit();
                                break;
@@ -150,7 +157,7 @@ int main(int argc, char *argv[])
        if (optind < argc)
                usage(EX_USAGE);
 
-       if ((fd = getfd(NULL)) < 0)
+       if ((fd = getfd(console)) < 0)
                kbd_error(EXIT_FAILURE, 0, _("Couldn't get a file descriptor 
referring to the console"));
 
        /* check whether the keyboard is in Unicode mode */
++++++ kbd-1.15.2-prtscr_no_sigquit.patch ++++++
XXX: reverted upstream
---
 data/keymaps/i386/azerty/fr-latin9.map      |    1 +
 data/keymaps/i386/fgGIod/tr_f-latin5.map    |    1 +
 data/keymaps/i386/qwerty/bg-cp1251.map      |    1 +
 data/keymaps/i386/qwerty/bg_bds-cp1251.map  |    1 +
 data/keymaps/i386/qwerty/br-abnt.map        |    1 +
 data/keymaps/i386/qwerty/by.map             |    1 +
 data/keymaps/i386/qwerty/cz-cp1250.map      |    1 +
 data/keymaps/i386/qwerty/cz-lat2-prog.map   |    1 +
 data/keymaps/i386/qwerty/cz-lat2.map        |    1 +
 data/keymaps/i386/qwerty/cz.map             |    8 ++++----
 data/keymaps/i386/qwerty/defkeymap.map      |    1 +
 data/keymaps/i386/qwerty/defkeymap_V1.0.map |    1 +
 data/keymaps/i386/qwerty/lt.baltic.map      |    1 +
 data/keymaps/i386/qwerty/lt.l4.map          |    1 +
 data/keymaps/i386/qwerty/lt.map             |    1 +
 data/keymaps/i386/qwerty/pl2.map            |    1 +
 data/keymaps/i386/qwerty/sk-prog-qwerty.map |    1 +
 data/keymaps/i386/qwerty/ua-utf-ws.map      |    1 +
 data/keymaps/i386/qwerty/ua-utf.map         |    1 +
 data/keymaps/i386/qwerty/ua-ws.map          |    1 +
 data/keymaps/i386/qwerty/ua.map             |    1 +
 data/keymaps/i386/qwerty/us-acentos.map     |    1 +
 data/keymaps/i386/qwertz/cz-us-qwertz.map   |    1 +
 data/keymaps/i386/qwertz/sk-prog-qwertz.map |    1 +
 24 files changed, 27 insertions(+), 4 deletions(-)

Index: kbd-1.15.2/data/keymaps/i386/azerty/fr-latin9.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/azerty/fr-latin9.map
+++ kbd-1.15.2/data/keymaps/i386/azerty/fr-latin9.map
@@ -418,6 +418,7 @@ keycode 100 = AltGr
 # La touche Ctrl+Pause = Attn = 101 a un code pour elle-m�me
 #
 keycode 101 = Break
+       control keycode 101 = Control_c
 
 keycode 102 = Home
 
Index: kbd-1.15.2/data/keymaps/i386/fgGIod/tr_f-latin5.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/fgGIod/tr_f-latin5.map
+++ kbd-1.15.2/data/keymaps/i386/fgGIod/tr_f-latin5.map
@@ -217,6 +217,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/bg-cp1251.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/bg-cp1251.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/bg-cp1251.map
@@ -312,6 +312,7 @@ keycode  99 =       Control_backslash
        altgr   alt     keycode  99 = Control_backslash
 keycode 100 =  AltGr
 keycode 101 =  Break
+       control keycode 101 = Control_c
 keycode 102 =  Find
 keycode 103 =  Up
 keycode 104 =  Prior
Index: kbd-1.15.2/data/keymaps/i386/qwerty/bg_bds-cp1251.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/bg_bds-cp1251.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/bg_bds-cp1251.map
@@ -638,6 +638,7 @@ keycode  98 = KP_Divide
 keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/br-abnt.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/br-abnt.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/br-abnt.map
@@ -197,6 +197,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/by.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/by.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/by.map
@@ -529,6 +529,7 @@ keycode  99 =       VoidSymbol              Control_backsl
                Meta_Control_backslash  Meta_Control_backslash  
Meta_Control_backslash
 keycode 100 =  Alt
 keycode 101 =  Break
+       control keycode 101 = Control_c
 keycode 102 =  Find
 keycode 103 =  Up              Up              Up      \
                KeyboardSignal  Up              Up      \
Index: kbd-1.15.2/data/keymaps/i386/qwerty/cz-cp1250.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/cz-cp1250.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/cz-cp1250.map
@@ -138,6 +138,7 @@ keycode  99 = VoidSymbol
        alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior
Index: kbd-1.15.2/data/keymaps/i386/qwerty/cz-lat2-prog.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/cz-lat2-prog.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/cz-lat2-prog.map
@@ -141,6 +141,7 @@ keycode  99 = VoidSymbol
        alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior Scroll_Backward Prior Scroll_Backward VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
Index: kbd-1.15.2/data/keymaps/i386/qwerty/cz-lat2.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/cz-lat2.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/cz-lat2.map
@@ -138,6 +138,7 @@ keycode  99 = VoidSymbol
        alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior Scroll_Backward Prior Scroll_Backward VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
Index: kbd-1.15.2/data/keymaps/i386/qwerty/cz.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/cz.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/cz.map
@@ -1086,13 +1086,13 @@ keycode  99 = dead_acute   dead_acute
 keycode 100 = AltGr
 #
 #keycode 101 = Break
-keycode 101 = Break        Break        VoidSymbol   VoidSymbol   VoidSymbol  \
-              VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
+keycode 101 = Break        Break        VoidSymbol   VoidSymbol   Control_c   \
+              Control_c    VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol                                                      \
-              Break        Break        VoidSymbol   VoidSymbol   VoidSymbol  \
-              VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
+              Break        Break        VoidSymbol   VoidSymbol   Control_c   \
+              Control_c    VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol
Index: kbd-1.15.2/data/keymaps/i386/qwerty/defkeymap.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/defkeymap.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/defkeymap.map
@@ -222,6 +222,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior
Index: kbd-1.15.2/data/keymaps/i386/qwerty/defkeymap_V1.0.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/defkeymap_V1.0.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/defkeymap_V1.0.map
@@ -185,6 +185,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior
Index: kbd-1.15.2/data/keymaps/i386/qwerty/lt.baltic.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/lt.baltic.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/lt.baltic.map
@@ -171,6 +171,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/lt.l4.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/lt.l4.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/lt.l4.map
@@ -463,6 +463,7 @@ keycode  99 = VoidSymbol     # 99=Print-Scr
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break #  101=Control-Pause
+       control keycode 101 = Control_c
 string F102 = "\033[7$"
 keycode 102 = Find  #  =Home
        shift         keycode 102 = F102
Index: kbd-1.15.2/data/keymaps/i386/qwerty/lt.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/lt.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/lt.map
@@ -462,6 +462,7 @@ keycode  99 = VoidSymbol     # 99=Print-Scr
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break #  101=Control-Pause
+       control keycode 101 = Control_c
 string F102 = "\033[7$"
 keycode 102 = Find  #  =Home
        shift         keycode 102 = F102
Index: kbd-1.15.2/data/keymaps/i386/qwerty/pl2.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/pl2.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/pl2.map
@@ -242,6 +242,7 @@ keycode  99 = VoidSymbol
        alt             keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/sk-prog-qwerty.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/sk-prog-qwerty.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/sk-prog-qwerty.map
@@ -122,6 +122,7 @@ keycode  99 = VoidSymbol
        alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior
Index: kbd-1.15.2/data/keymaps/i386/qwerty/ua-utf-ws.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/ua-utf-ws.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/ua-utf-ws.map
@@ -1526,6 +1526,7 @@ ctrll keycode 100 = CtrlR_Lock
 ctrlr keycode 100 = CtrlR_Lock
 ctrll ctrlr keycode 100 = CtrlR_Lock
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/ua-utf.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/ua-utf.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/ua-utf.map
@@ -1516,6 +1516,7 @@ ctrll keycode 100 = CtrlR_Lock
 ctrlr keycode 100 = CtrlR_Lock
 ctrll ctrlr keycode 100 = CtrlR_Lock
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/ua-ws.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/ua-ws.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/ua-ws.map
@@ -1521,6 +1521,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = Alt
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/ua.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/ua.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/ua.map
@@ -1515,6 +1515,7 @@ ctrll keycode 100 = CtrlR_Lock
 ctrlr keycode 100 = CtrlR_Lock
 ctrll ctrlr keycode 100 = CtrlR_Lock
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/us-acentos.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/us-acentos.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/us-acentos.map
@@ -194,6 +194,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwertz/cz-us-qwertz.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwertz/cz-us-qwertz.map
+++ kbd-1.15.2/data/keymaps/i386/qwertz/cz-us-qwertz.map
@@ -135,6 +135,7 @@ control keycode  99 = Control_backslash
 alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior Scroll_Backward Prior Scroll_Backward VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
Index: kbd-1.15.2/data/keymaps/i386/qwertz/sk-prog-qwertz.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwertz/sk-prog-qwertz.map
+++ kbd-1.15.2/data/keymaps/i386/qwertz/sk-prog-qwertz.map
@@ -122,6 +122,7 @@ keycode  99 = VoidSymbol
        alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior
++++++ kbd-1.15.2-setfont-no-cruft.patch ++++++
Index: kbd-2.2.0/src/kdfontop.c
===================================================================
--- kbd-2.2.0.orig/src/kdfontop.c
+++ kbd-2.2.0/src/kdfontop.c
@@ -169,6 +169,23 @@ int putfont(int fd, unsigned char *buf,
                        return 0;
        }
 
+#if 1
+       // We no longer try PIO_FONT* calls.
+       // A former patch even added a possible 5 seconds delay loop here, in 
an attempt to
+       // gain victory over kdm. We no do this fight, as it can only result in 
races.
+       // https://bugzilla.novell.com/show_bug.cgi?id=302010
+       //
+       // Two effects:
+       // a) Without the delay loop, we are fast enough to run early. 
+       //    Moving setfont calls to an earlier point most likly
+       //    avoids the race.
+       // b) Without the old compat calls, it should be easier to 
+       //    fix this in kernel side.
+       //
+       fprintf(stderr, "%s: putfont: %d,%dx%d:  failed: %d\n", get_progname(), 
count, width, height, i);
+       perror("putfont: KDFONTOP");
+       return -1;
+#else
        /* Second attempt: PIO_FONTX */
        cfd.charcount  = count;
        cfd.charheight = height;
@@ -191,4 +208,5 @@ int putfont(int fd, unsigned char *buf,
                return -1;
        }
        return 0;
+#endif
 }
++++++ kbd-1.15.2-sv-latin1-keycode10.patch ++++++
--- kbd-1.12/data/keymaps/i386/qwerty/sv-latin1.map.orig        2007-07-17 
12:33:52.000000000 +0200
+++ kbd-1.12/data/keymaps/i386/qwerty/sv-latin1.map     2007-07-17 
12:36:34.855389000 +0200
@@ -42,6 +42,7 @@
        alt     keycode   9 = Meta_eight
 keycode  10 = nine             parenright      bracketright
        alt     keycode  10 = Meta_nine
+       control altgr keycode 10 = Control_bracketright
 keycode  11 = zero             equal           braceright
        alt     keycode  11 = Meta_zero
 keycode  12 = plus       question         backslash
++++++ kbd-1.15.2-unicode_scripts.patch ++++++
--- src/unicode_start
+++ src/unicode_start
@@ -72,6 +72,17 @@
 # have a Unicode map attached, or explicitly specified, e.g.,
 # by giving `def.uni' as a second argument.
 
+DEFAULT_UNICODE_FONT='LatArCyrHeb-16'
+# Also drdos8x16 is a good candidate.
+
+# Fonts with 512 glyphs like LatArCyrHeb-16 make it impossible to use bold
+# on the console, which makes YaST2 unusable. To be able to use bold,
+# only fonts with 256 glyphs can be used. Therefore we prefer
+# the font specified in /etc/sysconfig/console. This should be OK because
+# the default font written to /etc/sysconfig/console by YaST2
+# is currently always a font with 256 glyphs and a Unicode map
+# which is suitable for the language used during the installation.
+
 case "$#" in
        2)
                setfont "$1" -u "$2"
@@ -80,6 +91,24 @@
                setfont "$1"
                ;;
        0)
+               if [ -f /etc/sysconfig/console ] ; then
+                   . /etc/sysconfig/console
+               fi
+               if [ -n "$CONSOLE_FONT" ] ; then
+                       SETFONT_ARGS="$CONSOLE_FONT"
+                   if [ -n "$CONSOLE_UNICODEMAP" ] ; then
+                       SETFONT_ARGS="$SETFONT_ARGS -u $CONSOLE_UNICODEMAP"
+                   fi
+                   if [ -n "$CONSOLE_SCREENMAP" ] ; then
+                       SETFONT_ARGS="$SETFONT_ARGS -m $CONSOLE_SCREENMAP"
+                   fi
+                   setfont $SETFONT_ARGS
+                   if [ -n "$CONSOLE_MAGIC" -a "$CONSOLE_MAGIC" != "none" ] ; 
then
+                       printf "\033$CONSOLE_MAGIC"
+                   fi
+               else
+                   setfont $DEFAULT_UNICODE_FONT
+               fi
                ;;
        *)
                echo "usage: unicode_start [font [unicode map]]"
++++++ kbd-1.15.5-loadkeys-search-path.patch ++++++
Index: kbd-2.2.0/src/loadkeys.c
===================================================================
--- kbd-2.2.0.orig/src/loadkeys.c
+++ kbd-2.2.0/src/loadkeys.c
@@ -24,7 +24,7 @@
 #include "paths.h"
 #include "keymap.h"
 
-static const char *const dirpath1[] = { "", DATADIR "/" KEYMAPDIR "/**", 
KERNDIR "/", 0 };
+static const char *const dirpath1[] = { "", DATADIR "/" XKBKEYMAPDIR "/", 
DATADIR "/" LEGACYKEYMAPDIR "/**", DATADIR "/" KEYMAPDIR "/**", KERNDIR "/", 0 
};
 static const char *const suffixes[] = { "", ".kmap", ".map", 0 };
 
 static void __attribute__((noreturn))
Index: kbd-2.2.0/src/paths.h
===================================================================
--- kbd-2.2.0.orig/src/paths.h
+++ kbd-2.2.0/src/paths.h
@@ -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"
++++++ kbd-2.0.2-comment-typo-qwerty.patch ++++++
Index: data/keymaps/mac/include/mac-qwerty-layout.inc
===================================================================
--- data/keymaps/mac/include/mac-qwerty-layout.inc.orig 2012-02-27 
11:27:11.000000000 +0100
+++ data/keymaps/mac/include/mac-qwerty-layout.inc      2014-08-22 
08:47:46.799078582 +0200
@@ -1,4 +1,4 @@
-# qwertz-layout
+# qwerty-layout
 keycode  12 = q
 keycode  13 = w
 keycode  14 = e
++++++ kbd-2.0.2-doshell-reference.patch ++++++
Index: docs/man/man1/openvt.1
===================================================================
--- docs/man/man1/openvt.1.orig 2013-08-27 22:45:33.000000000 +0200
+++ docs/man/man1/openvt.1      2014-09-12 11:48:08.465988937 +0200
@@ -92,5 +92,4 @@
 
 .SH "SEE ALSO"
 .BR chvt (1),
-.BR doshell (8),
 .BR login (1)
++++++ kbd-2.0.2-euro-unicode.patch ++++++
Index: data/keymaps/i386/include/euro.map
===================================================================
--- data/keymaps/i386/include/euro.map.orig     2012-02-27 11:27:10.000000000 
+0100
+++ data/keymaps/i386/include/euro.map  2014-09-25 12:31:37.594749095 +0200
@@ -2,5 +2,5 @@
 # [Say: "loadkeys euro" to get Euro and cent with Alt on the positions
 #  where many keyboards have E and C.
 #  To get it displayed, use a latin0 (i.e., latin9) font.]
-alt keycode  18 = currency
+alt keycode  18 = euro
 alt keycode  46 = cent
Index: data/keymaps/i386/include/euro1.map
===================================================================
--- data/keymaps/i386/include/euro1.map.orig    2012-02-27 11:27:10.000000000 
+0100
+++ data/keymaps/i386/include/euro1.map 2014-09-25 12:31:20.218749689 +0200
@@ -2,5 +2,5 @@
 # [Say: "loadkeys euro1" to get Euro and cent with AltGr (right alt)
 #  on the positions where many keyboards have 5 and C.
 #  To get it displayed, use a latin0 (i.e., latin9) font.]
-altgr keycode   6 = currency
+altgr keycode   6 = euro
 altgr keycode  46 = cent
Index: data/keymaps/i386/include/euro2.map
===================================================================
--- data/keymaps/i386/include/euro2.map.orig    2012-02-27 11:27:10.000000000 
+0100
+++ data/keymaps/i386/include/euro2.map 2014-09-25 12:31:52.098748600 +0200
@@ -2,5 +2,5 @@
 # [Say: "loadkeys euro2" to get Euro and cent with AltGr (right alt)
 #  on the positions where many keyboards have E and C.
 #  To get it displayed, use a latin0 (i.e., latin9) font.]
-altgr keycode  18 = currency
+altgr keycode  18 = euro
 altgr keycode  46 = cent
++++++ kbd-2.0.2-fix-bashisms.patch ++++++
diff -Ndurp kbd-2.0.2/contrib/font2psf kbd-2.0.2-fix-bashisms/contrib/font2psf
--- kbd-2.0.2/contrib/font2psf  2012-02-27 12:27:10.000000000 +0200
+++ kbd-2.0.2-fix-bashisms/contrib/font2psf     2014-10-19 23:07:11.719239190 
+0300
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 #written by Martin Lohner, SuSE GmbH, Dec 1998
 echo "This script converts 256 character font to psf-fonts"
 echo "It simply assumes that all files in the current directory"
@@ -15,24 +15,21 @@ read a
 random=hfdsvnpoh97k
 if [ $a = y   -o $a = Y ] ; then
        echo "Creating psf-headers..."
-       echo -ne "\066" > $random
-       echo -ne "\004" >> $random
-       echo -ne "\000" >> $random
+       printf "\066\004\000" > $random
 
-       
-       echo -ne "\006" > $random.6.tmp
+       printf "\006" > $random.6.tmp
        cat $random $random.6.tmp > $random.6
-       echo -ne "\010" > $random.8.tmp
+       printf "\010" > $random.8.tmp
        cat $random $random.8.tmp > $random.8
-       echo -ne "\012" > $random.10.tmp
+       printf "\012" > $random.10.tmp
        cat $random $random.10.tmp > $random.10
-       echo -ne "\014" > $random.12.tmp
+       printf "\014" > $random.12.tmp
        cat $random $random.12.tmp > $random.12
-       echo -ne "\016" > $random.14.tmp
+       printf "\016" > $random.14.tmp
        cat $random $random.14.tmp > $random.14
-       echo -ne "\020" > $random.16.tmp
+       printf "\020" > $random.16.tmp
        cat $random $random.16.tmp > $random.16
-       echo -ne "\023" > $random.19.tmp
+       printf "\023" > $random.19.tmp
        cat $random $random.19.tmp > $random.19
        
        for i in 6 8 10 12 14 16 19; do
diff -Ndurp kbd-2.0.2/contrib/psfsplit kbd-2.0.2-fix-bashisms/contrib/psfsplit
--- kbd-2.0.2/contrib/psfsplit  2012-02-27 12:27:10.000000000 +0200
+++ kbd-2.0.2-fix-bashisms/contrib/psfsplit     2014-10-19 22:53:02.271296655 
+0300
@@ -11,17 +11,17 @@ then        echo $1 -- non .psf file
        exit
 fi
 size=`hexdump -e '/1 "%i" ' -n1 -s2 $1 `
-size=$[ ($size % 2 + 1) * 256 ]
+size=$((($size % 2 + 1) * 256))
 height=`hexdump -e '/1 "%i" ' -n1 -s3 $1 `
 echo $size chars, height=$height
 mkdir $1_
-dd bs=4 count=1 if=$1 of=$1_/#psf_header &>/dev/null
+dd bs=4 count=1 if=$1 of=$1_/#psf_header >/dev/null 2>&1
 i=0
-while let $[ i < $size ]
+while [ $i -lt $size ]
 do
-       dd bs=1 count=$height skip=$[ $i * $height + 4 ] if=$1 \
-               of=$1_/`printf "%.3x" $i` &>/dev/null
-       let i+=1
+       dd bs=1 count=$height skip=$(($i * $height + 4)) if=$1 \
+               of=$1_/`printf "%.3x" $i` >/dev/null 2>&1
+       i=$((i + 1))
 done
-dd bs=1 skip=$[ $i * $height + 4 ] if=$1 of=$1_/map_tables &>/dev/null
+dd bs=1 skip=$(($i * $height + 4)) if=$1 of=$1_/map_tables >/dev/null 2>&1
 
diff -Ndurp kbd-2.0.2/contrib/showconsolefont 
kbd-2.0.2-fix-bashisms/contrib/showconsolefont
--- kbd-2.0.2/contrib/showconsolefont   2012-02-27 12:27:10.000000000 +0200
+++ kbd-2.0.2-fix-bashisms/contrib/showconsolefont      2014-10-19 
22:58:03.106276304 +0300
@@ -5,16 +5,16 @@
 # A small shell script version of the `showconsolefont' C program
 #
 
-echo -e "\033%G"
+printf "\033%%G\n"
 for L in "0 2 4 6" "1 3 5 7"; do
     for P in 0 1 2 3 4 5 6 7; do
        for U in 0 1 2 3; do
            for K in $L; do
-               echo -ne "  \357\20$U\2$K$P"
+               printf "  \357\20$U\2$K$P"
            done
        done
        echo
     done
     echo
 done
-echo -ne "\033%@"
+printf "\033%%@"
diff -Ndurp kbd-2.0.2/rc/suse-kbd.rc kbd-2.0.2-fix-bashisms/rc/suse-kbd.rc
--- kbd-2.0.2/rc/suse-kbd.rc    2012-02-27 12:27:11.000000000 +0200
+++ kbd-2.0.2-fix-bashisms/rc/suse-kbd.rc       2014-10-19 23:00:34.475266064 
+0300
@@ -76,7 +76,7 @@ case "$1" in
        else
            return=$rc_failed
        fi
-       echo -e "Loading keymap 
${retmsg#Loading*/usr/lib/kbd/keymaps/*/}${return}"
+       printf "Loading keymap 
${retmsg#Loading*/usr/lib/kbd/keymaps/*/}${return}\n"
        ;;
     stop)
        ;;
++++++ kbd-unicode-fxxx.patch ++++++
Disable characters >=U+F000. These do not work properly.

Explanation from Alexey Gladkov:

The kbd value is unsigned short [1] and take a look how kernel gets
a type [2]. The last bytes are occupied by type.

[1] 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/kd.h?id=06dd3dfeea60e2a6457a6aedf97afc8e6d2ba497#n103
[2] 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/keyboard.h?id=06dd3dfeea60e2a6457a6aedf97afc8e6d2ba497#n45

The problem in the kernel. In the kb_value there is no room to store such
values.

Index: kbd-2.0.4/data/keymaps/i386/qwertz/de_alt_UTF-8.map
===================================================================
--- kbd-2.0.4.orig/data/keymaps/i386/qwertz/de_alt_UTF-8.map
+++ kbd-2.0.4/data/keymaps/i386/qwertz/de_alt_UTF-8.map
@@ -160,7 +160,7 @@ shift alt keycode   2 = U+00AC  # notsig
 shift alt keycode   3 = U+201D  # right double quote
 shift alt keycode   4 = numbersign
 shift alt keycode   5 = sterling
-shift alt keycode   6 = U+FB01  # fi ligature
+#shift alt keycode   6 = U+FB01  # fi ligature
 shift alt keycode   7 = dead_circumflex
 shift alt keycode   8 = backslash
 shift alt keycode   9 = U+02DC  # small tilde
@@ -179,7 +179,7 @@ shift alt keycode  23 = Ucircumflex
 shift alt keycode  24 = Ooblique
 shift alt keycode  25 = U+220F  # n-ary product
 shift alt keycode  26 = degree
-shift alt keycode  27 = U+F8FF  # apple logo
+#shift alt keycode  27 = U+F8FF  # apple logo
 shift alt keycode  30 = Aring
 shift alt keycode  31 = Iacute
 shift alt keycode  32 = U+2122  # trade mark
@@ -188,7 +188,7 @@ shift alt keycode  34 = Igrave
 shift alt keycode  35 = Oacute
 shift alt keycode  36 = U+0131  # dotless i
 shift alt keycode  37 = U+02C6  # circumflex accent
-shift alt keycode  38 = U+FB02  # fl ligature
+#shift alt keycode  38 = U+FB02  # fl ligature
 shift alt keycode  39 = U+0152  # OE
 shift alt keycode  40 = AE
 shift alt keycode  41 = U+201C  # left double quote
@@ -210,7 +210,7 @@ control shift alt keycode   2 = U+00AC
 control shift alt keycode   3 = U+201D  # right double quote
 control shift alt keycode   4 = numbersign
 control shift alt keycode   5 = sterling
-control shift alt keycode   6 = U+FB01  # fi ligature
+#control shift alt keycode   6 = U+FB01  # fi ligature
 control shift alt keycode   7 = circumflex
 control shift alt keycode   8 = backslash
 control shift alt keycode   9 = U+02DC  # small tilde
@@ -229,7 +229,7 @@ control shift alt keycode  23 = Ucircumf
 control shift alt keycode  24 = Ooblique
 control shift alt keycode  25 = U+220F  # n-ary product
 control shift alt keycode  26 = degree
-control shift alt keycode  27 = U+F8FF  # apple logo
+#control shift alt keycode  27 = U+F8FF  # apple logo
 control shift alt keycode  30 = Aring
 control shift alt keycode  31 = Iacute
 control shift alt keycode  32 = U+2122  # trade mark
@@ -238,7 +238,7 @@ control shift alt keycode  34 = Igrave
 control shift alt keycode  35 = Oacute
 control shift alt keycode  36 = U+0131  # dotless i
 control shift alt keycode  37 = U+02C6  # circumflex accent
-control shift alt keycode  38 = U+FB02  # fl ligature
+#control shift alt keycode  38 = U+FB02  # fl ligature
 control shift alt keycode  39 = U+0152  # OE
 control shift alt keycode  40 = AE
 control shift alt keycode  41 = U+201C  # left double quote
++++++ kbdsettings ++++++
#! /bin/sh

. /etc/sysconfig/keyboard

[ $KBD_DELAY ] && /usr/bin/kbdrate -s -d $KBD_DELAY
[ $KBD_RATE ] && /usr/bin/kbdrate -s -r $KBD_RATE

for i in NUM SCR CAPS; do
        conf=$(eval echo KBD_${i}LOCK)
        eval confval=\"\$$conf\"
        [ -z "$confval" ] && continue
        param=$(echo $i | tr A-Z a-z | sed 's/scr/scroll/')

        for tty in ${KBD_TTY:-tty1 tty2 tty3 tty4 tty5 tty6}; do
                case "$confval" in
                yes)
                        if [ $param = "num" ]; then
                                touch /run/numlock-on
                        fi
                        /usr/bin/setleds -D +$param < /dev/$tty
                        ;;
                no)
                        if [ $param = "num" ]; then
                                rm -f /run/numlock-on
                        fi
                        /usr/bin/setleds -D -$param < /dev/$tty
                        ;;
                bios)
                        bios=$(/usr/lib/kbd/numlockbios 2>/dev/null)
                        if [ $param = "num" ]; then
                                if [ "$bios" = "on" ]; then
                                        touch /run/numlock-on
                                        /usr/bin/setleds -D +$param < /dev/$tty
                                elif [ "$bios" = "off" -o "$bios" = "unknown" 
]; then
                                        rm -f /run/numlock-on
                                        /usr/bin/setleds -D -$param < /dev/$tty
                                fi
                        else
                                echo "Value $confval invalid for $conf"
                        fi
                        ;;
                *)
                        echo "error: unknown value $confval in $conf"
                        ;;
                esac
        done
done

if [ "$KBD_DISABLE_CAPS_LOCK" = "yes" ]; then
        /usr/bin/dumpkeys | sed 's/ *58 *= *Caps_Lock/ 58 = Control/' | 
/usr/bin/loadkeys -q -
fi
++++++ kbdsettings-nox86.patch ++++++
--- kbdsettings
+++ kbdsettings
@@ -24,20 +24,6 @@
                        fi
                        /usr/bin/setleds -D -$param < /dev/$tty
                        ;;
-               bios)
-                       bios=$(/usr/lib/kbd/numlockbios 2>/dev/null)
-                       if [ $param = "num" ]; then
-                               if [ "$bios" = "on" ]; then
-                                       touch /run/numlock-on
-                                       /usr/bin/setleds -D +$param < /dev/$tty
-                               elif [ "$bios" = "off" -o "$bios" = "unknown" 
]; then
-                                       rm -f /run/numlock-on
-                                       /usr/bin/setleds -D -$param < /dev/$tty
-                               fi
-                       else
-                               echo "Value ${!conf} invalid for $conf"
-                       fi
-                       ;;
                *)
                        echo "error: unknown value ${!conf} in $conf"
                        ;;
--- sysconfig.keyboard
+++ sysconfig.keyboard
@@ -15,12 +15,12 @@
 # Keyboard repeat rate (2.0 - 30.0)
 KBD_RATE=""
 
-## Type:        list(bios,yes,no)
-## Default:     bios
+## Type:        yesno
+## Default:     no
 #
-# NumLock on? ("yes" or "no" or "bios" for BIOS setting)
+# NumLock on? ("yes" or "no")
 # This setting may interfere with GNOME 
/org/gnome/settings-daemon/peripherals/keyboard/remember-numlock-state DConf 
key.
-KBD_NUMLOCK="bios"
+KBD_NUMLOCK="no"
 
 ## Type:        yesno
 ## Default:     no
++++++ kbdsettings.service ++++++
[Unit]
Description=Apply settings from /etc/sysconfig/keyboard
After=basic.target
After=systemd-vconsole-setup.service
PartOf=systemd-vconsole-setup.service
ConditionPathExists=/dev/tty0

[Service]
Type=oneshot
ExecStart=/usr/sbin/kbdsettings
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
++++++ libkeymap-Fix-mk_mapname-for-the-plain-map.patch ++++++
From: Alexey Gladkov <[email protected]>
Date: Sun, 23 Feb 2020 18:24:59 +0100
Subject: libkeymap: Fix mk_mapname for the plain map
Patch-mainline: 2.3
Git-commit: 88ae58fe8a223d11307accc36cc293133a18e7ac

mk_mapname did not correctly return "plain" for the plain map (no modifier set)
if it had already been called, as it did not correctly reset the static buffer
that it uses for the map name. When mk_mapname is called for the first time
from the first loop in lk_dump_ctable, all is fine, since buf has not been used
yet and it is initialised to 0. However, when it is called again for the plain
map from the second loop in lk_dump_ctable, buf already contains a value (left
over from the last iteration in the first loop), and then strcat appends
"plain" to that value instead of overwriting it, resulting in a bogus value.

Reported-by: Javier Pello <[email protected]>
Signed-off-by: Alexey Gladkov <[email protected]>
Signed-off-by: Jiri Slaby <[email protected]>
---
 src/libkeymap/dump.c                    | 2 +-
 tests/data/dumpkeys-mktable/defkeymap.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/libkeymap/dump.c b/src/libkeymap/dump.c
index 8531b5aa3d91..d67eefaada54 100644
--- a/src/libkeymap/dump.c
+++ b/src/libkeymap/dump.c
@@ -101,7 +101,7 @@ mk_mapname(char modifier)
        int i;
 
        if (!modifier) {
-               strcat(buf, "plain");
+               strcpy(buf, "plain");
                return buf;
        }
        buf[0] = 0;
diff --git a/tests/data/dumpkeys-mktable/defkeymap.c 
b/tests/data/dumpkeys-mktable/defkeymap.c
index e831316a1ff3..5d9a3aaeff8c 100644
--- a/tests/data/dumpkeys-mktable/defkeymap.c
+++ b/tests/data/dumpkeys-mktable/defkeymap.c
@@ -565,7 +565,7 @@ static unsigned short shift_altgr_ctrl_alt_map[NR_KEYS] = {
 };
 
 ushort *key_maps[MAX_NR_KEYMAPS] = {
-       shift_altgr_ctrl_altplain_map, shift_map, altgr_map, shift_altgr_map,
+       plain_map, shift_map, altgr_map, shift_altgr_map,
        ctrl_map, shift_ctrl_map, altgr_ctrl_map, shift_altgr_ctrl_map,
        alt_map, shift_alt_map, altgr_alt_map, shift_altgr_alt_map,
        ctrl_alt_map, shift_ctrl_alt_map, altgr_ctrl_alt_map, 
shift_altgr_ctrl_alt_map, 0
-- 
2.28.0

++++++ numlockbios.c ++++++
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main() {

#define BIOS_DATA_AREA  0x400
#define BDA_KEYBOARD_STATUS_FLAGS_4 0x97
#define BDA_KSF4_NUMLOCK_MASK 0x02

int fdmem;
char c;
errno=0;

fdmem = open("/dev/mem", O_RDONLY);

if (fdmem < 0) {
        fprintf(stderr, "Couldn't open /dev/mem; %s\n", strerror(errno));
        goto finish;
}

if (lseek(fdmem, BIOS_DATA_AREA + BDA_KEYBOARD_STATUS_FLAGS_4, SEEK_SET) == 
(off_t) -1) {
        fprintf(stderr, "Failed to seek /dev/mem: %s\n", strerror(errno));
        goto finish;
}

if (read (fdmem, &c, sizeof(char)) == -1) {
        fprintf(stderr, "Failed to read /dev/mem: %s\n", strerror(errno));
        goto finish;
}

if (c & BDA_KSF4_NUMLOCK_MASK)
                printf("on\n");
        else
                printf("off\n");

finish:
        close(fdmem);

        if (errno)
        {
                printf("unknown\n");
                exit(EXIT_FAILURE);
        }

return 0;
}
++++++ repack_kbd.sh ++++++
--- /var/tmp/diff_new_pack.ObWz6I/_old  2020-09-23 13:00:47.385859308 +0200
+++ /var/tmp/diff_new_pack.ObWz6I/_new  2020-09-23 13:00:47.385859308 +0200
@@ -1,4 +1,4 @@
-#! /bin/sh
+#!/bin/sh
 #
 # repackage kbd source tar ball, 
 # to remove fonts that forbid commercial distribution.
@@ -6,30 +6,21 @@
 # 2005-07-11, [email protected]
 
 tmpdir=`mktemp -d`
+in="$1"
+if [ -z $in ]; then
+  echo "usage: $0 <tarball>"
+  exit 1
+fi
+name="${in%.tar.*}"
 
-in=$1
-
-case "$in" in
-  *.tar.gz)
-    tar zxf $in -C $tmpdir
-    ;;
-  *.tgz)
-    tar zxf $in -C $tmpdir
-    ;;
-  *.tar.bz2)
-    tar jxf $in -C $tmpdir
-    ;;
-  *.tar)
-    tar xf $in -C $tmpdir
-    ;;
-  *)
-    echo "hmm, '$in' is not a tar ball?"
-    rmdir $tmpdir
-    exit 1
-esac
+# recent gnu tar can autodetect gzip / bzip2
+if ! tar xf "$in" -C $tmpdir; then
+       rm -rf $tmpdir
+       exit 1
+fi
  
 echo removing files...
 find $tmpdir -iname \*agafari\* | tee /dev/tty | xargs rm
-tar jcf $in-repack.tar.bz2 -C $tmpdir .
+tar Jcf $name-repack.tar.xz -C $tmpdir $name
 
 rm -rf $tmpdir

++++++ suse-add.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/data/keymaps/i386/azerty/lt.std.map 
new/data/keymaps/i386/azerty/lt.std.map
--- old/data/keymaps/i386/azerty/lt.std.map     1970-01-01 01:00:00.000000000 
+0100
+++ new/data/keymaps/i386/azerty/lt.std.map     2010-03-29 17:15:16.000000000 
+0200
@@ -0,0 +1,167 @@
+# Lithuanian standard keymap
+# Created by Gediminas Paulauskas <[email protected]>
+# Re-encoded for UTF-8 by Rimas Kudelis <[email protected]>
+# The standard can be found at http://ims.mii.lt/klav/ 
+#
+#  ____                                          ________ _________ _______
+# | S A| S = Shift,  A = altgr + Shift          | Spausd | Slinkti | Pauzė |
+# | s a| s = normal, a = altgr                  |  SysRq |         |       |
+#  ====                                          ======== ========= =======
+#  ____ ____ ____ ____ ____ ____ ____  ____ ____ ____ ____ ____ ____ _______
+# | ~  | 1  | 2  | 3  | 4  | 5  | 6  ¦| 7  | 8  | 9  | 0  | +  | X  | <--  |
+# | `  | ! @| - _| / #| ; $| : §| , ^|| . &| = *| ( [| ) ]| ? '|   %|      |
+#  ========================================================================
+# | |<-  | Ą  | Ž  | E  | R  | T  | Y  | U  | I  | O  | P  | Į  | W  |   , |
+# |  ->| |    |    |   €|    |    |    |    |    |    |    |   {|   }| <-' |
+#  ===================================================================¬    |
+# |       | A  | S  | D  | Š  | G  | H  | J  | K  | L  | Ų  | Ė  | Q  |    |
+# | Didž  |    |    |    |    |    |    |    |    |    |    |   "|   ||    |
+#  ========================================================================
+# | ^      | >  | Z  | Ū  | C  | V  | B  | N  | M  | Č  | F  | Ę  | ^      |
+# | | Lyg2 | < -|   <|   >|   -|    |    |    |    |   „|   “|   \| | Lyg2 |
+#  ========================================================================
+# |      |      |      |                       |       |      |     |      |
+# | Vald |      | Alt  | Tarpas  Jungiamasis t.| Lyg 3 |      |     | Vald |
+#  ====== ====== ====== ======================= ======= ====== ===== ======
+
+keymaps 0-2,4,8,12
+include "azerty-layout"
+strings as usual
+
+# If you want to have right Alt as normal Alt, and have Win keys to act as
+# AltGr (for typing 3rd level characters), uncomment the following lines:
+
+# keycode 100 = Alt
+# keycode 125 = AltGr
+# keycode 126 = AltGr
+
+# -- Row 1 -----------------------------------------------------------------
+#  [Esc] [F1][F2][F3] [F4][F5][F6][F7] [F8][F9][F10][F11][F12] [PS][Sc][Pu]
+# --------------------------------------------------------------------------
+
+               keycode   1 = Escape
+alt            keycode   1 = Meta_Escape
+               
+# -- Row 2 -----------------------------------------------------------------
+# [`~][1!@][2-_][3/#][4;$][5:][6,^][7.&][8=*][9([][0)]][+?'][=+][X%][Backspace]
+# --------------------------------------------------------------------------
+
+               keycode  41 = grave     asciitilde
+alt            keycode  41 = Meta_grave
+               
+               keycode   2 = exclam    one     at
+alt            keycode   2 = Meta_one
+
+               keycode   3 = minus     two     underscore
+control                keycode   3 = Control_underscore
+alt            keycode   3 = Meta_two
+
+               keycode   4 = slash     three   numbersign
+alt            keycode   4 = Meta_three
+
+               keycode   5 = semicolon four    dollar
+alt            keycode   5 = Meta_four
+
+               keycode   6 = colon     five    section
+alt            keycode   6 = Meta_five 
+
+               keycode   7 = comma     six     asciicircum     
+alt            keycode   7 = Meta_six  
+control                keycode  11 = Control_asciicircum
+
+               keycode   8 = period    seven   ampersand
+alt            keycode   8 = Meta_seven
+
+               keycode   9 = equal     eight   asterisk
+alt            keycode   9 = Meta_eight
+
+               keycode  10 = parenleft nine    bracketleft
+alt            keycode  10 = Meta_nine
+
+               keycode  11 = parenright        zero    bracketright
+alt            keycode  11 = Meta_zero
+control                keycode  11 = Control_bracketright
+
+               keycode  12 = question          plus    apostrophe
+alt            keycode  12 = Meta_question
+
+               keycode  13 = +x        +X      percent
+alt            keycode  13 = Meta_x
+control                keycode  13 = Control_x
+
+               keycode  14 = Delete
+alt            keycode  14 = Meta_Delete
+
+# -- Row 3 -----------------------------------------------------------------
+#  [Tab][Ą][Ž][E€][R][T][Y][U][I][O][P][Į{][W}][Enter]
+# --------------------------------------------------------------------------
+
+               keycode  15 = Tab
+alt            keycode  15 = Meta_Tab
+
+               keycode  16 = U+0105    U+0104
+               keycode  17 = U+017e    U+017d
+               keycode  18 = +e        +E      U+20ac
+control                keycode  18 = Control_e
+altgr          keycode  19 = nul
+altgr          keycode  20 = nul
+altgr          keycode  21 = nul
+altgr          keycode  22 = nul
+               
+               keycode  26 = U+012f    U+012e  braceleft
+control                keycode  26 = Escape
+alt            keycode  26 = Meta_bracketleft
+
+               keycode  27 = +w        +W      braceright
+control                keycode  27 = Control_w
+
+# -- Row 4 -----------------------------------------------------------------
+#  [CapsLock][A][S][D][Š][G][H][J][K][L][Ų][Ė"][Enter]
+# --------------------------------------------------------------------------
+
+               keycode  58 = Caps_Lock
+
+               keycode  30 = a
+               keycode  33 = U+0161    U+0160
+               
+               keycode  39 = U+0173    U+0172
+               keycode  40 = U+0117    U+0116  quotedbl
+
+               keycode  43 = +q        +Q      bar
+control                keycode  43 = Control_q
+
+# -- Row 5 -----------------------------------------------------------------
+#  [LShift][<>-][Z<][Ū>][C-][V][B][N][M][Č„][F“][Ę\][RShift]
+# --------------------------------------------------------------------------
+
+               keycode  42 = Shift
+               
+               keycode  86 = less      greater minus
+               keycode  44 = +z        +Z      less
+control                keycode  44 = Control_z
+               keycode  45 = U+016b    U+016a  greater
+               keycode  46 = +c        +C      minus
+control                keycode  46 = Control_c
+
+               keycode  51 = U+010d    U+010c  U+201e
+               
+               keycode  52 = +f        +F      U+201c
+control                keycode  52 = Control_f
+               
+               keycode  53 = U+0119    U+0118  backslash
+control                keycode  53 = Control_backslash
+               
+               keycode  54 = Shift
+
+# -- Row 6 -----------------------------------------------------------------
+#  [LCtrl] [Lalt][Space][Ralt] [RCtrl]
+# --------------------------------------------------------------------------
+
+               keycode  29 = Control
+               keycode  56 = Alt
+               
+               keycode  57 = space
+altgr          keycode  57 = nobreakspace
+alt            keycode  57 = Meta_space
+               
+               keycode  97 = Control
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/data/keymaps/i386/qwerty/ru1_win-utf.map 
new/data/keymaps/i386/qwerty/ru1_win-utf.map
--- old/data/keymaps/i386/qwerty/ru1_win-utf.map        1970-01-01 
01:00:00.000000000 +0100
+++ new/data/keymaps/i386/qwerty/ru1_win-utf.map        2008-05-19 
12:35:07.000000000 +0200
@@ -0,0 +1,443 @@
+# Tomin Vitaliy aka HighwayStar <[email protected]>
+# 17/05/2008
+# ru1-utf.map made from original ru1.map by Alexey Vovenko 
<[email protected]> 
+# by replacing ASCI keycodes with their utf8 means. Only letters codes 
replaced,
+# layout switching by Alt+Shift combination
+# winkeys -like ru1-utf.map variant, russian layout like in X (winkeys)
+strings as usual
+
+               keycode 1 =     Escape
+       alt     keycode 1 =     Meta_Escape
+altgr  alt     keycode 1 =     Meta_Escape
+               keycode 2 =     one     exclam          one     exclam
+       alt     keycode 2 =     Meta_one        
+altgr  alt     keycode 2 =     Meta_one
+       shift alt keycode 2 =   Meta_exclam
+altgr  shift alt keycode 2 =   Meta_exclam
+               keycode 3 =     two     at              two     quotedbl
+       control keycode 3 =     nul     
+altgr  control keycode 3 =     nul
+       alt     keycode 3 =     Meta_two        
+altgr  alt     keycode 3 =     Meta_two
+       shift alt keycode 3 =   Meta_at
+altgr  shift alt keycode 3 =   Meta_at
+               keycode 4 =     three numbersign        three   numbersign
+       control keycode 4 =     Escape
+altgr  control keycode 4 =     Escape
+       alt     keycode 4 =     Meta_three
+altgr  alt     keycode 4 =     Meta_three
+       shift alt keycode 4 =   Meta_numbersign
+altgr  shift alt keycode 4 =   Meta_numbersign
+#altgr shift   keycode 4 =     U+2116 #number sign
+               keycode 5 =     four    dollar          four    semicolon
+       control keycode 5 =     Control_backslash
+altgr  control keycode 5 =     Control_backslash
+       alt     keycode 5 =     Meta_four
+altgr  alt     keycode 5 =     Meta_four
+       shift alt keycode 5 =   Meta_dollar
+altgr  shift alt keycode 5 =   Meta_dollar
+altgr  shift   keycode 5 =     semicolon       #winkeys variant
+               keycode 6 =     five    percent         five    colon
+       control keycode 6 =     Control_bracketright
+altgr  control keycode 6 =     Control_bracketright
+       alt     keycode 6 =     Meta_five
+altgr  alt     keycode 6 =     Meta_five
+       shift alt keycode 6 =   Meta_percent
+altgr  shift alt keycode 6 =   Meta_percent
+               keycode 7 =     six     asciicircum     six     comma
+       control keycode 7 =     Control_asciicircum
+altgr  control keycode 7 =     Control_asciicircum
+       alt     keycode 7 =     Meta_six        
+altgr  alt     keycode 7 =     Meta_six
+       shift alt keycode 7 =   Meta_asciicircum
+altgr  shift alt keycode 7 =   Meta_asciicircum
+altgr  shift   keycode 8 =     colon   #winkeys variant
+               keycode 8 =     seven   ampersand       seven   period
+       control keycode 8 =     Control_underscore
+altgr  control keycode 8 =     Control_underscore
+       alt     keycode 8 =     Meta_seven
+altgr  alt     keycode 8 =     Meta_seven
+       shift alt keycode 8 =   Meta_ampersand
+altgr  shift alt keycode 8 =   Meta_ampersand
+altgr  shift   keycode 8 =     question  #winkeys variant
+               keycode 9 =     eight   asterisk        eight   asterisk
+       control keycode 9 =     Delete  
+altgr  control keycode 9 =     Delete
+       alt     keycode 9 =     Meta_eight
+altgr  alt     keycode 9 =     Meta_eight
+       shift alt keycode 9 =   Meta_asterisk
+altgr  shift alt keycode 9 =   Meta_asterisk
+               keycode 10 =    nine    parenleft       nine    parenleft
+       alt     keycode 10 =    Meta_nine
+altgr  alt     keycode 10 =    Meta_nine
+       shift alt keycode 10 =  Meta_parenleft
+altgr  shift alt keycode 10 =  Meta_parenleft
+               keycode 11 =    zero    parenright      zero    parenright
+       alt     keycode 11 =    Meta_zero
+altgr  alt     keycode 11 =    Meta_zero
+       shift alt keycode 11 =  Meta_parenright
+altgr  shift alt keycode 11 =  Meta_parenright
+               keycode 12 =    minus   underscore      minus   underscore
+       control keycode 12 =    Control_underscore
+altgr  control keycode 12 =    Control_underscore
+       alt     keycode 12 =    Meta_minus
+altgr  alt     keycode 12 =    Meta_minus
+       shift alt keycode 12 =  Meta_underscore
+altgr  shift alt keycode 12 =  Meta_underscore
+               keycode 13 =    equal   plus            equal   plus
+       alt     keycode 13 =    Meta_equal
+altgr  alt     keycode 13 =    Meta_equal
+       shift alt keycode 13 =  Meta_plus
+altgr  shift alt keycode 13 =  Meta_plus
+               keycode 14 =    Delete  Delete          Delete  Delete
+       alt     keycode 14 =    Meta_Delete
+altgr  alt     keycode 14 =    Meta_Delete
+               keycode 15 =    Tab     Tab             Tab     Tab     
+       alt     keycode 15 =    Meta_Tab        
+altgr  alt     keycode 15 =    Meta_Tab
+               keycode 16 =    +q      
+altgr          keycode 16 =    U+0439
+altgr  shift   keycode 16 =    U+0419
+               keycode 17 =    +w      
+altgr          keycode 17 =    U+0446
+altgr  shift   keycode 17 =    U+0426
+               keycode 18 =    +e
+altgr          keycode 18 =    U+0443
+altgr  shift   keycode 18 =    U+0423
+               keycode 19 =    +r
+altgr          keycode 19 =    U+043A
+altgr  shift   keycode 19 =    U+041A
+               keycode 20 =    +t
+altgr          keycode 20 =    U+0435
+altgr  shift   keycode 20 =    U+0415
+               keycode 21 =    +y
+altgr          keycode 21 =    U+043D
+altgr  shift   keycode 21 =    U+041D
+               keycode 22 =    +u
+altgr          keycode 22 =    U+0433
+altgr  shift   keycode 22 =    U+0413
+               keycode 23 =    +i
+altgr          keycode 23 =    U+0448
+altgr  shift   keycode 23 =    U+0428
+               keycode 24 =    +o
+altgr          keycode 24 =    U+0449
+altgr  shift   keycode 24 =    U+0429
+               keycode 25 =    +p
+altgr          keycode 25 =    U+0437
+altgr  shift   keycode 25 =    U+0417
+               keycode 26 =    bracketleft     braceleft
+altgr          keycode 26 =    U+0445
+altgr  shift   keycode 26 =    U+0425
+       control keycode 26 =    Escape  
+altgr  control keycode 26 =    Escape  
+       alt     keycode 26 =    Meta_bracketleft
+altgr  alt     keycode 26 =    Meta_bracketleft
+               keycode 27 =  bracketright braceright bracketleft bracketright
+
+# The keycode "0xFF" is too dangerous for many programs (including emacs).
+# So let it be bracket instead of Hard Sign.
+altgr          keycode 27 =    U+044A
+altgr  shift   keycode 27 =    U+042A
+       control keycode 27 =    Control_bracketright
+altgr  control keycode 27 =    Control_bracketright
+       alt     keycode 27 =    Meta_bracketright
+altgr  alt     keycode 27 =    Meta_bracketright
+               keycode 28 =    Return  
+       alt     keycode 28 =    Meta_Control_m  
+altgr  alt     keycode 28 =    Meta_Control_m
+       control keycode 28 =    Linefeed
+altgr  control keycode 28 =    Linefeed
+               keycode 29 =    Control 
+               keycode 30 =    +a
+altgr          keycode 30 =    U+0444
+altgr  shift   keycode 30 =    U+0424
+               keycode 31 =    +s
+altgr          keycode 31 =    U+044B
+altgr  shift   keycode 31 =    U+042B
+               keycode 32 =    +d
+altgr          keycode 32 =    U+0432
+altgr  shift   keycode 32 =    U+0412
+               keycode 33 =    +f
+altgr          keycode 33 =    U+0430
+altgr  shift   keycode 33 =    U+0410
+               keycode 34 =    +g
+altgr          keycode 34 =    U+043F
+altgr  shift   keycode 34 =    U+041F
+               keycode 35 =    +h
+altgr          keycode 35 =    U+0440
+altgr  shift   keycode 35 =    U+0420
+               keycode 36 =    +j
+altgr          keycode 36 =    U+043E
+altgr  shift   keycode 36 =    U+041E
+               keycode 37 =    +k
+altgr          keycode 37 =    U+043B
+altgr  shift   keycode 37 =    U+041B
+               keycode 38 =    +l
+altgr          keycode 38 =    U+0434
+altgr  shift   keycode 38 =    U+0414
+               keycode 39 =    semicolon        colon
+altgr          keycode 39 =    U+0436
+altgr  shift   keycode 39 =    U+0416
+       alt     keycode 39 =    Meta_semicolon
+altgr  alt     keycode 39 =    Meta_semicolon
+               keycode 40 =    apostrophe       quotedbl
+       control keycode 40 =    Control_g
+altgr  control keycode 40 =    Control_g
+       alt     keycode 40 =    Meta_apostrophe
+altgr  alt     keycode 40 =    Meta_apostrophe
+altgr          keycode 40 =    U+044D
+altgr  shift   keycode 40 =    U+042D
+               keycode 41 =    grave asciitilde grave asciitilde
+       control keycode 41 =    nul     
+altgr  control keycode 41 =    nul
+       alt     keycode 41 =    Meta_grave
+altgr  alt     keycode 41 =    Meta_grave
+altgr          keycode 41 =    U+0451
+altgr  shift   keycode 41 =    U+0401
+               keycode 42 =    Shift   
+               keycode 43 =    backslash bar           backslash bar   
+       control keycode 43 =    Control_backslash
+altgr  control keycode 43 =    Control_backslash
+       alt     keycode 43 =    Meta_backslash
+altgr  alt     keycode 43 =    Meta_backslash
+       shift alt keycode 43 =  Meta_bar
+altgr  shift alt keycode 43 =  Meta_bar
+               keycode 44 =    +z
+altgr          keycode 44 =    U+044f
+altgr  shift   keycode 44 =    U+042f
+               keycode 45 =    +x
+altgr          keycode 45 =    U+0447
+altgr  shift   keycode 45 =    U+0427
+               keycode 46 =    +c
+altgr          keycode 46 =    U+0441
+altgr  shift   keycode 46 =    U+0421
+               keycode 47 =    +v
+altgr          keycode 47 =    U+043C
+altgr  shift   keycode 47 =    U+041C
+               keycode 48 =    +b
+altgr          keycode 48 =    U+0438
+altgr  shift   keycode 48 =    U+0418
+               keycode 49 =    +n
+altgr          keycode 49 =    U+0442
+altgr  shift   keycode 49 =    U+0422
+               keycode 50 =    +m
+altgr          keycode 50 =    U+044C
+altgr  shift   keycode 50 =    U+042C
+               keycode 51 =    comma            less
+       alt     keycode 51 =    Meta_comma
+altgr  alt     keycode 51 =    Meta_comma
+       alt shift keycode 51 =  Meta_less
+altgr  alt shift keycode 51 =  Meta_less
+altgr          keycode 51 =    U+0431
+altgr  shift   keycode 51 =    U+0411
+               keycode 52 =    period            greater
+       alt     keycode 52 =    Meta_period
+altgr  alt     keycode 52 =    Meta_period
+       alt shift keycode 52 =  Meta_greater
+altgr  alt shift keycode 52 =  Meta_greater
+altgr          keycode 52 =    U+044E
+altgr  shift   keycode 52 =    U+042E
+
+# Can you survive without "yuo" letter? If no put +163 and +179 for
+# altgr keycode 53.
+               keycode 53 =    slash question slash question
+       control keycode 53 =    Delete  
+altgr  control keycode 53 =    Delete
+       alt     keycode 53 =    Meta_slash
+altgr  alt     keycode 53 =    Meta_slash
+       shift alt keycode 53 =  Meta_question
+altgr  shift alt keycode 53 =  Meta_question
+altgr          keycode 53 =    period
+altgr  shift   keycode 53 =    comma
+               keycode 54 =    Shift
+               keycode 55 =    KP_Multiply
+               keycode 56 =    Alt     
+               keycode 57 =    space
+       control keycode 57 =    nul     
+altgr  control keycode 57 =    nul
+       alt     keycode 57 =    Meta_space
+altgr  alt     keycode 57 =    Meta_space
+               keycode 58 =    Caps_Lock
+                       keycode 59 =    F1      F11     F1      F11
+       control         keycode 59 =    F1      
+altgr  control         keycode 59 =    F1
+       alt             keycode 59 =    Console_1
+altgr  alt             keycode 59 =    Console_1
+       control alt     keycode 59 =    Console_1
+altgr  control alt     keycode 59 =    Console_1
+                       keycode 60 =    F2      F12     F2      F12
+       control         keycode 60 =    F2      
+altgr  control         keycode 60 =    F2
+       alt             keycode 60 =    Console_2
+altgr  alt             keycode 60 =    Console_2
+       control alt     keycode 60 =    Console_2
+altgr  control alt     keycode 60 =    Console_2
+                       keycode 61 =    F3      F13     F3      F13
+       control         keycode 61 =    F3      
+altgr  control         keycode 61 =    F3
+       alt             keycode 61 =    Console_3
+altgr  alt             keycode 61 =    Console_3
+       control alt     keycode 61 =    Console_3
+altgr  control alt     keycode 61 =    Console_3
+                       keycode 62 =    F4      F14     F4      F14
+       control         keycode 62 =    F4      
+       altgr   control keycode 62 =    F4
+       alt             keycode 62 =    Console_4
+altgr  alt             keycode 62 =    Console_4
+       control alt     keycode 62 =    Console_4
+altgr  control alt     keycode 62 =    Console_4
+                       keycode 63 =    F5      F15     F5      F15
+       control         keycode 63 =    F5      
+altgr  control         keycode 63 =    F5
+       alt             keycode 63 =    Console_5
+altgr  alt             keycode 63 =    Console_5
+       control alt     keycode 63 =    Console_5
+altgr  control alt     keycode 63 =    Console_5
+                       keycode 64 =    F6      F16     F6      F16
+       control         keycode 64 =    F6      
+altgr  control         keycode 64 =    F6
+       alt             keycode 64 =    Console_6
+altgr  alt             keycode 64 =    Console_6
+       control alt     keycode 64 =    Console_6
+altgr  control alt     keycode 64 =    Console_6
+                       keycode 65 =    F7      F17     F7      F17
+       control         keycode 65 =    F7      
+altgr  control         keycode 65 =    F7
+       alt             keycode 65 =    Console_7
+altgr  alt             keycode 65 =    Console_7
+       control alt     keycode 65 =    Console_7
+altgr  control alt     keycode 65 =    Console_7
+                       keycode 66 =    F8      F18     F8      F18
+       control         keycode 66 =    F8
+altgr  control         keycode 66 =    F8
+       alt             keycode 66 =    Console_8
+altgr  alt             keycode 66 =    Console_8
+       control alt     keycode 66 =    Console_8
+altgr  control alt     keycode 66 =    Console_8
+                       keycode 67 =    F9      F19     F9      F19
+       control         keycode 67 =    F9      
+altgr  control         keycode 67 =    F9
+       alt             keycode 67 =    Console_9
+altgr  alt             keycode 67 =    Console_9
+       control alt     keycode 67 =    Console_9
+altgr  control alt     keycode 67 =    Console_9
+                       keycode 68 =    F10     F20     F10     F20
+       control         keycode 68 =    F10     
+altgr  control         keycode 68 =    F10
+       alt             keycode 68 =    Console_10
+altgr  alt             keycode 68 =    Console_10
+       control alt     keycode 68 =    Console_10
+altgr  control alt     keycode 68 =    Console_10
+               keycode 69 =    Num_Lock        
+               keycode 70 =    Scroll_Lock     Show_Memory     Show_Registers
+       control keycode 70 =    Show_State
+altgr  control keycode 70 =    Show_State
+       alt     keycode 70 =    Scroll_Lock
+altgr  alt     keycode 70 =    Scroll_Lock
+               keycode 71 =    KP_7    
+       alt     keycode 71 =    Ascii_7 
+altgr  alt     keycode 71 =    Ascii_7
+               keycode 72 =    KP_8    
+       alt     keycode 72 =    Ascii_8 
+altgr  alt     keycode 72 =    Ascii_8
+               keycode 73 =    KP_9    
+       alt     keycode 73 =    Ascii_9 
+altgr  alt     keycode 73 =    Ascii_9
+               keycode 74 =    KP_Subtract
+               keycode 75 =    KP_4    
+       alt     keycode 75 =    Ascii_4 
+altgr  alt     keycode 75 =    Ascii_4
+               keycode 76 =    KP_5    
+       alt     keycode 76 =    Ascii_5 
+altgr  alt     keycode 76 =    Ascii_5
+               keycode 77 =    KP_6    
+       alt     keycode 77 =    Ascii_6 
+altgr  alt     keycode 77 =    Ascii_6
+               keycode 78 =    KP_Add  
+               keycode 79 =    KP_1    
+       alt     keycode 79 =    Ascii_1 
+altgr  alt     keycode 79 =    Ascii_1
+               keycode 80 =    KP_2    
+       alt     keycode 80 =    Ascii_2 
+altgr  alt     keycode 80 =    Ascii_2
+               keycode 81 =    KP_3    
+       alt     keycode 81 =    Ascii_3 
+altgr  alt     keycode 81 =    Ascii_3
+               keycode 82 =    KP_0    
+       alt     keycode 82 =    Ascii_0 
+altgr  alt     keycode 82 =    Ascii_0
+               keycode 83 =    KP_Period
+altgr  control keycode 83 =    Boot    
+control        alt     keycode 83 =    Boot    
+altgr  control alt     keycode  83 = Boot
+               keycode 84 =    Last_Console
+               keycode 85 =
+               keycode 86 =    less    greater bar     
+       alt     keycode 86 =    Meta_less
+altgr  alt     keycode 86 =    Meta_less
+                       keycode 87 =    F11     F11     F11     F11
+       control         keycode 87 =    F11     
+altgr  control         keycode 87 =    F11
+       alt             keycode 87 =    Console_11
+altgr  alt             keycode 87 =    Console_11
+       control alt     keycode 87 =    Console_11
+altgr  control alt     keycode 87 =    Console_11
+                       keycode 88 =    F12     F12     F12     F12
+       control         keycode 88 =    F12     
+altgr  control         keycode 88 =    F12
+       alt             keycode 88 =    Console_12
+altgr  alt             keycode 88 =    Console_12
+       control alt     keycode  88 = Console_12
+altgr  control alt     keycode  88 = Console_12
+               keycode 89 =
+               keycode 90 =
+               keycode 91 =
+               keycode 92 =
+               keycode 93 =
+               keycode 94 =
+               keycode 95 =
+               keycode 96 =    KP_Enter        
+keycode  97 = Control
+               keycode 98 =    KP_Divide
+               keycode 99 =    VoidSymbol
+       control keycode 99 =    Control_backslash
+altgr  control keycode 99 =    Control_backslash
+       alt     keycode 99 =    Control_backslash
+altgr  alt     keycode 99 =    Control_backslash
+keycode 100 = AltGr_Lock
+               keycode 101 =   Break   
+               keycode 102 =   Find    
+               keycode 103 =   Up      
+               keycode 104 =   Prior   
+       shift   keycode 104 =   Scroll_Backward
+altgr  shift   keycode 104 =   Scroll_Backward
+               keycode 105 =   Left    
+        alt     keycode 105 =  Decr_Console
+               keycode 106 =   Right
+        alt     keycode 106 =  Incr_Console
+               keycode 107 =   Select  
+               keycode 108 =   Down    
+               keycode 109 =   Next    
+       shift   keycode 109 =   Scroll_Forward
+altgr  shift   keycode 109 =   Scroll_Forward
+               keycode 110 =   Insert  
+               keycode 111 =   Remove  
+altgr  control keycode 111 =   Boot    
+control        alt     keycode 111 =   Boot    
+altgr  control alt keycode 111 = Boot
+               keycode 112 =
+               keycode 113 =
+               keycode 114 =
+               keycode 115 =
+               keycode 116 =
+               keycode 117 =
+               keycode 118 =
+               keycode 119 =
+               keycode 120 =
+               keycode 121 =
+               keycode 122 =
+               keycode 123 =
+               keycode 124 =
+               keycode 125 =
+               keycode 126 =
+               keycode 127 =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/data/keymaps/i386/qwerty/tj_alt-UTF8.map 
new/data/keymaps/i386/qwerty/tj_alt-UTF8.map
--- old/data/keymaps/i386/qwerty/tj_alt-UTF8.map        1970-01-01 
01:00:00.000000000 +0100
+++ new/data/keymaps/i386/qwerty/tj_alt-UTF8.map        2009-10-01 
14:46:23.000000000 +0200
@@ -0,0 +1,507 @@
+# This keymap is based on Russian keymap for a 105-keys PC keyboard.
+# Modified by Victor Ibragimov <[email protected]>
+# Tajik openSUSE & Software Localization 
+# http://www.kde.tj/
+#
+#  Tajik Standard Keyboard Layout
+#  RightAlt is used to change rus/lat, while Shift+CapsLock is used to 
+#  lock capitals.
+#
+#  KEYCODE 12 IS FOR CYRILLIC CAPITAL AND SMALL LETTER GHE WITH STROKE
+#  KEYCODE 13 IS FOR CYRILLIC CAPITAL AND SMALL LETTER U WITH MACRON
+#  KEYCODE 17 IS FOR CYRILLIC CAPITAL AND SMALL LETTER KA WITH DESCENDER
+#  KEYCODE 24 IS FOR CYRILLIC CAPITAL AND SMALL LETTER HA WITH DESCENDER
+#  KEYCODE 31 IS FOR CYRILLIC CAPITAL AND SMALL LETTER CHE WITH DESCENDER
+#  KEYCODE 50 IS FOR CYRILLIC CAPITAL AND SMALL LETTER I WITH MACRON
+#  CYRILLIC CAPITAL LETTER IO ON KEYCODE 53 ENABLED
+#
+
+include "qwerty-layout"
+
+               keycode   0 =
+               keycode   1 =   Escape  Escape          Escape  Escape
+       alt     keycode   1 =   Meta_Escape
+altgr  alt     keycode   1 =   Meta_Escape
+               keycode   2 =   one     exclam          one     exclam
+       alt     keycode   2 =   Meta_one        
+altgr  alt     keycode   2 =   Meta_one
+       shift alt keycode   2 =         Meta_exclam
+altgr  shift alt keycode   2 =         Meta_exclam
+               keycode   3 =   two     at              two     quotedbl
+       control keycode   3 =   nul     
+altgr  control keycode   3 =   nul
+       alt     keycode   3 =   Meta_two        
+altgr  alt     keycode   3 =   Meta_two
+       shift alt keycode   3 =         Meta_at
+altgr  shift alt keycode   3 =         Meta_at
+               keycode   4 =   three numbersign        three   numbersign
+       control keycode   4 =   Escape
+altgr  control keycode   4 =   Escape
+       alt     keycode   4 =   Meta_three
+altgr  alt     keycode   4 =   Meta_three
+       shift alt keycode   4 = Meta_numbersign
+altgr  shift alt keycode   4 = Meta_numbersign
+               keycode   5 =   four    dollar          four    semicolon
+       control keycode   5 =   Control_backslash
+altgr  control keycode   5 =   Control_backslash
+       alt     keycode   5 =   Meta_four
+altgr  alt     keycode   5 =   Meta_four
+       shift alt keycode   5 =         Meta_dollar
+altgr  shift alt keycode   5 =         Meta_dollar
+               keycode   6 =   five     percent        five    percent
+       control keycode   6 =   Control_bracketright
+altgr  control keycode   6 =   Control_bracketright
+       alt     keycode   6 =   Meta_five
+altgr  alt     keycode   6 =   Meta_five
+       shift alt keycode   6 =         Meta_percent
+altgr  shift alt keycode   6 =         Meta_percent    
+               keycode   7 =   six     asciicircum     six     colon
+       control keycode   7 =   Control_asciicircum
+altgr  control keycode   7 =   Control_asciicircum
+       alt     keycode   7 =   Meta_six        
+altgr  alt     keycode   7 =   Meta_six
+       shift alt keycode   7 =         Meta_asciicircum
+altgr  shift alt keycode   7 =         Meta_asciicircum
+               keycode   8 =   seven   ampersand       seven   question
+       control keycode   8 =   Control_underscore
+altgr  control keycode   8 =   Control_underscore
+       alt     keycode   8 =   Meta_seven
+altgr  alt     keycode   8 =   Meta_seven
+       shift alt keycode   8 =         Meta_ampersand
+altgr  shift alt keycode   8 =         Meta_ampersand
+               keycode   9 =   eight   asterisk        eight   asterisk
+       control keycode   9 =   Delete  
+altgr  control keycode   9 =   Delete
+       alt     keycode   9 =   Meta_eight
+altgr  alt     keycode   9 =     Meta_eight
+       shift alt keycode   9 =         Meta_asterisk
+altgr  shift alt keycode   9 =         Meta_asterisk
+               keycode  10 =   nine    parenleft       nine    parenleft
+       alt     keycode  10 =   Meta_nine
+altgr  alt     keycode  10 =    Meta_nine
+       shift alt keycode  10 =         Meta_parenleft
+altgr  shift alt keycode  10 =         Meta_parenleft
+               keycode  11 =   zero    parenright      zero    parenright
+       alt     keycode  11 =   Meta_zero
+altgr  alt     keycode  11 =    Meta_zero
+       shift alt keycode  11 =         Meta_parenright
+altgr  shift alt keycode  11 =         Meta_parenright
+
+# altgr keycode 12 is used for CYRILLIC CAPITAL AND SMALL LETTER GHE WITH 
STROKE
+
+altgr          keycode  12 =   U+0493
+altgr  shift   keycode  12 =   U+0492
+
+#              keycode  12 =   minus   underscore      minus   underscore
+#      control keycode  12 =   Control_underscore
+#altgr control keycode  12 =    Control_underscore
+#      alt     keycode  12 =   Meta_minus
+#altgr alt     keycode  12 =    Meta_minus
+#      shift alt keycode  12 =         Meta_underscore
+#altgr shift alt keycode  12 =         Meta_underscore
+
+# altgr keycode 13 is used for CYRILLIC CAPITAL AND SMALL LETTER U WITH MACRON
+
+altgr          keycode  13 =   U+04EF
+altgr  shift   keycode  13 =   U+04EE
+
+#              keycode  13 =   equal   plus            equal   plus
+#      alt     keycode  13 =   Meta_equal
+#altgr alt     keycode  13 =    Meta_equal
+#      shift alt keycode  13 =         Meta_plus
+#altgr shift alt keycode  13 =         Meta_plus
+
+               keycode  14 =   Delete  Delete          Delete  Delete
+       alt     keycode  14 =   Meta_Delete
+altgr  alt     keycode  14 =   Meta_Delete
+               keycode  15 =   Tab     Tab             Tab     Tab     
+       alt     keycode  15 =   Meta_Tab        
+altgr  alt     keycode  15 =   Meta_Tab
+
+altgr          keycode  16 =   U+0439
+altgr  shift   keycode  16 =   U+0419
+
+# keycode 17 is used for CYRILLIC CAPITAL AND SMALL LETTER KA WITH DESCENDER
+
+altgr          keycode  17 =   U+049B
+altgr  shift   keycode  17 =   U+049A
+
+altgr          keycode  18 =   U+0443
+altgr  shift   keycode  18 =   U+0423
+
+altgr          keycode  19 =   U+043A
+altgr  shift   keycode  19 =   U+041A
+
+altgr          keycode  20 =   U+0435
+altgr  shift   keycode  20 =   U+0415
+
+altgr          keycode  21 =   U+043D
+altgr  shift   keycode  21 =   U+041D
+
+altgr          keycode  22 =   U+0433
+altgr  shift   keycode  22 =   U+0413
+
+altgr          keycode  23 =   U+0448
+altgr  shift   keycode  23 =   U+0428
+
+# keycode 24 is used for CYRILLIC CAPITAL AND SMALL LETTER HA WITH DESCENDER
+
+altgr          keycode  24 =   U+04B3
+altgr  shift   keycode  24 =   U+04B2
+
+altgr          keycode  25 =   U+0437
+altgr  shift   keycode  25 =   U+0417
+               keycode  26 =   bracketleft     braceleft
+altgr          keycode  26 =   U+0445
+altgr  shift   keycode  26 =   U+0425
+       control keycode  26 =   Escape  
+altgr  control keycode  26 =   Escape  
+       alt     keycode  26 =   Meta_bracketleft
+altgr  alt     keycode  26 =   Meta_bracketleft
+               keycode  27 =  bracketright braceright bracketleft bracketright
+
+#  The keycode "0xFF" is too dangerous for many programs (including emacs).
+#  So let it be bracket instead of Hard Sign.
+altgr          keycode  27 =   U+044A
+altgr  shift   keycode  27 =   U+042A 
+       control keycode  27 =   Control_bracketright
+altgr  control keycode  27 =   Control_bracketright
+       alt     keycode  27 =   Meta_bracketright
+altgr  alt     keycode  27 =   Meta_bracketright
+               keycode  28 =   Return  
+       alt     keycode  28 =   0x080d  
+altgr  alt     keycode  28 =   0x080d
+       control keycode  28 =   Linefeed
+altgr  control keycode  28 =   Linefeed
+               keycode  29 =   Control 
+
+altgr          keycode  30 =   U+0444
+altgr  shift   keycode  30 =   U+0424
+
+# keycode 31 is used for CYRILLIC CAPITAL AND SMALL LETTER CHE WITH DESCENDER
+
+altgr          keycode  31 =   U+04B7
+altgr  shift   keycode  31 =   U+04B6
+
+altgr          keycode  32 =   U+0432
+altgr  shift   keycode  32 =   U+0412
+
+altgr          keycode  33 =   U+0430
+altgr  shift   keycode  33 =   U+0410
+
+altgr          keycode  34 =   U+043F
+altgr  shift   keycode  34 =   U+041F
+
+altgr          keycode  35 =   U+0440
+altgr  shift   keycode  35 =   U+0420
+
+altgr          keycode  36 =   U+043E
+altgr  shift   keycode  36 =   U+041E
+
+altgr          keycode  37 =   U+043B
+altgr  shift   keycode  37 =   U+041B
+
+altgr          keycode  38 =   U+0434
+altgr  shift   keycode  38 =   U+0414
+               keycode  39 =   semicolon        colon
+altgr          keycode  39 =   U+0436
+altgr  shift   keycode  39 =   U+0416
+       alt     keycode  39 =   Meta_semicolon
+altgr  alt     keycode  39 =   Meta_semicolon
+               keycode  40 =   apostrophe       quotedbl
+       control keycode  40 =   Control_g
+altgr  control keycode  40 =   Control_g
+       alt     keycode  40 =   Meta_apostrophe
+altgr  alt     keycode  40 =   Meta_apostrophe
+altgr          keycode  40 =   U+044D
+altgr  shift   keycode  40 =   U+042D
+               keycode  41 =   grave asciitilde U+0451 U+0401
+       control keycode  41 =   nul     
+altgr  control keycode  41 =   nul
+       alt     keycode  41 =   Meta_grave
+altgr  alt     keycode  41 =   Meta_grave
+               keycode  42 =   Shift   
+               keycode  43 =   backslash bar           slash bar       
+       control keycode  43 =   Control_backslash
+altgr  control keycode  43 =   Control_backslash
+       alt     keycode  43 =   Meta_backslash
+altgr  alt     keycode  43 =   Meta_backslash
+       shift alt keycode  43 =         Meta_bar
+altgr  shift alt keycode  43 =         Meta_bar
+
+altgr          keycode  44 =   U+044F
+altgr  shift   keycode  44 =   U+042F
+
+altgr          keycode  45 =   U+0447
+altgr  shift   keycode  45 =   U+0427
+
+altgr          keycode  46 =   U+0441
+altgr  shift   keycode  46 =   U+0421
+
+altgr          keycode  47 =   U+043C
+altgr  shift   keycode  47 =   U+041C
+
+altgr          keycode  48 =   U+0438
+altgr  shift   keycode  48 =   U+0418
+
+altgr          keycode  49 =   U+0442
+altgr  shift   keycode  49 =   U+0422
+
+# keycode 50 is used for CYRILLIC CAPITAL AND SMALL LETTER I WITH MACRON
+
+altgr          keycode  50 =   U+04E3
+altgr  shift   keycode  50 =   U+04E2
+
+               keycode  51 =   comma            less
+       alt     keycode  51 =   Meta_comma
+altgr  alt     keycode  51 =   Meta_comma
+       alt shift keycode  51 =         Meta_less
+altgr  alt shift keycode  51 =         Meta_less
+altgr          keycode  51 =   U+0431
+altgr  shift   keycode  51 =   U+0411
+               keycode  52 =   period            greater
+       alt     keycode  52 =   Meta_period
+altgr  alt     keycode  52 =   Meta_period
+       alt shift keycode  52 =         Meta_greater
+altgr  alt shift keycode  52 =         Meta_greater
+altgr          keycode  52 =   U+044E
+altgr  shift   keycode  52 =   U+042E
+
+#  Can you survive without "yuo" letter? If no put U+0451 and U+0401 for 
+#  altgr keycode 53.
+               keycode  53 =   slash question period comma
+       control keycode  53 =   Delete  
+altgr  control keycode  53 =   Delete
+
+# CYRILLIC CAPITAL LETTER IO ENABLED
+
+       alt     keycode  53 =   U+0451
+altgr  alt     keycode  53 =   U+0401
+
+       shift alt keycode  53 =         Meta_question
+altgr  shift alt keycode  53 =         Meta_question
+               keycode  54 =   Shift
+               keycode  55 =   KP_Multiply
+               keycode  56 =   Alt     
+               keycode  57 =   space   space           space   space   
+       control keycode  57 =   nul     
+altgr  control keycode  57 =   nul
+       alt     keycode  57 =   Meta_space
+altgr  alt     keycode  57 =   Meta_space
+               keycode  58 =   Caps_Lock
+                       keycode  59 =   F1      F11     F1      F11
+       control         keycode  59 =   F1      
+altgr  control         keycode  59 =   F1
+       alt             keycode  59 =   Console_1
+altgr  alt             keycode  59 =   Console_1
+       control alt     keycode  59 =   Console_1
+altgr  control alt     keycode  59 =   Console_1
+                       keycode  60 =   F2      F12     F2      F12
+       control         keycode  60 =   F2      
+altgr  control         keycode  60 =   F2
+       alt             keycode  60 =   Console_2
+altgr  alt             keycode  60 =   Console_2
+       control alt     keycode  60 =   Console_2
+altgr  control alt     keycode  60 =   Console_2
+                       keycode  61 =   F3      F13     F3      F13
+       control         keycode  61 =   F3      
+altgr  control         keycode  61 =   F3
+       alt             keycode  61 =   Console_3
+altgr  alt             keycode  61 =   Console_3
+       control alt     keycode  61 =   Console_3
+altgr  control alt     keycode  61 =   Console_3
+                       keycode  62 =   F4      F14     F4      F14
+       control         keycode  62 =   F4      
+       altgr   control keycode  62 =   F4
+       alt             keycode  62 =   Console_4
+altgr  alt             keycode  62 =   Console_4
+       control alt     keycode  62 =   Console_4
+altgr  control alt     keycode  62 =   Console_4
+                       keycode  63 =   F5      F15     F5      F15
+       control         keycode  63 =   F5      
+altgr  control         keycode  63 =   F5
+       alt             keycode  63 =   Console_5
+altgr  alt             keycode  63 =   Console_5
+       control alt     keycode  63 =   Console_5
+altgr  control alt     keycode  63 =   Console_5
+                       keycode  64 =   F6      F16     F6      F16
+       control         keycode  64 =   F6      
+altgr  control         keycode  64 =   F6
+       alt             keycode  64 =   Console_6
+altgr  alt             keycode  64 =   Console_6
+       control alt     keycode  64 =   Console_6
+altgr  control alt     keycode  64 =   Console_6
+                       keycode  65 =   F7      F17     F7      F17
+       control         keycode  65 =   F7      
+altgr  control         keycode  65 =   F7
+       alt             keycode  65 =   Console_7
+altgr  alt             keycode  65 =   Console_7
+       control alt     keycode  65 =   Console_7
+altgr  control alt     keycode  65 =   Console_7
+                       keycode  66 =   F8      F18     F8      F18
+       control         keycode  66 =   F8
+altgr  control         keycode  66 =   F8
+       alt             keycode  66 =   Console_8
+altgr  alt             keycode  66 =   Console_8
+       control alt     keycode  66 =   Console_8
+altgr  control alt     keycode  66 =   Console_8
+                       keycode  67 =   F9      F19     F9      F19
+       control         keycode  67 =   F9      
+altgr  control         keycode  67 =   F9
+       alt             keycode  67 =   Console_9
+altgr  alt             keycode  67 =   Console_9
+       control alt     keycode  67 =   Console_9
+altgr  control alt     keycode  67 =   Console_9
+                       keycode  68 =   F10     F20     F10     F20
+       control         keycode  68 =   F10     
+altgr  control         keycode  68 =   F10
+       alt             keycode  68 =   Console_10
+altgr  alt             keycode  68 =   Console_10
+       control alt     keycode  68 =   Console_10
+altgr  control alt     keycode  68 =   Console_10
+               keycode  69 =   Num_Lock        
+               keycode  70 =   Scroll_Lock     Show_Memory     Show_Registers
+       control keycode  70 =   Show_State
+altgr  control keycode  70 =   Show_State
+       alt     keycode  70 =   Scroll_Lock
+altgr  alt     keycode  70 =   Scroll_Lock
+               keycode  71 =   KP_7    
+       alt     keycode  71 =   Ascii_7 
+altgr  alt     keycode  71 =   Ascii_7
+               keycode  72 =   KP_8    
+       alt     keycode  72 =   Ascii_8 
+altgr  alt     keycode  72 =   Ascii_8
+               keycode  73 =   KP_9    
+       alt     keycode  73 =   Ascii_9 
+altgr  alt     keycode  73 =   Ascii_9
+               keycode  74 =   KP_Subtract
+               keycode  75 =   KP_4    
+       alt     keycode  75 =   Ascii_4 
+altgr  alt     keycode  75 =   Ascii_4
+               keycode  76 =   KP_5    
+       alt     keycode  76 =   Ascii_5 
+altgr  alt     keycode  76 =   Ascii_5
+               keycode  77 =   KP_6    
+       alt     keycode  77 =   Ascii_6 
+altgr  alt     keycode  77 =   Ascii_6
+               keycode  78 =   KP_Add  
+               keycode  79 =   KP_1    
+       alt     keycode  79 =   Ascii_1 
+altgr  alt     keycode  79 =   Ascii_1
+               keycode  80 =   KP_2    
+       alt     keycode  80 =   Ascii_2 
+altgr  alt     keycode  80 =   Ascii_2
+               keycode  81 =   KP_3    
+       alt     keycode  81 =   Ascii_3 
+altgr  alt     keycode  81 =   Ascii_3
+               keycode  82 =   KP_0    
+       alt     keycode  82 =   Ascii_0 
+altgr  alt     keycode  82 =   Ascii_0
+               keycode  83 =   KP_Period
+altgr  control keycode  83 =   Boot    
+control        alt     keycode  83 =   Boot    
+altgr  control alt     keycode  83 = Boot
+               keycode  84 =   Last_Console
+               keycode  85 =
+               keycode  86 =   less    greater bar     
+       alt     keycode  86 =   Meta_less
+altgr  alt     keycode  86 =   Meta_less
+                       keycode  87 =   F11     F11     F11     F11
+       control         keycode  87 =   F11     
+altgr  control         keycode  87 =   F11
+       alt             keycode  87 =   Console_11
+altgr  alt             keycode  87 =   Console_11
+       control alt     keycode  87 =   Console_11
+altgr  control alt     keycode  87 =   Console_11
+                       keycode  88 =   F12     F12     F12     F12
+       control         keycode  88 =   F12     
+altgr  control         keycode  88 =   F12
+       alt             keycode  88 =   Console_12
+altgr  alt             keycode  88 =   Console_12
+       control alt     keycode  88 = Console_12
+altgr  control alt     keycode  88 = Console_12
+               keycode  89 =
+               keycode  90 =
+               keycode  91 =
+               keycode  92 =
+               keycode  93 =
+               keycode  94 =
+               keycode  95 =
+               keycode  96 =   KP_Enter        
+keycode  97 = Control
+               keycode  98 =   KP_Divide
+               keycode  99 =   Control_backslash
+       control keycode  99 =   Control_backslash
+altgr  control keycode  99 =   Control_backslash
+       alt     keycode  99 =   Control_backslash
+altgr  alt     keycode  99 =   Control_backslash
+               keycode 100 =   AltGr_Lock
+               keycode 101 =   Break   
+               keycode 102 =   Find    
+               keycode 103 =   Up      
+               keycode 104 =   Prior   
+       shift   keycode 104 =   Scroll_Backward
+altgr  shift   keycode 104 =   Scroll_Backward
+               keycode 105 =   Left    
+        alt     keycode 105 =  Decr_Console
+               keycode 106 =   Right
+        alt     keycode 106 =  Incr_Console
+               keycode 107 =   Select  
+               keycode 108 =   Down    
+               keycode 109 =   Next    
+       shift   keycode 109 =   Scroll_Forward
+altgr  shift   keycode 109 =   Scroll_Forward
+               keycode 110 =   Insert  
+               keycode 111 =   Remove  
+altgr  control keycode 111 =   Boot    
+control        alt     keycode 111 =   Boot    
+altgr  control alt keycode 111 = Boot
+               keycode 112 =
+               keycode 113 =
+               keycode 114 =
+               keycode 115 =
+               keycode 116 =
+               keycode 117 =
+               keycode 118 =
+               keycode 119 =
+               keycode 120 =
+               keycode 121 =
+               keycode 122 =
+               keycode 123 =
+               keycode 124 =
+               keycode 125 =
+               keycode 126 =
+               keycode 127 =
+string F1 =    "\033[[A"
+string F2 =    "\033[[B"
+string F3 =    "\033[[C"
+string F4 =    "\033[[D"
+string F5 =    "\033[[E"
+string F6 =    "\033[17~"
+string F7 =    "\033[18~"
+string F8 =    "\033[19~"
+string F9 =    "\033[20~"
+string F10 =   "\033[21~"
+string F11 =   "\033[23~"
+string F12 =   "\033[24~"
+string F13 =   "\033[25~"
+string F14 =   "\033[26~"
+string F15 =   "\033[28~"
+string F16 =   "\033[29~"
+string F17 =   "\033[31~"
+string F18 =   "\033[32~"
+string F19 =   "\033[33~"
+string F20 =   "\033[34~"
+string Find =  "\033[1~"
+string Insert =        "\033[2~"
+string Remove =        "\033[3~"
+string Select =        "\033[4~"
+string Prior = "\033[5~"
+string Next =  "\033[6~"
+string F21 =   ""
+string F22 =   ""
+string F23 =   ""
+string F24 =   ""
+string F25 =   ""
+string F26 =   ""
+

++++++ sysconfig.console ++++++
--- /var/tmp/diff_new_pack.ObWz6I/_old  2020-09-23 13:00:47.477859398 +0200
+++ /var/tmp/diff_new_pack.ObWz6I/_new  2020-09-23 13:00:47.477859398 +0200
@@ -1,8 +1,9 @@
 ## Path:        Hardware/Console
 ## Description: Text console settings (see also Hardware/Keyboard)
+#
+
 ## Type:       string
 ## Default:    ""
-## ServiceRestart: kbd
 #
 # Console settings.
 # Note: The KBD_TTY setting from Hardware/Keyboard (sysconfig/keyboard)
@@ -10,7 +11,7 @@
 #
 # Load this console font on bootup:
 # (/usr/share/kbd/consolefonts/)
-# 
+#
 CONSOLE_FONT=""
 
 ## Type:       string
@@ -46,4 +47,3 @@
 # Normally not needed (automatically handled by setfont).
 #
 CONSOLE_MAGIC=""
-

++++++ sysconfig.keyboard ++++++
--- /var/tmp/diff_new_pack.ObWz6I/_old  2020-09-23 13:00:47.501859421 +0200
+++ /var/tmp/diff_new_pack.ObWz6I/_new  2020-09-23 13:00:47.505859426 +0200
@@ -1,16 +1,7 @@
 ## Path:        Hardware/Keyboard
-## Description: Keyboard settings
-## Type:        string
-## Default:     ""
-## ServiceRestart: kbd
-#
-# Keyboard settings for the text console
+## Description: Keyboard settings for the text console
+## ServiceRestart: kbdsettings
 #
-# Keyboard mapping
-# (/usr/share/kbd/keymaps/)
-# e.g. KEYTABLE="de-latin1-nodeadkeys", "us" or empty for US settings
-#
-KEYTABLE=""
 
 ## Type:        integer
 ## Default:
@@ -27,7 +18,8 @@
 ## Type:        list(bios,yes,no)
 ## Default:     bios
 #
-# NumLock on? ("yes" or "no" or empty or "bios" for BIOS setting)
+# NumLock on? ("yes" or "no" or "bios" for BIOS setting)
+# This setting may interfere with GNOME 
/org/gnome/settings-daemon/peripherals/keyboard/remember-numlock-state DConf 
key.
 KBD_NUMLOCK="bios"
 
 ## Type:        yesno
@@ -54,11 +46,11 @@
 KBD_DISABLE_CAPS_LOCK="no"
 
 ## Type:        string
-## Default:     "tty1 tty2 tty3 tty4 tty5 tty6"
+## Default:
 #
 # ttys for the above settings 
 # Example: "tty1 tty2"
-# "" for all tty's
+# "" for tty's 1-6
 #
-KBD_TTY="tty1 tty2 tty3 tty4 tty5 tty6"
+KBD_TTY=""
 

++++++ vlock.pamd ++++++
#%PAM-1.0
auth     include        common-auth
account  include        common-account
password include        common-password
session  include        common-session
++++++ xml2lst.pl ++++++
#!/usr/bin/perl

# converts the <rules>.xml file to the old format <rules>.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};
}

Reply via email to