Hello community,

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

Package is "kbd"

Wed Sep 23 12:59:13 2020 rev:99 rq: version:1.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/kbd/kbd.changes  2020-09-21 17:08:31.131196922 
+0200
+++ /work/SRC/openSUSE:Factory/.kbd.new.4249/kbd.changes        2020-09-23 
12:59:20.217774336 +0200
@@ -2,679 +1,0 @@
-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
  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

New:
----
  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

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

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 ++++++
Release info on the kbd utils
=============================
                                        Fri Feb 27 18:39:59 CET 2004, jw

SuSE upgraded the kbd utils to 1.12 for the release of SuSE Linux 9.1.

The choose-tty patch has been accepted upstream. Note that we used -c
for selecting the console device, now it is -C

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
SuSE upgraded the kbd utils to 1.08 for the release of SuSE Linux 9.0.

Some of our patches to 1.06 have been integrated.

Most of the changes from us to 1.03wip (SL 7.1 and 7.0) and 1.05 (SL 7.2,
7.3) have been incorporated, so we can finally go with an almost unpatched
kbd again. 

Since 1.03a, there is support for fonts that have a width larger than
8 pixels. This will only work with framebuffer support on most architectures
though. Some fonts with 12x22 size are available as well, check
/usr/share/kbd/consolefonts/.
You probably want to use higher resolutions with such a large font, like
1152x858. If you use fbset don't forget to set -vyres to a large value,
otherwise your framebuffer's speed will be lower than it could.

setfont has been patched to allow specifing the tty with -c where the
changes should be applied to. This is used in the setup scripts.

                                Your SuSE team <[email protected]>

New 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

In previous versions of SuSE Linux, some keytables have been hacked to
include support for the <compose> key and to include compose tables.
This has now been replaced by a more general solution:
The kbd setup scripts uses another /etc/sysconfig/keyboard variable to
determine which compose tables should be loaded and whether the compose key
should be mapped: COMPOSETABLE.
For all words listed there, loadkeys will be called with the argument
compose.word. (Except for clear which sets a flag to clear the compose
table.) 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.

Example: (/etc/sysconfig/keyboard)
COMPOSETABLE="clear winkeys shiftctrl latin1.add"

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

                                Your SuSE team <[email protected]>
++++++ kbd-1.12-Meta-Tab.diff ++++++
++++ 1048 lines (skipped)

++++++ kbd-1.12-be-nice-to-kdm.diff ++++++
--- kbd-1.12/src/setfont.c.orig 2005-03-03 19:17:42.000000000 +0000
+++ kbd-1.12/src/setfont.c      2005-03-04 15:19:13.000000000 +0000
@@ -189,6 +189,20 @@
 
        fd = getfd(console);
 
+       int kd_mode = -1;
+       if (!ioctl(fd, KDGETMODE, &kd_mode) && (kd_mode == KD_GRAPHICS))
+         {
+           /* 
+            * PIO_FONT will fail on a console which is in foreground and in 
KD_GRAPHICS mode.
+            * 2005-03-03, [email protected].
+            */
+           if (verbose) 
+             printf("setfont: graphics console %s skipped\n", 
console?console:"");
+           close(fd);
+           return 0;
+         }
+       
+
        if (!ifilct && !mfil && !ufil &&
            !Ofil && !ofil && !omfil && !oufil && !restore)
          /* reset to some default */
--- kbd-1.12/src/kdfontop.c.orig        2005-03-03 19:14:27.000000000 +0000
+++ kbd-1.12/src/kdfontop.c     2005-03-03 19:42:28.000000000 +0000
@@ -7,6 +7,7 @@
 #include <stdio.h>
 #include <errno.h>
 #include <stdlib.h>            /* free() */
+#include <unistd.h>            /* usleep() */
 #include <sys/ioctl.h>
 #include <linux/kd.h>
 #include "kdfontop.h"
@@ -275,7 +276,19 @@
 
        /* Third attempt: PIO_FONT */
        /* This will load precisely 256 chars, independent of count */
-       i = ioctl(fd, PIO_FONT, buf);
+       int loop = 0;
+
+       /* we allow ourselves to hang here for ca 5 seconds, xdm may be playing 
tricks on us. */
+       while ((loop++ < 20) && (i = ioctl(fd, PIO_FONT, buf)))
+          {
+           if (loop <= 1) 
+             fprintf(stderr, "putfont: PIO_FONT trying ...\n");
+           else
+             fprintf(stderr, ".");
+           usleep(250000);
+         }
+       fprintf(stderr, "\n");
+
        if (i) {
                fprintf(stderr, "%s: putfont: %d,%dx%d:  failed: %d\n", 
progname, count, width, height, i);
                perror("putfont: PIO_FONT");
++++++ kbd-1.12-cz-us-qwertz.diff ++++++
diff -Nur kbd-1.12-12/data/keymaps/i386/qwertz/cz-us-qwertz.map 
kbd-1.12-13/data/keymaps/i386/qwertz/cz-us-qwertz.map
--- kbd-1.12-12/data/keymaps/i386/qwertz/cz-us-qwertz.map       2004-02-27 
17:19:23.000000000 +0100
+++ kbd-1.12-13/data/keymaps/i386/qwertz/cz-us-qwertz.map       2004-02-27 
17:23:00.000000000 +0100
@@ -35,7 +35,7 @@
 keycode 18  = e
 keycode 19  = r
 keycode 20  = t
-keycode 21  = z
+keycode 21  = z Z y Y
 keycode 22  = u
 keycode 23  = i
 keycode 24  = o
@@ -61,7 +61,7 @@
 keycode 41  = grave semicolon grave asciitilde nul VoidSymbol nul VoidSymbol 
Meta_grave VoidSymbol Meta_grave VoidSymbol
 keycode 42  = Shift
 keycode 43  = backslash bar backslash bar Control_backslash VoidSymbol 
Control_backslash VoidSymbol Meta_backslash VoidSymbol Meta_backslash VoidSymbol
-keycode 44  = y
+keycode 44  = y Y z Z
 keycode 45  = x
 keycode 46  = c
 keycode 47  = v
++++++ kbd-1.12-docu-X11R6-xorg.diff ++++++
--- kbd-1.12/doc/kbd.FAQ-15.html.orig   2003-09-24 23:01:40.000000000 +0200
+++ kbd-1.12/doc/kbd.FAQ-15.html        2006-08-11 12:10:06.000000000 +0200
@@ -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>
--- kbd-1.12/doc/kbd.FAQ.txt.orig       1999-10-08 22:46:24.000000000 +0200
+++ kbd-1.12/doc/kbd.FAQ.txt    2006-08-11 12:10:16.000000000 +0200
@@ -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.
--- kbd-1.12/doc/kbd.FAQ-8.html.orig    2003-09-24 23:01:40.000000000 +0200
+++ kbd-1.12/doc/kbd.FAQ-8.html 2006-08-11 12:09:53.000000000 +0200
@@ -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.12-dumpkeys-full.diff ++++++
diff -Nur kbd-1.12-7/src/dumpkeys.c kbd-1.12-8/src/dumpkeys.c
--- kbd-1.12-7/src/dumpkeys.c   2004-02-26 22:56:09.000000000 +0100
+++ kbd-1.12-8/src/dumpkeys.c   2004-02-26 23:00:23.000000000 +0100
@@ -126,6 +126,7 @@
        int t;
        int v;
        const char *p;
+       int plus;
 
        printf(" ");
        t = KTYP(code);
@@ -138,18 +139,20 @@
                        printf("U+%04x          ", code);
                return;
        }
+       plus = 0;
        if (t == KT_LETTER) {
                t = KT_LATIN;
                printf("+");
+               plus++;
        }
        if (!numeric && t < syms_size && v < syms[t].size &&
            (p = syms[t].table[v])[0])
-               printf("%-16s", p);
+               printf("%-*s", 16 - plus, p);
        else if (!numeric && t == KT_META && v < 128 && v < syms[0].size &&
                 (p = syms[0].table[v])[0])
                printf("Meta_%-11s", p);
        else
-               printf("0x%04x          ", code);
+               printf("0x%04x         %s", code, plus ? "" : " ");
 }
 
 static char
++++++ kbd-1.12-dumpkeys-ppc.diff ++++++
diff -Nur kbd-1.12-8/src/dumpkeys.c kbd-1.12-9/src/dumpkeys.c
--- kbd-1.12-8/src/dumpkeys.c   2004-02-26 23:00:23.000000000 +0100
+++ kbd-1.12-9/src/dumpkeys.c   2004-02-26 23:07:51.000000000 +0100
@@ -163,6 +163,10 @@
        ke.kb_index = 0;
        ke.kb_table = 0;
        ke.kb_value = K(t, 0);
+#if defined(__mc68000__) || defined(__powerpc__)
+       /* Keycode 0 is a valid keycode, do not clobber it. */
+       ioctl(fd, KDGKBENT, (unsigned long)&ke);
+#endif
        status = (ioctl(fd, KDSKBENT, (unsigned long)&ke) == 0);
        return status;
 }
@@ -245,8 +249,13 @@
 show_short_info(void) {
        int i;
 
+#if !defined(__mc68000__) && !defined(__powerpc__)
        printf(_("keycode range supported by kernel:           1 - %d\n"),
               nr_keys - 1);
+#else
+       printf(_("keycode range supported by kernel:           0 - %d\n"),
+              NR_KEYS - 1);
+#endif
        printf(_("max number of actions bindable to a key:         %d\n"),
               MAX_NR_KEYMAPS);
        get_keymaps();
@@ -358,7 +367,11 @@
        for (j = 0; j < MAX_NR_KEYMAPS; j++) {
             int ja = (j | M_ALT);
             if (j != ja && keymap_index[j] >= 0 && keymap_index[ja] >= 0)
+#if !defined(__mc68000__) && !defined(__powerpc__)
                  for (i = 1; i < nr_keys; i++) {
+#else
+                 for (i = 0; i < nr_keys; i++) {
+#endif
                       int buf0, buf1, type;
 
                       buf0 = get_bind(i, j);
@@ -384,7 +397,11 @@
 not_alt_is_meta:
 
 no_shorthands:
+#if !defined(__mc68000__) && !defined(__powerpc__)
        for (i = 1; i < nr_keys; i++) {
+#else
+       for (i = 0; i < nr_keys; i++) {
+#endif
            for (j = 0; j < keymapnr; j++)
              buf[j] = get_bind(i, good_keymap[j]);
 
++++++ kbd-1.12-el-locale-update.diff ++++++
--- po/Makefile.in
+++ po/Makefile.in
@@ -34,9 +34,9 @@
 COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
 
 # Enter here all .po files
-POFILES =  cs.po da.po de.po es.po fr.po gr.po nl.po pl.po ro.po ru.po sv.po 
tr.po
+POFILES =  cs.po da.po de.po el.po es.po fr.po nl.po pl.po ro.po ru.po sv.po 
tr.po
 # the same but with .gmo
-GMOFILES = cs.gmo da.gmo de.gmo es.gmo fr.gmo gr.gmo nl.gmo pl.gmo ro.gmo 
ru.gmo sv.gmo tr.gmo
+GMOFILES = $(patsubst %.po, %.gmo, $(POFILES))
 
 CATALOGS = $(GMOFILES)
 CATOBJEXT = .gmo
++++++ kbd-1.12-handle-small-table.diff ++++++
diff -Nur kbd-1.12-10/src/dumpkeys.c kbd-1.12-11/src/dumpkeys.c
--- kbd-1.12-10/src/dumpkeys.c  2004-02-26 23:10:19.000000000 +0100
+++ kbd-1.12-11/src/dumpkeys.c  2004-02-27 17:18:15.000000000 +0100
@@ -113,10 +113,13 @@
        ke.kb_index = index;
        ke.kb_table = table;
        if (ioctl(fd, KDGKBENT, (unsigned long)&ke)) {
-               perror("KDGKBENT");
-               fprintf(stderr, _("KDGKBENT error at index %d in table %d\n"),
-                       index, table);
-               exit(1);
+               if (index < 128) {
+                       perror("KDGKBENT");
+                       fprintf(stderr, _("KDGKBENT error at index %d in table 
%d\n"),
+                               index, table);
+                       exit(1);
+               } else
+                       return -1;
        }
        return ke.kb_value;
 }
@@ -375,6 +378,8 @@
                       int buf0, buf1, type;
 
                       buf0 = get_bind(i, j);
+                      if (buf0 == -1)
+                          break;
                       type = KTYP(buf0);
                       if ((type == KT_LATIN || type == KT_LETTER)
                           && KVAL(buf0) < 128) {
@@ -404,6 +409,8 @@
 #endif
            for (j = 0; j < keymapnr; j++)
              buf[j] = get_bind(i, good_keymap[j]);
+           if (buf[0] == -1)
+               break;
 
            if (table_shape == FULL_TABLE) {
                printf("keycode %3d =", i);
++++++ kbd-1.12-happy-abuild.diff ++++++
--- kbd-1.12/src/psffontop.c.orig       2005-07-07 15:00:50.547440043 +0200
+++ kbd-1.12/src/psffontop.c    2005-07-07 15:02:49.642520578 +0200
@@ -465,7 +465,7 @@
        writepsffontheader(ofil, width, height, fontlen, &psftype, flags);
        utf8 = (psftype == 2);
 
-       fwrite(fontbuf, charsize, fontlen, ofil);
+       (void)fwrite(fontbuf, charsize, fontlen, ofil);
        /* unimaps: -1 => do nothing: caller will append map */
        if (uclistheads != NULL && uclistheads != (struct unicode_list*)-1) {
                struct unicode_list *ul;
--- kbd-1.12/src/loadkeys.y.orig        2005-07-07 15:00:50.891379623 +0200
+++ kbd-1.12/src/loadkeys.y     2005-07-07 15:02:19.174871991 +0200
@@ -20,6 +20,7 @@
 #include <sys/ioctl.h>
 #include <linux/kd.h>
 #include <linux/keyboard.h>
+#include <unistd.h>            /* readlink */
 #include "paths.h"
 #include "getfd.h"
 #include "findfile.h"
@@ -65,9 +66,9 @@
 static void loadkeys(char *console, int *warned);
 static void mktable(void);
 static void strings_as_usual(void);
-static void keypad_as_usual(char *keyboard);
-static void function_keys_as_usual(char *keyboard);
-static void consoles_as_usual(char *keyboard);
+/* static void keypad_as_usual(char *keyboard); */
+/* static void function_keys_as_usual(char *keyboard); */
+/* static void consoles_as_usual(char *keyboard); */
 static void compose_as_usual(char *charset);
 static void lkfatal0(const char *, int);
 extern int set_charset(const char *charset);
@@ -559,7 +560,6 @@
 
 void
 open_include(char *s) {
-       char *t, *te;
 
        if (verbose)
                /* start reading include file */
@@ -713,7 +713,6 @@
             int alttable = table | M_ALT;
             int type = KTYP(keycode);
             int val = KVAL(keycode);
-            char *p;
             if (alttable != table && defining[alttable] &&
                 (!keymap_was_set[alttable] ||
                  !(keymap_was_set[alttable])[index]) &&
@@ -1021,7 +1020,7 @@
 static void
 loadkeys (char *console, int *warned) {
         int fd;
-        int keyct, funcct, diacct;
+        int keyct, funcct, diacct = 0;
 
        fd = getfd(console);
        keyct = defkeys(fd, console, &warned);
@@ -1156,7 +1155,6 @@
 mktable () {
        int i, imax, j;
 
-       struct kbsentry kbs;
        u_char *p;
        int maxfunc;
        unsigned int keymap_count = 0;
--- kbd-1.12/src/mapscrn.c.orig 2005-07-07 15:00:50.869383487 +0200
+++ kbd-1.12/src/mapscrn.c      2005-07-07 15:02:19.190869181 +0200
@@ -126,7 +126,7 @@
        FILE *fp;
        struct stat stbuf;
        int u = 0;
-       int lineno;
+       int lineno = 0;
 
        if ((fp = findfile(mfil, mapdirpath, mapsuffixes)) == NULL) {
                fprintf(stderr, _("mapscrn: cannot open map file _%s_\n"),
@@ -215,18 +215,18 @@
 
        if ((strncmp(s,"0x",2) == 0) && 
            (strspn(s+2,"0123456789abcdefABCDEF") == strlen(s+2)))
-               sscanf(s+2,"%x",&i);
+               (void)sscanf(s+2,"%x",&i);
 
        else if ((*s == '0') &&
                 (strspn(s,"01234567") == strlen(s)))
-               sscanf(s,"%o",&i);
+               (void)sscanf(s,"%o",&i);
 
        else if (strspn(s,"0123456789") == strlen(s)) 
-               sscanf(s,"%d",&i);
+               (void)sscanf(s,"%d",&i);
 
        else if ((strncmp(s,"U+",2) == 0) && strlen(s) == 6 &&
                 (strspn(s+2,"0123456789abcdefABCDEF") == 4))
-               sscanf(s+2,"%x",&i);
+               (void)sscanf(s+2,"%x",&i);
 
        else if ((strlen(s) == 3) && (s[0] == '\'') && (s[2] == '\''))
                i=s[1];
--- kbd-1.12/src/outpsfheader.c.orig    2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12/src/outpsfheader.c 2005-07-07 15:02:19.205866546 +0200
@@ -1,6 +1,7 @@
 /* outpsfheader - auxiliary fn - not to be installed */
 /* assumes a little-endian machine */
 #include <stdio.h>
+#include <stdlib.h>    /* exit */
 #include "psf.h"
 
 void
--- kbd-1.12/src/spawn_console.c.orig   2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12/src/spawn_console.c        2005-07-07 15:02:19.220863912 +0200
@@ -12,6 +12,10 @@
 #include <signal.h>
 #include <errno.h>
 #include <linux/kd.h>
+#include <stdlib.h>    /* system */
+#include <fcntl.h>     /* open */
+#include <sys/ioctl.h> /* ioctl */
+#include <unistd.h>    /* sleep */
 
 void
 sighup(){
--- kbd-1.12/src/setleds.c.orig 2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12/src/setleds.c      2005-07-07 15:01:56.377876261 +0200
@@ -149,7 +149,7 @@
     int optL = 0, optD = 0, optF = 0, verbose = 0;
     char oleds, nleds, oflags, nflags, odefflags, ndefflags;
     char nval, ndef, sign;
-    char osunleds, nsunleds, nsunval, nsundef;
+    char osunleds = 0, nsunleds, nsunval, nsundef;
     char *ap;
     struct led *lp;
 
--- kbd-1.12/openvt/Makefile.orig       2004-01-03 15:44:41.000000000 +0100
+++ kbd-1.12/openvt/Makefile    2005-07-07 15:02:19.235861278 +0200
@@ -1,6 +1,7 @@
 
 CC=gcc
-CFLAGS=-O2 -Wall -ansi
+RPM_OPT_FLAGS=-O2 -Wall -ansi
+CFLAGS=$(RPM_OPT_FLAGS)
 LDFLAGS=$(CFLAGS) -s 
 
 SRC=openvt.c
++++++ kbd-1.12-kbd_mode.diff ++++++
diff -ru kbd-1.12.orig/src/kbd_mode.c kbd-1.12/src/kbd_mode.c
--- kbd-1.12.orig/src/kbd_mode.c        2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12/src/kbd_mode.c     2004-03-30 18:02:49.976870814 +0200
@@ -6,6 +6,7 @@
  */
 #include <fcntl.h>
 #include <stdio.h>
+#include <unistd.h>
 #include <sys/ioctl.h>
 #include <linux/types.h>
 #include <linux/kd.h>
@@ -15,13 +16,14 @@
 
 static void
 usage(void){
-    fprintf(stderr, _("usage: kbd_mode [-a|-u|-k|-s]\n"));
+    fprintf(stderr, _("usage: kbd_mode [-a|-u|-k|-s] [-C device]\n"));
     exit(1);
 }
 
 int
 main(int argc, char *argv[]){
-        int fd, mode;
+        int fd, mode, c, n = 0;
+        char *console = NULL;
 
        set_progname(argv[0]);
 
@@ -32,9 +34,45 @@
        if (argc == 2 && !strcmp(argv[1], "-V"))
            print_version_and_exit();
 
-       fd = getfd(NULL);
+       while ((c = getopt(argc, argv, "auskC:")) != EOF) {
+               switch (c) {
+               case 'a':
+                        if (n > 0)
+                            usage ();
+                       mode = K_XLATE;
+                        n++;
+                       break;
+               case 'u':
+                        if (n > 0)
+                            usage ();
+                       mode = K_UNICODE;
+                        n++;
+                       break;
+               case 's':
+                        if (n > 0)
+                            usage ();
+                       mode = K_RAW;
+                        n++;
+                       break;
+               case 'k':
+                        if (n > 0)
+                            usage ();
+                       mode = K_MEDIUMRAW;
+                        n++;
+                       break;
+               case 'C':
+                        if (!optarg || !optarg[0]) 
+                           usage ();
+                       console = optarg;
+                       break;
+               default:
+                       usage();
+               }
+       }
+
+        fd = getfd(console);
 
-       if (argc == 1) {
+       if (n == 0) {
            /* report mode */
            if (ioctl(fd, KDGKBMODE, &mode)) {
                perror("KDGKBMODE");
@@ -57,20 +95,9 @@
              default:
                printf(_("The keyboard is in some unknown mode\n"));
            }
-           exit(1);
+           exit(0);
        }
-       if (argc != 2)
-         usage();
-       if (!strcmp(argv[1], "-a"))
-         mode = K_XLATE;
-       else if (!strcmp(argv[1], "-u"))
-         mode = K_UNICODE;
-       else if (!strcmp(argv[1], "-s"))
-         mode = K_RAW;
-       else if (!strcmp(argv[1], "-k"))
-         mode = K_MEDIUMRAW;
-       else
-         usage();
+
        if (ioctl(fd, KDSKBMODE, mode)) {
                perror("KDSKBMODE");
                fprintf(stderr, _("%s: error setting keyboard mode\n"), 
progname);
++++++ kbd-1.12-loadkeys-C-opt.diff ++++++
--- kbd-1.12/man/man1/loadkeys.1.in.orig        2005-03-04 19:10:30.000000000 
+0000
+++ kbd-1.12/man/man1/loadkeys.1.in     2005-03-04 19:11:13.000000000 +0000
@@ -7,6 +7,10 @@
 [
 .I -c --clearcompose
 ] [
+.I -C '<cons1 cons2 ...>'
+|
+.I --console=cons1,cons2,...
+] [
 .I -d --default
 ] [
 .I -h --help
@@ -28,6 +32,11 @@
 reads the file or files specified by
 .IR filename... .
 Its main purpose is to load the kernel keymap for the console.
+The affected console device or devices can be specified using the 
+.I -C 
+(or
+.I --console
+) option. This option supports a list of device names 
 .SH "RESET TO DEFAULT"
 If the
 .I -d
--- kbd-1.12/src/loadkeys.y.orig        2005-03-08 17:55:08.000000000 +0000
+++ kbd-1.12/src/loadkeys.y     2005-03-08 17:10:06.000000000 +0000
@@ -62,7 +62,7 @@
 static void compose(int diacr, int base, int res);
 static void do_constant(void);
 static void do_constant_key (int, u_short);
-static void loadkeys(void);
+static void loadkeys(char *console, int *warned);
 static void mktable(void);
 static void strings_as_usual(void);
 static void keypad_as_usual(char *keyboard);
@@ -250,6 +250,8 @@
 "valid options are:\n"
 "\n"
 "      -c --clearcompose clear kernel compose table\n"
+"      -C <cons1,cons2,...>\n"
+"      --console=<...>   Indicate console device(s) to be used.\n"
 "      -d --default      load \"" DEFMAP "\"\n"
 "      -h --help         display this help text\n"
 "      -m --mktable      output a \"defkeymap.c\" to stdout\n"
@@ -269,9 +271,10 @@
 
 int
 main(unsigned int argc, char *argv[]) {
-       const char *short_opts = "cdhmsuqvV";
+       const char *short_opts = "cC:dhmsuqvV";
        const struct option long_opts[] = {
                { "clearcompose", no_argument, NULL, 'c' },
+               { "console",    1, NULL, 'C' },
                { "default",    no_argument, NULL, 'd' },
                { "help",       no_argument, NULL, 'h' },
                { "mktable",    no_argument, NULL, 'm' },
@@ -283,6 +286,8 @@
                { NULL, 0, NULL, 0 }
        };
        int c;
+       char *console = NULL;
+        int warned = 0;
 
        set_progname(argv[0]);
 
@@ -292,6 +297,9 @@
                        case 'c':
                                nocompose = 1;
                                break;
+                       case 'C':
+                               console = optarg;
+                               break;
                        case 'd':
                                optd = 1;
                                break;
@@ -330,8 +338,26 @@
        do_constant();
        if(optm)
                mktable();
+       else if (console)
+         {
+           char *buf = strdup(console);        /* make writable */
+           char *e, *s = buf;
+           while (*s)
+             {
+               while (      *s == ' ' || *s == '\t' || *s == ',') s++;
+               e = s;
+               while (*e && *e != ' ' && *e != '\t' && *e != ',') e++;
+               char c = *e;
+               *e = '\0';
+               if (verbose) printf("%s\n", s);
+               loadkeys(s, &warned);
+               *e = c;
+               s = e;
+             }
+           free(buf);
+         }
        else
-               loadkeys();
+         loadkeys(NULL, &warned);
        exit(0);
 }
 
@@ -760,7 +786,7 @@
 }
 
 static int
-defkeys(int fd) {
+defkeys(int fd, char *cons, int *warned) {
        struct kbentry ke;
        int ct = 0;
        int i,j,fail;
@@ -845,9 +871,21 @@
                  fprintf(stderr, _("%s: failed to restore keyboard mode\n"),
                          progname);
             }
-            fprintf(stderr, _("%s: warning: this map uses Unicode symbols\n"
-                            "    (perhaps you want to do `kbd_mode -u'?)\n"),
-                    progname);
+
+            if (!warned++)
+              {
+                    int kd_mode = -1;
+                    if (ioctl(fd, KDGETMODE, &kd_mode) || (kd_mode != 
KD_GRAPHICS))
+                      {
+                        /* 
+                         * It is okay for the graphics console to have a 
non-unicode mode.
+                         * only talk about other consoles
+                         */
+                        fprintf(stderr, _("%s: warning: this map uses Unicode 
symbols, %s mode=%d\n"
+                                    "    (perhaps you want to do `kbd_mode 
-u'?)\n"),
+                            progname, cons ? cons : "NULL", kd_mode);
+                      }
+              }
        }
        return ct;
 }
@@ -981,12 +1019,12 @@
 }
 
 static void
-loadkeys (void) {
+loadkeys (char *console, int *warned) {
         int fd;
         int keyct, funcct, diacct;
 
-       fd = getfd(NULL);
-       keyct = defkeys(fd);
+       fd = getfd(console);
+       keyct = defkeys(fd, console, &warned);
        funcct = deffuncs(fd);
        if (accent_table_size > 0 || nocompose)
                diacct = defdiacs(fd);
++++++ kbd-1.12-loadkeys-repstdout.diff ++++++
diff -Nur kbd-1.12-5/src/loadkeys.y kbd-1.12-6/src/loadkeys.y
--- kbd-1.12-5/src/loadkeys.y   2004-02-26 22:49:25.000000000 +0100
+++ kbd-1.12-6/src/loadkeys.y   2004-02-26 22:52:44.000000000 +0100
@@ -537,7 +537,7 @@
 
        if (verbose)
                /* start reading include file */
-               fprintf(stderr, _("switching to %s\n"), s);
+               fprintf(stdout, _("switching to %s\n"), s);
 
        lk_push();
 
@@ -613,8 +613,8 @@
        */
       gotf:
        filename = xstrdup(pathname);
-       if (!quiet)
-               fprintf(stderr, _("Loading %s\n"), pathname);
+       if (!quiet && !optm)
+               fprintf(stdout, _("Loading %s\n"), pathname);
        if (first_file) {
                yyin = f;
                first_file = 0;
++++++ kbd-1.12-mac-de.diff ++++++
---
 data/keymaps/mac/all/mac-de-latin1-nodeadkeys.map |    2 -
 data/keymaps/mac/all/mac-de-latin1.map            |   38 ++++++++++++----------
 data/keymaps/mac/include/mac-euro2.map            |    6 +++
 3 files changed, 28 insertions(+), 18 deletions(-)

Index: kbd-1.12/data/keymaps/mac/all/mac-de-latin1-nodeadkeys.map
===================================================================
--- kbd-1.12.orig/data/keymaps/mac/all/mac-de-latin1-nodeadkeys.map
+++ kbd-1.12/data/keymaps/mac/all/mac-de-latin1-nodeadkeys.map
@@ -7,7 +7,7 @@ include "mac-de-latin1.map"
 keycode  24 = apostrophe       grave
 keycode  30 = plus             asterisk         asciitilde
 keycode  50 = asciicircum      degree
-       alt keycode 45 = asciitilde
+       altgr keycode 45 = asciitilde
 
 # corresponding keys in mac-de-latin1.map:
 # keycode  24 = dead_acute       dead_grave
Index: kbd-1.12/data/keymaps/mac/all/mac-de-latin1.map
===================================================================
--- kbd-1.12.orig/data/keymaps/mac/all/mac-de-latin1.map
+++ kbd-1.12/data/keymaps/mac/all/mac-de-latin1.map
@@ -11,22 +11,23 @@ include "mac-qwerty-layout"
 #include "linux-with-alt-and-altgr"
 include "mac-linux-keys-bare.inc"
        plain keycode  65 = KP_Comma
-include "mac-euro.map"
+include "mac-euro2.map"
 compose as usual for "iso-8859-1"
 strings as usual
 
-#             Normal           Shift            AltGr           Strg
-#              Normal  Shift   AltGr           Shift+AltGr     Ctrl    
Shift+Ctrl      AltGr+Ctrl      Shift+AltGr+Ctrl        Alt     Shift+Alt       
AltGr+Alt       Shift+AltGr+Alt 
-keycode        26 =    seven   slash   braceleft       a               b       
c               d               e                       f       g               
h               i               j       k
+#             Normal           Shift            AltGr           Shift+AltGr    
Ctrl    Shift+Ctrl      AltGr+Ctrl      Shift+AltGr+Ctrl        Alt     
Shift+Alt       AltGr+Alt       Shift+AltGr+Alt
 keycode  18 = one              exclam
        shift altgr keycode 18 = at
-keycode  19 = two              quotedbl         twosuperior     nul
-keycode  20 = three            section          threesuperior   Escape
+keycode  19 = two              quotedbl         twosuperior
+       control keycode 19 = nul
+keycode  20 = three            section          threesuperior
+       control keycode 29 = Escape
 keycode  21 = four             dollar
-keycode  23 = five             percent
-keycode  22 = six              ampersand
-keycode  28 = eight            parenleft        bracketleft
-keycode  25 = nine             parenright       bracketright
+keycode  23 = five             percent         bracketleft
+keycode  22 = six              ampersand       bracketright
+keycode  26 = seven            slash            bar
+keycode  28 = eight            parenleft        braceleft
+keycode  25 = nine             parenright       braceright
         control altgr keycode 25 = Control_bracketright
 keycode  29 = zero             equal            braceright
 keycode  27 = ssharp           question         backslash
@@ -38,20 +39,23 @@ keycode  33 = +udiaeresis       +Udiaere
 keycode  30 = plus             asterisk         dead_tilde
 keycode  41 = +odiaeresis       +Odiaeresis
 keycode  39 = +adiaeresis       +Adiaeresis
-keycode  10 = dead_circumflex   degree   Meta_asciicircum        
Control_asciicircum
+keycode  50 = dead_circumflex   degree
+       alt keycode 50 = Meta_asciicircum
+       control keycode 50 = Control_asciicircum
 keycode  42 = numbersign       apostrophe
 keycode  43 = comma            semicolon
 keycode  47 = period           colon
-keycode  44 = minus            underscore       Meta_minus
+keycode  44 = minus            underscore
         shift control keycode 44 = Control_underscore
-keycode  49 = space            space            Meta_space      nul
+keycode  49 = space            space
+       control keycode 49 = nul
 keycode  10 = less             greater          bar
 
 keycode  16 = z
 keycode   6 = y
 
-       alt keycode 12 = at
-       alt keycode 50 = bar
+       altgr keycode 12 = at
+       altgr keycode 37 = at
+       altgr keycode 42 = bar
 #      altgr keycode 26 = bar
-       alt keycode 30 = dead_tilde
-       alt keycode 45 = dead_tilde
+       altgr keycode 45 = dead_tilde
Index: kbd-1.12/data/keymaps/mac/include/mac-euro2.map
===================================================================
--- /dev/null
+++ kbd-1.12/data/keymaps/mac/include/mac-euro2.map
@@ -0,0 +1,6 @@
+# Euro and cent
+# [Say: "loadkeys mac-euro2" to get Euro and cent with AltGr (Option key)
+#  on the positions where many keyboards have E and C.
+#  To get it displayed, use a latin0 (i.e., latin9) font.]
+altgr keycode  14 = currency
+altgr keycode   8 = cent
++++++ kbd-1.12-mac-dk.diff ++++++
diff -Nur kbd-1.12-6/data/keymaps/mac/all/mac-dk-latin1.map 
kbd-1.12-7/data/keymaps/mac/all/mac-dk-latin1.map
--- kbd-1.12-6/data/keymaps/mac/all/mac-dk-latin1.map   2004-02-26 
22:52:20.000000000 +0100
+++ kbd-1.12-7/data/keymaps/mac/all/mac-dk-latin1.map   2004-02-26 
22:57:47.000000000 +0100
@@ -23,18 +23,20 @@
 keycode  25 = nine             parenright       bracketright
 keycode  29 = zero             equal            
 keycode  27 = plus             question        
-keycode  24 = acute       grave
+keycode  24 = acute            grave                   at
 keycode  33 = aring            Aring
 keycode  30 = diaeresis                circumflex      asciitilde
 keycode  41 = ae               AE              adiaeresis      Adiaeresis
 keycode  39 = oslash           Oslash          odiaeresis      Odiaeresis
-keycode  42 = apostrophe       asterisk
+keycode  42 = apostrophe       asterisk        at
 keycode  43 = comma            semicolon
 keycode  47 = period           colon
 keycode  44 = minus            underscore       Meta_minus
         shift control keycode 44 = Control_underscore
 keycode  49 = space            space            Meta_space      nul
 keycode  10 = less             greater          bar
+# odd
+keycode  34 = i I bar
 
 
        alt keycode 12 = at
++++++ kbd-1.12-noclaudio.diff ++++++
diff -Nur kbd-1.12-3/data/keymaps/mac/all/mac-de_CH.map 
kbd-1.12-4/data/keymaps/mac/all/mac-de_CH.map
--- kbd-1.12-3/data/keymaps/mac/all/mac-de_CH.map       2004-02-26 
22:39:18.000000000 +0100
+++ kbd-1.12-4/data/keymaps/mac/all/mac-de_CH.map       2004-02-26 
22:48:31.000000000 +0100
@@ -11,7 +11,7 @@
 ! CtrlR 128 not used
 
 ! plain,shift,command,control,alt,ctrl-alt
-# from http://www.claudio.ch/Etc/pb-sg.kmap
+# from Claudio Nieder
 # modified by [email protected]
 
 alt_is_meta
diff -Nur kbd-1.12-3/data/keymaps/mac/all/mac-fr_CH-latin1.map 
kbd-1.12-4/data/keymaps/mac/all/mac-fr_CH-latin1.map
--- kbd-1.12-3/data/keymaps/mac/all/mac-fr_CH-latin1.map        2004-02-26 
22:39:18.000000000 +0100
+++ kbd-1.12-4/data/keymaps/mac/all/mac-fr_CH-latin1.map        2004-02-26 
22:48:31.000000000 +0100
@@ -11,7 +11,7 @@
 ! CtrlR 128 not used
 
 ! plain,shift,command,control,alt,ctrl-alt
-# from http://www.claudio.ch/Etc/pb-sg.kmap
+# from Claudio Nieder
 # modified by [email protected] from mac-de_CH
 
 alt_is_meta
++++++ kbd-1.12-nohang-kbdrate2.diff ++++++
diff -Nur kbd-1.12-4/src/kbdrate.c kbd-1.12-5/src/kbdrate.c
--- kbd-1.12-4/src/kbdrate.c    2004-02-26 22:46:55.000000000 +0100
+++ kbd-1.12-5/src/kbdrate.c    2004-02-26 22:50:19.000000000 +0100
@@ -90,6 +90,8 @@
 };
 #endif
 
+#include <signal.h>
+
 #include "nls.h"
 #include "version.h"
 
@@ -185,6 +187,12 @@
 #endif /* KIOCSRATE */
 }
 
+void 
+sigalrmhandler( int sig ) {
+       fprintf( stderr, "kbdrate: Failed waiting for kbd controller!\n" );
+       raise( SIGINT );
+}
+
 int
 main( int argc, char **argv ) {
 #ifdef __sparc__
@@ -260,6 +268,9 @@
                exit( 1 );
        }
 
+       signal( SIGALRM, sigalrmhandler );
+       alarm( 3 );
+       
        do {
                lseek( fd, 0x64, 0 );
                read( fd, &data, 1 );
@@ -274,6 +285,8 @@
                read( fd, &data, 1 );
        } while ((data & 2) == 2 );  /* wait */
 
+       alarm( 0 );
+
        lseek( fd, 0x60, 0 );
        sleep( 1 );
        write( fd, &value, 1 );
++++++ kbd-1.12-nounicode-nontty.diff ++++++
diff -Nur kbd-1.12-13/src/unicode_start kbd-1.12-14/src/unicode_start
--- kbd-1.12-13/src/unicode_start       2004-02-27 17:22:32.000000000 +0100
+++ kbd-1.12-14/src/unicode_start       2004-02-27 17:24:51.000000000 +0100
@@ -1,6 +1,17 @@
 #!/bin/sh
 # Enables Unicode processing in the current console.
-#
+
+# 0. Check whether we're on a console
+TTY=`/usr/bin/tty`
+case $TTY in
+       /dev/console|/dev/tty[0-9]*)
+               ;;
+       *)
+               echo "unicode_start skipped on $TTY"
+               exit 0
+               ;;
+esac
+
 # 1. The input side: the keyboard driver.
 
 # Set the keyboard driver in Unicode mode. (Default is ASCII mode.)
diff -Nur kbd-1.12-13/src/unicode_stop kbd-1.12-14/src/unicode_stop
--- kbd-1.12-13/src/unicode_stop        2004-02-27 17:22:32.000000000 +0100
+++ kbd-1.12-14/src/unicode_stop        2004-02-27 17:24:51.000000000 +0100
@@ -1,5 +1,14 @@
 #!/bin/sh
 # stop unicode
+TTY=`/usr/bin/tty`
+case $TTY in
+       /dev/console|/dev/tty[0-9]*)
+               ;;
+       *)
+               echo "unicode_stop skipped on $TTY"
+               exit 0
+               ;;
+esac
 kbd_mode -a
 echo -n -e '\033%@'
 
++++++ kbd-1.12-prtscr_no_sigquit.diff ++++++
diff -ur kbd-1.12-0/data/keymaps/i386/azerty/fr-latin9.map 
kbd-1.12-1/data/keymaps/i386/azerty/fr-latin9.map
--- kbd-1.12-0/data/keymaps/i386/azerty/fr-latin9.map   2002-10-13 
01:47:01.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/azerty/fr-latin9.map   2004-02-27 
19:04:47.000000000 +0100
@@ -417,6 +417,7 @@
 # La touche Ctrl+Pause = Attn = 101 a un code pour elle-m�me
 #
 keycode 101 = Break
+       control keycode 101 = Control_c
 
 keycode 102 = Home
 
diff -ur kbd-1.12-0/data/keymaps/i386/fgGIod/tr_f-latin5.map 
kbd-1.12-1/data/keymaps/i386/fgGIod/tr_f-latin5.map
--- kbd-1.12-0/data/keymaps/i386/fgGIod/tr_f-latin5.map 2002-10-13 
02:21:12.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/fgGIod/tr_f-latin5.map 2004-02-27 
19:04:47.000000000 +0100
@@ -217,6 +217,7 @@
        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           
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/bg-cp1251.map 
kbd-1.12-1/data/keymaps/i386/qwerty/bg-cp1251.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/bg-cp1251.map   2004-01-03 
18:07:57.000000000 +0100
+++ kbd-1.12-1/data/keymaps/i386/qwerty/bg-cp1251.map   2004-02-27 
19:04:47.000000000 +0100
@@ -311,6 +311,7 @@
        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
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/bg_bds-cp1251.map 
kbd-1.12-1/data/keymaps/i386/qwerty/bg_bds-cp1251.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/bg_bds-cp1251.map       2002-10-14 
01:39:32.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/bg_bds-cp1251.map       2004-02-27 
19:04:47.000000000 +0100
@@ -636,6 +636,7 @@
 keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/br-abnt.map 
kbd-1.12-1/data/keymaps/i386/qwerty/br-abnt.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/br-abnt.map     2002-10-13 
02:10:14.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/br-abnt.map     2004-02-27 
19:04:47.000000000 +0100
@@ -197,6 +197,7 @@
        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           
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/by.map 
kbd-1.12-1/data/keymaps/i386/qwerty/by.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/by.map  2002-10-13 02:10:31.000000000 
+0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/by.map  2004-02-27 19:04:47.000000000 
+0100
@@ -529,6 +529,7 @@
                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      \
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/cz-cp1250.map 
kbd-1.12-1/data/keymaps/i386/qwerty/cz-cp1250.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/cz-cp1250.map   2002-10-13 
02:12:14.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/cz-cp1250.map   2004-02-27 
19:04:47.000000000 +0100
@@ -138,6 +138,7 @@
        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
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/cz-lat2-prog.map 
kbd-1.12-1/data/keymaps/i386/qwerty/cz-lat2-prog.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/cz-lat2-prog.map        2002-10-13 
02:02:58.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/cz-lat2-prog.map        2004-02-27 
19:04:47.000000000 +0100
@@ -141,6 +141,7 @@
        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 
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/cz-lat2.map 
kbd-1.12-1/data/keymaps/i386/qwerty/cz-lat2.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/cz-lat2.map     2002-10-13 
02:03:21.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/cz-lat2.map     2004-02-27 
19:04:47.000000000 +0100
@@ -138,6 +138,7 @@
        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
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/cz.map 
kbd-1.12-1/data/keymaps/i386/qwerty/cz.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/cz.map  2002-10-11 13:08:50.000000000 
+0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/cz.map  2004-02-27 19:04:47.000000000 
+0100
@@ -1083,13 +1083,13 @@
 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
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/defkeymap.map 
kbd-1.12-1/data/keymaps/i386/qwerty/defkeymap.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/defkeymap.map   2004-02-27 
19:03:48.000000000 +0100
+++ kbd-1.12-1/data/keymaps/i386/qwerty/defkeymap.map   2004-02-27 
19:04:47.000000000 +0100
@@ -222,6 +222,7 @@
        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
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/defkeymap_V1.0.map 
kbd-1.12-1/data/keymaps/i386/qwerty/defkeymap_V1.0.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/defkeymap_V1.0.map      2002-10-13 
02:05:31.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/defkeymap_V1.0.map      2004-02-27 
19:04:47.000000000 +0100
@@ -185,6 +185,7 @@
        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
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/lt.baltic.map 
kbd-1.12-1/data/keymaps/i386/qwerty/lt.baltic.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/lt.baltic.map   2002-10-13 
02:09:50.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/lt.baltic.map   2004-02-27 
19:04:47.000000000 +0100
@@ -171,6 +171,7 @@
        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           
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/lt.l4.map 
kbd-1.12-1/data/keymaps/i386/qwerty/lt.l4.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/lt.l4.map       2002-10-13 
01:59:51.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/lt.l4.map       2004-02-27 
19:04:47.000000000 +0100
@@ -463,6 +463,7 @@
        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
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/lt.map 
kbd-1.12-1/data/keymaps/i386/qwerty/lt.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/lt.map  2002-10-13 02:00:25.000000000 
+0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/lt.map  2004-02-27 19:04:47.000000000 
+0100
@@ -462,6 +462,7 @@
        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
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/pl2.map 
kbd-1.12-1/data/keymaps/i386/qwerty/pl2.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/pl2.map 2002-10-13 02:06:29.000000000 
+0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/pl2.map 2004-02-27 19:04:47.000000000 
+0100
@@ -241,6 +241,7 @@
        alt             keycode 99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
        control         keycode 102 = F106
 keycode 103 = Up              
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/sk-prog-qwerty.map 
kbd-1.12-1/data/keymaps/i386/qwerty/sk-prog-qwerty.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/sk-prog-qwerty.map      2002-10-13 
02:09:26.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/sk-prog-qwerty.map      2004-02-27 
19:04:47.000000000 +0100
@@ -122,6 +122,7 @@
        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
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/ua-utf-ws.map 
kbd-1.12-1/data/keymaps/i386/qwerty/ua-utf-ws.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/ua-utf-ws.map   2002-10-13 
02:07:56.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/ua-utf-ws.map   2004-02-27 
19:04:47.000000000 +0100
@@ -1526,6 +1526,7 @@
 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           
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/ua-utf.map 
kbd-1.12-1/data/keymaps/i386/qwerty/ua-utf.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/ua-utf.map      2002-10-13 
02:08:07.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/ua-utf.map      2004-02-27 
19:04:47.000000000 +0100
@@ -1516,6 +1516,7 @@
 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           
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/ua-ws.map 
kbd-1.12-1/data/keymaps/i386/qwerty/ua-ws.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/ua-ws.map       2002-10-13 
02:08:19.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/ua-ws.map       2004-02-27 
19:04:47.000000000 +0100
@@ -1521,6 +1521,7 @@
        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           
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/ua.map 
kbd-1.12-1/data/keymaps/i386/qwerty/ua.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/ua.map  2002-10-13 02:08:31.000000000 
+0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/ua.map  2004-02-27 19:04:47.000000000 
+0100
@@ -1515,6 +1515,7 @@
 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           
diff -ur kbd-1.12-0/data/keymaps/i386/qwerty/us-acentos.map 
kbd-1.12-1/data/keymaps/i386/qwerty/us-acentos.map
--- kbd-1.12-0/data/keymaps/i386/qwerty/us-acentos.map  2002-10-13 
02:10:02.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwerty/us-acentos.map  2004-02-27 
19:04:47.000000000 +0100
@@ -193,6 +193,7 @@
        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           
diff -ur kbd-1.12-0/data/keymaps/i386/qwertz/cz-us-qwertz.map 
kbd-1.12-1/data/keymaps/i386/qwertz/cz-us-qwertz.map
--- kbd-1.12-0/data/keymaps/i386/qwertz/cz-us-qwertz.map        2002-10-13 
01:56:20.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwertz/cz-us-qwertz.map        2004-02-27 
19:04:47.000000000 +0100
@@ -135,6 +135,7 @@
 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
diff -ur kbd-1.12-0/data/keymaps/i386/qwertz/sk-prog-qwertz.map 
kbd-1.12-1/data/keymaps/i386/qwertz/sk-prog-qwertz.map
--- kbd-1.12-0/data/keymaps/i386/qwertz/sk-prog-qwertz.map      2002-10-13 
01:57:30.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwertz/sk-prog-qwertz.map      2004-02-27 
19:04:47.000000000 +0100
@@ -122,6 +122,7 @@
        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
diff -ur kbd-1.12-0/data/keymaps/i386/qwertz/sk-qwertz.map 
kbd-1.12-1/data/keymaps/i386/qwertz/sk-qwertz.map
--- kbd-1.12-0/data/keymaps/i386/qwertz/sk-qwertz.map   2002-10-13 
01:56:48.000000000 +0200
+++ kbd-1.12-1/data/keymaps/i386/qwertz/sk-qwertz.map   2004-02-27 
19:04:47.000000000 +0100
@@ -123,6 +123,7 @@
 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.12-setfont-fpclose.diff ++++++
--- kbd-1.12/src/setfont.c.orig 2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12/src/setfont.c      2006-06-21 17:28:56.999867425 +0200
@@ -398,8 +398,10 @@
                        fprintf(stderr, _("When loading several fonts, all "
                                          "must be psf fonts - %s isn't\n"),
                                pathname);
+                       fpclose(fpi);
                        exit(EX_DATAERR);
                }
+               fpclose(fpi);           // avoid zombies, [email protected] (#88501)
                bytewidth = (width+7) / 8;
                height = fontbuflth / (bytewidth * fontsize);
                if (verbose)
@@ -483,6 +485,7 @@
        if(readpsffont(fpi, &inbuf, &inputlth, &fontbuf, &fontbuflth,
                       &width, &fontsize, 0,
                       no_u ? NULL : &uclistheads) == 0) {
+               fpclose(fpi);
                /* we've got a psf font */
                bytewidth = (width+7) / 8;
                height = fontbuflth / (bytewidth * fontsize);
@@ -497,6 +500,7 @@
 #endif
                return;
        }
+       fpclose(fpi);           // avoid zombies, [email protected] (#88501)
 
        /* instructions to combine fonts? */
        { char *combineheader = "# combine partial fonts\n";
++++++ kbd-1.12-setfont-no-cruft.diff ++++++
--- kbd-1.12/src/kdfontop.c.orig        2007-08-21 19:28:47.000000000 +0200
+++ kbd-1.12/src/kdfontop.c     2007-08-21 19:32:50.000000000 +0200
@@ -268,26 +268,19 @@
                        return 0;
        }
 
-       /* Second attempt: PIO_FONTX */
-       cfd.charcount = count;
-       cfd.charheight = height;
-       cfd.chardata = buf;
-       i = ioctl(fd, PIO_FONTX, &cfd);
-       if (i == 0)
-               return 0;
-       if (errno != ENOSYS && errno != EINVAL) {
-               fprintf(stderr, "%s: putfont: %d,%dx%d:failed: %d\n", progname, 
count, width, height, i);
-               perror("putfont: PIO_FONTX");
-               return -1;
-       }
-
-       /* Third attempt: PIO_FONT */
-       /* This will load precisely 256 chars, independent of count */
-       i = ioctl(fd, PIO_FONT, buf);
-       if (i) {
-               fprintf(stderr, "%s: putfont: %d,%dx%d:  failed: %d\n", 
progname, count, width, height, i);
-               perror("putfont: PIO_FONT");
-               return -1;
-       }
-       return 0;
+       // 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", progname, 
count, width, height, i);
+       perror("putfont: KDFONTOP");
+       return -1;
 }
++++++ kbd-1.12-showconsolefont-info.diff ++++++
--- kbd-1.12/src/kdfontop.c.orig        2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12/src/kdfontop.c     2006-07-26 18:14:55.000000000 +0200
@@ -142,8 +142,11 @@
        return h;
 }
 
-/* may be called with buf==NULL if we only want info */
-/* must not exit - we may have cleanup to do */
+/* 
+ * May be called with buf==NULL if we only want info.
+ * May be called with width==NULL and height==NULL.
+ * Must not exit - we may have cleanup to do.
+ */
 int
 getfont(int fd, char *buf, int *count, int *width, int *height) {
        struct consolefontdesc cfd;
@@ -193,6 +196,11 @@
                fprintf(stderr, _("bug: getfont called with count<256\n"));
                return -1;
        }
+       if (!buf) 
+         {
+           fprintf(stderr, _("bug: getfont using GIO_FONT needs buf.\n"));
+           return -1;
+         }
        i = ioctl(fd, GIO_FONT, buf);
        if (i) {
                perror("getfont: GIO_FONT");
@@ -208,11 +216,11 @@
 
 int
 getfontsize(int fd) {
-       int count, width, height;
+       int count;
        int i;
 
-       count = width = height = 0;
-       i = getfont(fd, NULL, &count, &width, &height);
+       count = 0;
+       i = getfont(fd, NULL, &count, NULL, NULL);
        return (i == 0) ? count : 256;
 }
 
--- kbd-1.12/src/showconsolefont.c.orig 2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12/src/showconsolefont.c      2006-07-26 18:40:31.000000000 +0200
@@ -101,8 +101,15 @@
 static void
 usage(void) {
        fprintf(stderr,
-               _("usage: showconsolefont [-v|-V]\n"
-                 "(probably after loading a font with `setfont font')\n"));
+               _("usage: showconsolefont -V|--version\n"
+                 "       showconsolefont [-C tty] [-v] [-i]\n"
+                 "(probably after loading a font with `setfont font')\n"
+                 "\n"
+                 "Valid options are:\n"
+                 " -C tty   Device to read the font from. Default: current 
tty.\n"
+                 " -v       Be more verbose.\n"
+                 " -i       Don't print out the font table, just show\n"
+                 "          ROWSxCOLSxCOUNT and exit.\n"));
        exit(1);
 }
 
@@ -110,7 +117,7 @@
 main (int argc, char **argv) {
        int c, n, cols, rows, nr, i, j, k;
        char *sep, *console = NULL;
-       int list[64], lth, verbose = 0;
+       int list[64], lth, info = 0, verbose = 0;
 
        set_progname(argv[0]);
 
@@ -122,8 +129,11 @@
            (!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version")))
                print_version_and_exit();
 
-       while ((c = getopt(argc, argv, "vC:")) != EOF) {
+       while ((c = getopt(argc, argv, "ivC:")) != EOF) {
                switch (c) {
+               case 'i':
+                       info = 1;
+                       break;
                case 'v':
                        verbose = 1;
                        break;
@@ -135,9 +145,26 @@
                }
        }
 
-       if (argc != 1)
+       if (optind != argc)
                usage();
 
+        if (info)
+         {
+           nr = rows = cols = 0;
+           n = getfont(fd, NULL, &nr, &rows, &cols);
+           if (n != 0)
+             leave(1);
+           if (verbose) 
+             {
+               printf("Character count: %d\n", nr);
+               printf("Font width     : %d\n", rows);
+               printf("Font height    : %d\n", cols);
+             }
+           else
+             printf("%dx%dx%d\n", rows, cols, nr);
+           leave(0);
+         }
+
        fd = getfd(console);
 
        settrivialscreenmap();
++++++ kbd-1.12-strip.diff ++++++
 openvt/Makefile |    2 +-
 src/Makefile.in |    8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

Index: kbd-1.12/src/Makefile.in
===================================================================
--- kbd-1.12.orig/src/Makefile.in       2006-01-13 15:03:29.000000000 +0100
+++ kbd-1.12/src/Makefile.in    2006-01-13 15:04:24.000000000 +0100
@@ -56,7 +56,7 @@ WARN  = -Wall -Wmissing-prototypes -Wstri
 DEFS   = -DDATADIR=\"$(DATA_DIR)\"
 RPM_OPT_FLAGS = -O2 -Wall
 CFLAGS  = $(RPM_OPT_FLAGS)
-LDFLAGS = -s
+LDFLAGS =
 
 CC     = gcc
 YACC   = bison -y
@@ -73,14 +73,14 @@ old:        $(OLDPROGS)
 
 install:       all
        install -d -m 0755 $(BINDIR) $(LOADKEYS_BINDIR)
-       install -s -m 0755 $(setowner) $(PROGS) $(OLDPROGS) $(BINDIR)
-#      install -s -m 0755 $(setowner) $(MISC) $(BINDIR)
+       install -m 0755 $(setowner) $(PROGS) $(OLDPROGS) $(BINDIR)
+#      install -m 0755 $(setowner) $(MISC) $(BINDIR)
        install -c -m 0755 $(setowner) $(SHCMDS) $(BINDIR)
        for i in psfaddtable psfgettable psfstriptable; do \
                rm -f $(BINDIR)/$$i; ln -s psfxtable $(BINDIR)/$$i; \
        done
        rm -f $(BINDIR)/loadkeys
-       install -s -m 0755 $(setowner) loadkeys $(LOADKEYS_BINDIR)
+       install -m 0755 $(setowner) loadkeys $(LOADKEYS_BINDIR)
        @echo "You may also want to add psf.magic to /usr/lib/magic"
 
 
Index: kbd-1.12/openvt/Makefile
===================================================================
--- kbd-1.12.orig/openvt/Makefile       2006-01-13 15:03:29.000000000 +0100
+++ kbd-1.12/openvt/Makefile    2006-01-13 15:09:53.000000000 +0100
@@ -2,7 +2,7 @@
 CC=gcc
 RPM_OPT_FLAGS=-O2 -Wall -ansi
 CFLAGS=$(RPM_OPT_FLAGS)
-LDFLAGS=$(CFLAGS) -s 
+LDFLAGS=$(CFLAGS)
 
 SRC=openvt.c
 OBJ=openvt.o getfd.o
++++++ kbd-1.12-swiss.diff ++++++
diff -Nur kbd-1.12-1/data/keymaps/i386/qwertz/fr_CH-latin1.map 
kbd-1.12-2/data/keymaps/i386/qwertz/fr_CH-latin1.map
--- kbd-1.12-1/data/keymaps/i386/qwertz/fr_CH-latin1.map        2004-02-26 
22:12:57.000000000 +0100
+++ kbd-1.12-2/data/keymaps/i386/qwertz/fr_CH-latin1.map        2004-02-26 
22:37:52.000000000 +0100
@@ -7,7 +7,7 @@
 
 keycode   1 = Escape           Escape
        alt     keycode   1 = Meta_Escape
-keycode   2 = one              plus
+keycode   2 = one              plus             bar
        alt     keycode   2 = Meta_one
 keycode   3 = two              quotedbl         at
        control keycode   3 = nul
@@ -15,10 +15,10 @@
 keycode   4 = three            asterisk         numbersign
        control keycode   4 = Escape
        alt     keycode   4 = Meta_three
-keycode   5 = four             ccedilla
+keycode   5 = four             ccedilla         degree
        control keycode   5 = Control_backslash
        alt     keycode   5 = Meta_four
-keycode   6 = five             percent
+keycode   6 = five             percent          section
        control keycode   6 = Control_bracketright
        alt     keycode   6 = Meta_five
 keycode   7 = six              ampersand        notsign
@@ -81,3 +81,6 @@
 keycode  86 = less             greater          backslash
        alt     keycode  86 = Meta_less
 keycode  97 = Control
+# adapted to X11 keymap
+altgr keycode  18 = currency
+#altgr keycode  46 = cent
diff -Nur kbd-1.12-1/data/keymaps/i386/qwertz/sg-latin1.map 
kbd-1.12-2/data/keymaps/i386/qwertz/sg-latin1.map
--- kbd-1.12-1/data/keymaps/i386/qwertz/sg-latin1.map   2002-10-12 
21:57:22.000000000 +0200
+++ kbd-1.12-2/data/keymaps/i386/qwertz/sg-latin1.map   2004-02-26 
22:37:52.000000000 +0100
@@ -5,7 +5,7 @@
 
 keycode   1 = Escape           Escape
        alt     keycode   1 = Meta_Escape
-keycode   2 = one              plus            bar
+keycode   2 = one              plus             bar
        alt     keycode   2 = Meta_one
 keycode   3 = two              quotedbl         at
        control keycode   3 = nul
@@ -13,10 +13,10 @@
 keycode   4 = three            asterisk         numbersign
        control keycode   4 = Escape
        alt     keycode   4 = Meta_three
-keycode   5 = four             ccedilla
+keycode   5 = four             ccedilla         degree
        control keycode   5 = Control_backslash
        alt     keycode   5 = Meta_four
-keycode   6 = five             percent
+keycode   6 = five             percent          section
        control keycode   6 = Control_bracketright
        alt     keycode   6 = Meta_five
 keycode   7 = six              ampersand        notsign
@@ -44,7 +44,7 @@
 keycode  26 = udiaeresis       egrave           bracketleft
        control keycode  26 = Escape
        alt     keycode  26 = Meta_bracketleft
-keycode  27 =   dead_diaeresis exclam           bracketright
+keycode  27 = dead_diaeresis   exclam           bracketright
        control keycode  27 = Control_bracketright
        alt     keycode  27 = Meta_bracketright
 keycode  28 = Return
@@ -85,3 +85,6 @@
 keycode  86 = less             greater          backslash
        alt     keycode  86 = Meta_less
 keycode  97 = Control
+# adapted to X11 keymap
+altgr keycode  18 = currency
+#altgr keycode  46 = cent
++++++ kbd-1.12-unicode_scripts.diff ++++++
diff -Nur kbd-1.12-11/src/unicode_start kbd-1.12-12/src/unicode_start
--- kbd-1.12-11/src/unicode_start       2004-02-27 17:14:14.000000000 +0100
+++ kbd-1.12-12/src/unicode_start       2004-02-27 17:21:41.000000000 +0100
@@ -18,7 +18,19 @@
 # produce UTF-8 encoded multibyte sequences, instead of single bytes
 # >= 0x80 in a legacy 8-bit encoding.
 
-dumpkeys | loadkeys --unicode
+# There is no way of reverting the effect of "dumpkeys | loadkeys --unicode",
+# the memory of the earlier keymap is lost. Therefore, try
+# to save a copy of the original keymap to be able to reload it in 
unicode_stop.
+# (see also http://mail.nl.linux.org/linux-utf8/2003-08/msg00053.html):
+
+test -z "$HOME" -o "/" == "$HOME" && HOME=/root
+test -d $HOME/.kbd || mkdir $HOME/.kbd
+dumpkeys > $HOME/.kbd/.keymap_sv
+
+# redirect stderr and stdout of loadkeys to /dev/null to avoid the confusing
+# "plus before udiaeresis ignored" warnings.
+
+dumpkeys | loadkeys --unicode > /dev/null 2>&1
 
 # 2. The output side: the console screen.
 
@@ -35,6 +47,14 @@
 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
@@ -43,7 +63,24 @@
                setfont $1
                ;;
        0)
-               setfont $DEFAULT_UNICODE_FONT
+               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
+                       echo -en "\033$CONSOLE_MAGIC"
+                   fi
+               else
+                   setfont $DEFAULT_UNICODE_FONT
+               fi
                ;;
        *)
                echo "usage: unicode_start [font [unicode map]]"
diff -Nur kbd-1.12-11/src/unicode_stop kbd-1.12-12/src/unicode_stop
--- kbd-1.12-11/src/unicode_stop        2004-02-27 17:14:14.000000000 +0100
+++ kbd-1.12-12/src/unicode_stop        2004-02-27 17:21:41.000000000 +0100
@@ -2,3 +2,10 @@
 # stop unicode
 kbd_mode -a
 echo -n -e '\033%@'
+
+# "dumpkeys | loadkeys --unicode" which is called in "unicode_start"
+# cannot be reverted, therefore we have to load the keyboard mapping again
+# if it could be sucessfully saved in "unicode_start":
+
+test -r $HOME/.kbd/.keymap_sv && loadkeys $HOME/.kbd/.keymap_sv
+
++++++ kbd-1.12.diff ++++++
diff -ur kbd-1.12.orig/data/keymaps/i386/include/ctrl.map 
kbd-1.12-0/data/keymaps/i386/include/ctrl.map
--- kbd-1.12.orig/data/keymaps/i386/include/ctrl.map    2002-10-11 
13:08:50.000000000 +0200
+++ kbd-1.12-0/data/keymaps/i386/include/ctrl.map       2004-02-26 
21:55:25.000000000 +0100
@@ -1,3 +1,6 @@
 keycode  29 = Caps_Lock
 keycode  58 = Control
 keycode  97 = Compose
+# keycode  97 = Control
+#      Shift keycode 97 = Compose is also popular
+# (Right Ctrl + Shift for Compose)
diff -ur kbd-1.12.orig/data/keymaps/i386/qwerty/defkeymap.map 
kbd-1.12-0/data/keymaps/i386/qwerty/defkeymap.map
--- kbd-1.12.orig/data/keymaps/i386/qwerty/defkeymap.map        2002-10-13 
02:03:56.000000000 +0200
+++ kbd-1.12-0/data/keymaps/i386/qwerty/defkeymap.map   2004-02-26 
21:55:25.000000000 +0100
@@ -251,9 +251,9 @@
 keycode 122 =
 keycode 123 =
 keycode 124 =
-keycode 125 =
-keycode 126 =
-keycode 127 =
+keycode 125 = Decr_Console Last_Console Incr_Console Compose
+keycode 126 = Incr_Console Last_Console Decr_Console Compose
+keycode 127 = Compose Decr_Console Incr_Console Last_Console 
 string F1 = "\033[[A"
 string F2 = "\033[[B"
 string F3 = "\033[[C"
diff -ur kbd-1.12.orig/data/keymaps/i386/qwertz/fr_CH-latin1.map 
kbd-1.12-0/data/keymaps/i386/qwertz/fr_CH-latin1.map
--- kbd-1.12.orig/data/keymaps/i386/qwertz/fr_CH-latin1.map     2002-10-11 
13:08:48.000000000 +0200
+++ kbd-1.12-0/data/keymaps/i386/qwertz/fr_CH-latin1.map        2004-02-26 
21:55:25.000000000 +0100
@@ -3,7 +3,6 @@
 keymaps 0-2,4-6,8,12
 include "qwertz-layout"
 include "linux-with-alt-and-altgr"
-       plain keycode  83 = KP_Comma
 strings as usual
 
 keycode   1 = Escape           Escape
diff -ur kbd-1.12.orig/data/keymaps/i386/qwertz/fr_CH.map 
kbd-1.12-0/data/keymaps/i386/qwertz/fr_CH.map
--- kbd-1.12.orig/data/keymaps/i386/qwertz/fr_CH.map    2002-10-11 
13:08:48.000000000 +0200
+++ kbd-1.12-0/data/keymaps/i386/qwertz/fr_CH.map       2004-02-26 
21:55:25.000000000 +0100
@@ -3,7 +3,6 @@
 keymaps 0-2,4-6,8,12
 include "qwertz-layout"
 include "linux-with-alt-and-altgr"
-       plain keycode  83 = KP_Comma
 strings as usual
 
 keycode   1 = Escape           Escape
diff -ur kbd-1.12.orig/data/keymaps/mac/all/mac-de_CH.map 
kbd-1.12-0/data/keymaps/mac/all/mac-de_CH.map
--- kbd-1.12.orig/data/keymaps/mac/all/mac-de_CH.map    2002-10-11 
13:08:52.000000000 +0200
+++ kbd-1.12-0/data/keymaps/mac/all/mac-de_CH.map       2004-02-26 
21:55:25.000000000 +0100
@@ -43,3 +43,5 @@
 keycode 44 = minus underscore backslash Control_underscore Meta_minus 
Meta_Control_underscore
 keycode 47 = period colon
 keycode 10 = less greater
+keycode 16 = z
+keycode  6 = y
diff -ur kbd-1.12.orig/data/keymaps/mac/all/mac-dk-latin1.map 
kbd-1.12-0/data/keymaps/mac/all/mac-dk-latin1.map
--- kbd-1.12.orig/data/keymaps/mac/all/mac-dk-latin1.map        2002-10-11 
13:08:52.000000000 +0200
+++ kbd-1.12-0/data/keymaps/mac/all/mac-dk-latin1.map   2004-02-26 
21:55:25.000000000 +0100
@@ -28,7 +28,7 @@
 keycode  30 = diaeresis                circumflex      asciitilde
 keycode  41 = ae               AE              adiaeresis      Adiaeresis
 keycode  39 = oslash           Oslash          odiaeresis      Odiaeresis
-keycode  42 = numbersign       apostrophe
+keycode  42 = apostrophe       asterisk
 keycode  43 = comma            semicolon
 keycode  47 = period           colon
 keycode  44 = minus            underscore       Meta_minus
@@ -36,8 +36,6 @@
 keycode  49 = space            space            Meta_space      nul
 keycode  10 = less             greater          bar
 
-keycode  16 = z
-keycode   6 = y
 
        alt keycode 12 = at
        alt keycode 50 = bar
diff -ur kbd-1.12.orig/src/Makefile.in kbd-1.12-0/src/Makefile.in
--- kbd-1.12.orig/src/Makefile.in       2004-01-03 18:53:54.000000000 +0100
+++ kbd-1.12-0/src/Makefile.in  2004-02-26 21:55:25.000000000 +0100
@@ -54,7 +54,8 @@
 
 WARN   = -Wall -Wmissing-prototypes -Wstrict-prototypes
 DEFS   = -DDATADIR=\"$(DATA_DIR)\"
-CFLAGS  = -O2
+RPM_OPT_FLAGS = -O2 -Wall
+CFLAGS  = $(RPM_OPT_FLAGS)
 LDFLAGS = -s
 
 CC     = gcc
diff -ur kbd-1.12.orig/po/Makefile.in kbd-1.12-0/po/Makefile.in
--- kbd-1.12.orig/po/Makefile.in        2004-03-02 00:04:10.727687162 +0100
+++ kbd-1.12/po/Makefile.in     2004-03-02 00:04:26.390543066 +0100
@@ -13,7 +13,7 @@
 FOREIGN=
 SHELL = /bin/sh
 
-prefix = $(DESTDIR)@prefix@
+prefix = $(DESTDIR)/usr
 datadir = $(prefix)/share
 localedir = $(datadir)/locale
 gnulocaledir = $(prefix)/share/locale
diff -ur kbd-1.12.orig/src/kdfontop.c kbd-1.12-0/src/kdfontop.c
--- kbd-1.12.orig/src/kdfontop.c        2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12-0/src/kdfontop.c   2004-02-26 21:55:25.000000000 +0100
@@ -170,6 +170,8 @@
                return -1;
        }
 
+       /* The other methods do not support width != 8 */
+       if (width) *width = 8;
        /* Second attempt: GIO_FONTX */
        cfd.charcount = *count;
        cfd.charheight = 0;
@@ -179,8 +181,6 @@
                *count = cfd.charcount;
                if (height)
                        *height = cfd.charheight;
-               if (width)
-                       *width = 8;
                return 0;
        }
        if (errno != ENOSYS && errno != EINVAL) {
@@ -201,8 +201,6 @@
        *count = 256;
        if (height)
                *height = 0;    /* undefined, at most 32 */
-       if (width)
-               *width = 8;
        return 0;
 }
 
diff -ur kbd-1.12.orig/src/loadunimap.c kbd-1.12-0/src/loadunimap.c
--- kbd-1.12.orig/src/loadunimap.c      2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12-0/src/loadunimap.c 2004-02-26 21:55:25.000000000 +0100
@@ -35,6 +35,7 @@
 #include "version.h"
 int verbose = 0;
 int force = 0;
+int debug = 0;
 
 static void
 usage(void) {
@@ -345,13 +346,29 @@
        descr = getunicodemap(fd);
        list = descr.entries;
 
+               
        for(i=0; i<fontsize; i++) {
-               for(j=0; j<descr.entry_ct; j++)
+#if 0
+               /* More than one mapping is not a sequence! */
+               int no = 0;
+               for(j=0; j<descr.entry_ct; j++) 
                        if (list[j].fontpos == i)
+                               no++;
+               if (no > 1)
+                       appendseparator(fp, 1, utf8);
+#endif         
+               if (debug) printf ("\nchar %03x: ", i);
+               for(j=0; j<descr.entry_ct; j++)
+                       if (list[j].fontpos == i) {
+                               if (debug)
+                                       printf ("%04x ", list[j].unicode);
                                appendunicode(fp, list[j].unicode, utf8);
+                       }
                appendseparator(fp, 0, utf8);
        }
 
+
+       if (debug) printf ("\n");
        if (verbose)
                printf(_("Appended Unicode map\n"));
 }
diff -ur kbd-1.12.orig/src/loadunimap.h kbd-1.12-0/src/loadunimap.h
--- kbd-1.12.orig/src/loadunimap.h      1999-09-27 20:17:52.000000000 +0200
+++ kbd-1.12-0/src/loadunimap.h 2004-02-26 21:55:25.000000000 +0100
@@ -1,4 +1,10 @@
 /* loadunimap.h */
+
+#ifndef _LOADUNIMAP_H
+#define _LOADUNIMAP_H
+
 void saveunicodemap(int fd, char *oufil);      /* save humanly readable */
 void loadunicodemap(int fd, char *ufil);
 void appendunicodemap(int fd, FILE *fp, int ct, int utf8);
+
+#endif         /* _LOADUNIMAP_H */
diff -ur kbd-1.12.orig/src/mapscrn.c kbd-1.12-0/src/mapscrn.c
--- kbd-1.12.orig/src/mapscrn.c 2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12-0/src/mapscrn.c    2004-02-26 21:55:25.000000000 +0100
@@ -32,6 +32,7 @@
 #include "version.h"
 
 int verbose = 0;
+int debug = 0;
 
 int
 main(int argc, char *argv[]) {
diff -ur kbd-1.12.orig/src/paths.h kbd-1.12-0/src/paths.h
--- kbd-1.12.orig/src/paths.h   1999-11-15 23:46:31.000000000 +0100
+++ kbd-1.12-0/src/paths.h      2004-02-26 21:55:25.000000000 +0100
@@ -28,3 +28,4 @@
 extern void fpclose(FILE *fp);
 
 extern int verbose;
+extern int debug;
diff -ur kbd-1.12.orig/src/psf.h kbd-1.12-0/src/psf.h
--- kbd-1.12.orig/src/psf.h     2001-02-09 13:58:44.000000000 +0100
+++ kbd-1.12-0/src/psf.h        2004-02-26 21:55:25.000000000 +0100
@@ -1,3 +1,5 @@
+/* psf.h */
+
 /*
  * Format of a psf font file:
  *
@@ -30,6 +32,9 @@
  * namely when there is no precomposed Unicode value for the glyph.
  */
 
+#ifndef _PSF_H
+#define _PSF_H
+
 
 #define PSF1_MAGIC0    0x36
 #define PSF1_MAGIC1    0x04
@@ -91,3 +96,5 @@
 #define PSF2_MAGIC_OK(x)       ((x)[0]==PSF2_MAGIC0 && (x)[1]==PSF2_MAGIC1 \
                                && (x)[2]==PSF2_MAGIC2 && (x)[3]==PSF2_MAGIC3)
 
+
+#endif /* _PSF_H */
diff -ur kbd-1.12.orig/src/psffontop.c kbd-1.12-0/src/psffontop.c
--- kbd-1.12.orig/src/psffontop.c       2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12-0/src/psffontop.c  2004-02-26 21:55:25.000000000 +0100
@@ -10,6 +10,7 @@
 #include "psf.h"
 #include "psffontop.h"
 #include "utf8.h"
+#include "paths.h"
 
 extern char *progname;
 
@@ -32,16 +33,18 @@
 
 static void
 addseq(struct unicode_list *up, unsigned int uc) {
-       struct unicode_list *ul;
        struct unicode_seq *us;
+       struct unicode_seq *usl;
+       struct unicode_list *ul = up->prev;
 
-       ul = up->prev;
+       usl = ul->seq;
+       while (usl->next) usl = usl->next;
        us = xmalloc(sizeof(struct unicode_seq));
        us->uc = uc;
-       us->prev = ul->seq->prev;
-       us->prev->next = us;
+       us->prev = usl;
        us->next = NULL;
-       ul->seq->prev = us;
+       usl->next = us;
+       //ul->seq->prev = us;
 }
 
 static unsigned int
@@ -190,7 +193,7 @@
         * just read the entire file.
         */
        if (fontf) {
-               inputbuflth = 16384;    /* random */
+               inputbuflth = MAXFONTSIZE/4;    /* random */
                inputbuf = xmalloc(inputbuflth);
                n = 0;
 
@@ -366,6 +369,13 @@
                perror("appendunimap");
                exit(1);
        }
+       if (debug) {
+               printf ("(");
+               if (!utf8)
+                       printf ("U+");
+               while (n < 6) printf ("%02x ", out[n++]);
+               printf (")");
+       }
 }
 
 void
@@ -437,7 +447,7 @@
 }
 
 
-void
+int
 writepsffont(FILE *ofil, char *fontbuf, int width, int height, int fontlen,
             int psftype, struct unicode_list *uclistheads) {
        int bytewidth, charsize, flags, utf8, i;
@@ -456,7 +466,8 @@
        utf8 = (psftype == 2);
 
        fwrite(fontbuf, charsize, fontlen, ofil);
-       if (uclistheads != NULL) {
+       /* unimaps: -1 => do nothing: caller will append map */
+       if (uclistheads != NULL && uclistheads != (struct unicode_list*)-1) {
                struct unicode_list *ul;
                struct unicode_seq *us;
 
@@ -475,5 +486,6 @@
                        appendseparator(ofil, 0, utf8);
                }
        }
+       return utf8;
 }
 
diff -ur kbd-1.12.orig/src/psffontop.h kbd-1.12-0/src/psffontop.h
--- kbd-1.12.orig/src/psffontop.h       2000-12-31 15:22:17.000000000 +0100
+++ kbd-1.12-0/src/psffontop.h  2004-02-26 21:55:25.000000000 +0100
@@ -1,3 +1,11 @@
+/* psffontop.h */
+
+#ifndef _PSFFONTOP_H
+#define _PSFFONTOP_H
+
+/* Maximum font size that we try to handle */
+#define MAXFONTSIZE 65536
+
 typedef unsigned int unicode;
 
 struct unicode_seq {
@@ -17,7 +25,7 @@
                       int *fontwidthp, int *fontlenp, int fontpos0,
                       struct unicode_list **uclistheadsp);
 
-extern void writepsffont(FILE *ofil, char *fontbuf,
+extern int writepsffont(FILE *ofil, char *fontbuf,
                         int width, int height, int fontlen, int psftype,
                         struct unicode_list *uclistheads);
 
@@ -29,3 +37,5 @@
 
 extern void appendunicode(FILE *fp, unsigned int uc, int utf8);
 extern void appendseparator(FILE *fp, int seq, int utf8);
+
+#endif         /* _PSFFONTOP_H */
diff -ur kbd-1.12.orig/src/psfxtable.c kbd-1.12-0/src/psfxtable.c
--- kbd-1.12.orig/src/psfxtable.c       2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12-0/src/psfxtable.c  2004-02-26 21:55:25.000000000 +0100
@@ -225,6 +225,8 @@
        }
 }
 
+int debug = 0;
+
 int
 main(int argc, char **argv) {
        char *ifname, *ofname, *itname, *otname;
diff -ur kbd-1.12.orig/src/setfont.c kbd-1.12-0/src/setfont.c
--- kbd-1.12.orig/src/setfont.c 2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12-0/src/setfont.c    2004-02-26 21:55:25.000000000 +0100
@@ -48,6 +48,7 @@
 
 int verbose = 0;
 int force = 0;
+int debug = 0;
 
 /* search for the font in these directories (with trailing /) */
 char *fontdirpath[] = { "", DATADIR "/" FONTDIR "/", 0 };
@@ -331,15 +332,28 @@
        up = xmalloc(maxct * sizeof(struct unipair));
        for (i = 0; i < fontsize; i++) {
                ul = uclistheads[i].next;
+               if (debug) printf ("char %03x:", i);
                while(ul) {
                        us = ul->seq;
                        if (us && ! us->next) {
                                up[ct].unicode = us->uc;
                                up[ct].fontpos = i;
                                ct++;
+                               if (debug) printf (" %04x", us->uc);
                        }
+                       else
+                               if (debug) {
+                                       printf (" seq: <");
+                                       while (us) {
+                                               printf (" %04x", us->uc);
+                                               us = us->next;
+                                       }
+                                       printf (" >");
+                               }
                        ul = ul->next;
+                       if (debug) printf (",");
                }
+               if (debug) printf ("\n");
        }
        if (ct != maxct) {
                char *u = _("%s: bug in do_loadtable\n");
++++++ kbd-1.12.lsm ++++++
Begin3
Title:          Keyboard and console utilities for Linux
Version:        1.12
Entered-date:   2004-01-16
Description:    loadkeys dumpkeys setfont chvt openvt kbdrate kbd.FAQ A20 etc.
Keywords:       keyboard mapping console font unicode
Author:         several
Maintained-by:  Andries E. Brouwer ([email protected])
Primary-site:   ftp://ftp.win.tue.nl/pub/linux-local/utils/kbd
                884827 kbd-1.12.tar.gz
Alternate-site: ftp://ftp.*.kernel.org/pub/linux/utils/kbd
Alternate-site: ftp://sunsite.unc.edu/pub/Linux/system/keyboards
Alternate site: ftp://ftp.cwi.nl/pub/aeb/kbd
Copying-policy: GPL
End
++++++ kbd-2.2.0-repack.tar.xz -> kbd-1.12.tar.bz2 ++++++
++++ 255148 lines of diff (skipped)

++++++ kbd.fillup ++++++
# 
# Compose tables to be loaded.
# Compose tables are good for producing characters, which can not
#  be directly input from your keyboard, such as characters with
#  accents, currency signs, ...
# Please read /usr/share/doc/packages/kbd/README.SuSE for an
#  explanation.
# You may leave this variable empty (default compose table from kernel 
#  or KEYTABLE will be used then -- most keyboard maps don't have a
#  compose table, though)
# More than one compose table can be given. For a selection of possible
#  tables see /usr/share/kbd/keymaps/include/compose.*
# You can give more than one compose table, but only the last one will
#  determine the compose combinations.
#  The word "clear" has a special meaning:
#  Your compose table will be cleared, before more compose symbols are
#  added.
# The files compose.winkeys and shiftctrl may be used to map the 
#  <compose> key to the W*n menu key and Shift-Ctrl, respectively,
#  on a PC keyboard.
# A typical setting for Latin1 users (with a PC keyboard) may be
#  COMPOSETABLE="clear winkeys shiftctrl latin1.add"
# For latin2, this would be
#  COMPOSETABLE="clear winkeys shiftctrl latin2"
# A typical setting for sb. with a character set, where a matching 
#  compose table is missing (but with a PC keyboard), would be
#  COMPOSETABLE="winkeys shiftctrl"
# 
COMPOSETABLE="clear winkeys shiftctrl latin1.add"
++++++ kbd.fillup.nonpc ++++++
# 
# Compose tables to be loaded.
# Compose tables are good for producing characters, which can not
#  be directly input from your keyboard, such as characters with
#  accents, currency signs, ...
# Please read /usr/share/doc/packages/kbd/README.SuSE for an
#  explanation.
# You may leave this variable empty (default compose table from kernel 
#  or KEYTABLE will be used then -- most don't have one, though) 
# More than one compose table can be given. For a selection of possible
#  tables see /usr/share/kbd/keymaps/include/compose.*
# You can give more than one compose table, but only the last one will
#  determine the compose combinations.
#  The word "clear" has a special meaning:
#  Your compose table will be cleared, before more compose symbols are
#  added.
# The files compose.winkeys and shiftctrl may be used to map the 
#  <compose> key to the W*n menu key and Shift-Ctrl, respectively,
#  on a PC keyboard.
# A typical setting for Latin1 users (with a PC keyboard) may be
#  COMPOSETABLE="clear winkeys shiftctrl latin1.add"
# For latin2, this would be
#  COMPOSETABLE="clear winkeys shiftctrl latin2"
# A typical setting for sb. with a character set, where a matching 
#  compose table is missing (but with a PC keyboard), would be
#  COMPOSETABLE="winkeys shiftctrl"
# For non-PC keyboards, don't use winkeys and shiftctrl ...
#
COMPOSETABLE="clear latin1.add"
++++++ kbd.init ++++++
#! /bin/sh
# Copyright (c) 1995-2005 SUSE LINUX Products AG, Nuernberg, Germany.
#
# Author:   Burchard Steinbild
#           Werner Fink <[email protected]>
#
# Please send feedback to http://www.suse.de/feedback
#
# /etc/init.d/kbd
#
#   and symbolic its link
#
# /sbin/rckbd
#
# Warning:
# /etc/init.d/earlykbd can run this script even if
# the Required-Start conditions listed here are not satisfied.
# Our use of $remote_fs is 
# /usr/share/kbd - for finding keymaps
# /usr/sbin/hwinfo - for numlock from bios
#
### BEGIN INIT INFO
# Provides:       kbd
# Required-Start: $remote_fs
# Required-Stop:
# Should-Start: fbset setserial
# Should-Stop: 
# Default-Start:  1 2 3 5 S
# Default-Stop:
# Short-Description:    Keyboard settings
# Description:          Keyboard settings (don't disable!)
### END INIT INFO

. /etc/rc.status
. /etc/sysconfig/console
. /etc/sysconfig/keyboard

test -n "$KBD_VERBOSE" && set -x

test -e /etc/SuSEconfig/profile && . /etc/SuSEconfig/profile
test -e /etc/profile.d/lang.sh  && . /etc/profile.d/lang.sh
LOCALE_CHARMAP=`locale charmap`
LC_ALL=POSIX

MACHINE=`/bin/uname -m 2> /dev/null`
if [ "$MACHINE" = "sparc" -o "$MACHINE" = "sparc64" ]; then 
   # Test if we have a serial console. 
   (test -c /dev/tty1 && > /dev/tty1 ) > /dev/null 2>&1 || exit 0
fi
# iSeries machines also exit, just a little further down...

# The variable NON_SUSE_KERNEL determines whether we need to chvt 
# to a console before some console settings apply.
# We have no magic to find out about this (at boot time), so we 
# leave it to the user to read this comment and put NON_SUSE_KERNEL="yes"
# into /etc/sysconfig/console

test "$NON_SUSE_KERNEL" = "yes" && FGCONS=`/bin/fgconsole`

KBDBASE="/usr/share/kbd"

KTABLE=${KEYTABLE%.map*}
KTABLE=${KTABLE##*/}

#
# first search the wanted keytable.
#
if [ $MACHINE = ppc -o $MACHINE = ppc64 ]; then
        test -f /proc/cpuinfo || mount -n -t proc proc /proc 2>/dev/null
        while read line; do
               case "$line" in
                  *MacRISC*)    MACHINE="mac"
                  test -f /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes 
&& \
                          echo 1 > 
/proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
                  ;;
                  *CHRP*)       MACHINE="chrp";;
                  *PReP*)       MACHINE="prep" ;;
                  *PS3*)        MACHINE="ps3" ;;
                  *iSeries*)    exit 0 ;;
                esac
        done < /proc/cpuinfo
fi

#
# Calculate KBD_TTY array only once
# Caution: Keep in sync with earlykbd.init
#
if test -z "$KBD_TTY"; then
        # >=tty7 left out intentionaly
        KBD_TTY="tty1 tty2 tty3 tty4 tty5 tty6"
fi

newkbd=""
for tty in $KBD_TTY; do
    test -w /dev/$tty           || continue
    test -c /dev/$tty           || continue
    > /dev/$tty &> /dev/null    || continue
    newkbd="${newkbd:+$newkbd }/dev/$tty"
done
KBD_TTY="$newkbd"
unset newkbd

#
# load usb drivers in runlevel S
#
case "${PREVLEVEL}${RUNLEVEL}" in
        N1|NS)
        test -f /proc/cpuinfo || mount -n -t proc proc /proc 2>/dev/null

#       [bugzilla #46113]
#       we come here although heading for runlevel 5. 
#       I'll comment out diabling hotplug for now. jw.
#       test -f /proc/sys/kernel/hotplug && echo /bin/true > 
/proc/sys/kernel/hotplug 2>/dev/null
        test -d /proc/bus/usb || modprobe usbcore >/dev/null 2>&1
        mount -n -t usbfs usbfs /proc/bus/usb >/dev/null 2>&1
        for mod in ehci-hcd ohci-hcd uhci-hcd usb-ohci usb-uhci ; do
             echo -n $mod" "
             modprobe $mod >/dev/null 2>&1
        done

#       [bugzilla #284348]
#       sleep is no longer needed. horay!
#
#       echo 
#       echo "wait 3 seconds for USB initialisation ..."
#       sleep 3

        for mod in usbhid input hid keybdev ; do
             modprobe $mod >/dev/null 2>&1
        done
        ;;
esac

KEYMAP=""
if test -e /$KEYTABLE ; then
    KEYMAP=$KEYTABLE
else
    KEYTABLE=$KTABLE
    case "$KEYTABLE" in
        *.gz)  KBDPATH="${KEYTABLE}" ;;
        *.map) KBDPATH="${KEYTABLE} ${KEYTABLE}.gz" ;;
        *)     KBDPATH="${KEYTABLE} ${KEYTABLE}.gz ${KEYTABLE}.map.gz 
${KEYTABLE}.map" ;;
    esac
    KEYMAP=$(find ${KBDBASE}/keymaps -type f \( -name ${KBDPATH// / -o -name } 
\))
fi
#
# setup kbdrate and led status
#
function set_kbdrate ()
{
        local line

        if test "$MACHINE" != "mac" ; then
                KBDOPT=""
                if test -n "$KBD_RATE" ; then
                        KBDOPT="${KBDOPT:+$KBDOPT }-r $KBD_RATE"
                fi
                if test -n "$KBD_DELAY"; then
                        KBDOPT="${KBDOPT:+$KBDOPT }-d $KBD_DELAY"
                fi
                if test -n "$KBDOPT" ; then
                        echo -n "Keyboard: "
                        /bin/kbdrate $KBDOPT
                        rc_status -v1
                fi
        fi

        # setleds
        #
        # Note: The file /var/run/numlock-on is used in ~/.xinitrc
        #       to reflect the correct numlock state choosen by the
        #       user even under X11
        #
        if test "$KBD_NUMLOCK" = "yes"; then
                touch /var/run/numlock-on
        elif test "$KBD_NUMLOCK" = "no"; then
                rm -f /var/run/numlock-on
        elif test "$KBD_NUMLOCK" = "bios"; then
                if test -x /usr/sbin/hwinfo ; then
                    /usr/sbin/hwinfo --bios | \
                    while read line ; do
                        case "$line" in
                        Num\ Lock:\ on)  touch /var/run/numlock-on ;;
                        Num\ Lock:\ off) rm -f /var/run/numlock-on ;;
                        Caps\ Lock:)     break
                        esac
                    done
                else
                    echo "no /usr/sbin -> Numlock off."
                    rm -f /var/run/numlock-on
                fi
        fi 
        unset line

        #
        # Only change keyboard leds if setleds is in path
        # 
        type -p setleds &> /dev/null            || return

        if test -e /var/run/numlock-on ; then
                LEDOPT="+num"
        else
                LEDOPT="-num"
        fi
        if test "$KBD_CAPSLOCK" = "yes"; then
                LEDOPT="$LEDOPT +caps"
        else
                LEDOPT="$LEDOPT -caps"
        fi  
        if test "$KBD_SCRLOCK" = "yes"; then
                LEDOPT="$LEDOPT +scroll"
        else
                LEDOPT="$LEDOPT -scroll"
        fi  

        #
        # Only change keyboard leds if they will be switched
        # on ... OR if they are switched on currently
        #
        if [[ $LEDOPT == *+* ]] ; then
                touch /var/run/setleds-on
        else
                test -e /var/run/setleds-on     || return
                test -n "$LEDOPT"               || return
                rm -f /var/run/setleds-on
        fi

        for tty in $KBD_TTY; do
                setleds -D $LEDOPT < $tty
        done
}
#
rc_reset
case "$1" in
    start|restart|reload|force-reload)

        case "$1" in
            start)
                # don't do anything if we have this file.
                # this means that initialization was already done.
                # don't do it twice unless forced, it may annoy xdm and
                # produce lots of error messages.
                test -s /var/run/keymap && exit 0
            ;;
        esac
        

        if test -z "$KEYTABLE"; then
            echo "No keyboard map to load"
        else
            if test -z "$KEYMAP" || test ! -d "$KBDBASE" ; then
                if test -r /etc/defkeymap.map ; then
                    if test -n "$KEYMAP" ; then
                        echo "$KEYMAP is unvailable, using /etc/defkeymap.map 
instead."
                        if test -r /var/run/keymap ; then
                            read cached < /etc/defkeymap.name
                            if test "$KEYMAP" != "$cached" && test $K != 
"$cached" ; then
                                echo "Warning: fallback differs: $cached"
                            fi
                        fi
                    else
                        echo "Can not find a keymap for ${KEYTABLE}, trying 
fallback."
                    fi
                    KEYMAP=/etc/defkeymap.map
                else
                    echo "Fallback /etc/defkeymap.map not there."
                    echo "Can not find a keymap for ${KEYTABLE}, Exit."
                    rc_failed
                fi
            else
                if test ! -e "$KEYMAP" ; then
                    echo "Found more than one keymap ${KEYTABLE}"
                    KEYMAP=$K
                    echo "Using $KEYMAP."
                    echo "If you want another one, please add complete path to"
                    echo "KEYTABLE in /etc/sysconfig/keyboard."
                fi
            fi
            rc_status && retmsg="`loadkeys -C "$KBD_TTY" $KEYMAP 2>&1`"
            if test $? -eq 0 && ( > /var/run/keymap ) > /dev/null 2>&1 ; then
                echo "$KEYMAP"    > /var/run/keymap
            else
                case "$RUNLEVEL" in
                    S|N|1|\#) true ;;
                    *) rc_failed ;;
                esac
            fi
            echo "Loading keymap ${retmsg#Loading*${KBDBASE}/keymaps/}"
            rc_status -v1

            set_kbdrate
        fi
        
        # Disable CAPS LOCK key if wanted
        if test "$KBD_DISABLE_CAPS_LOCK" = "yes"; then
                loadkeys -C "$KBD_TTY" disable.capslock >/dev/null 2>&1 || echo 
"Could not disable Caps Lock"
        fi

        # Load compose tables
        case "$RUNLEVEL" in
            S|N|1|\#) COMPOSETABLE="" ;;
        esac
        if test ! -z "$COMPOSETABLE"; then
                unset COMPOSELOADED COMPOSECLEAR
                for name in $COMPOSETABLE; do
                        # Test for compose clear flag
                        if test "$name" = "-c" -o "$name" = "clear"; then
                                COMPOSECLEAR=-c
                                continue
                        fi
                        # Handle the first table differently ...
                        if test -z "$COMPOSELOADED"; then
                                echo -n "Loading compose table $name"
                                loadkeys -C "$KBD_TTY" $COMPOSECLEAR 
compose.$name >/dev/null 2>&1
                                rc_check
                                #if test $name = clear; then rc_reset; fi
                                COMPOSELOADED=1
                        else
                                echo -n " $name"
                                loadkeys -C "$KBD_TTY" compose.$name >/dev/null 
2>&1
                                rc_check
                        fi
                done
                if test ! -z "$COMPOSELOADED"; then 
                        rc_status -v
                fi
        fi
        

        # Unicode mode  
        if test -x /bin/kbd_mode ; then
            case $LOCALE_CHARMAP in
                UTF-8)
                    echo Start Unicode mode
                    for tty in $KBD_TTY; do
                        # The chvt is not needed for SuSE kernels
                        test "$NON_SUSE_KERNEL" != "yes" || chvt ${tty#*tty}

                        # Tell the console output driver that the bytes
                        # arriving are UTF-8 encoded multibyte sequences.
                        echo -n -e '\033%G' > $tty

                        # Set the keyboard driver in Unicode mode.
                        # (Default is ASCII mode.)
                        # This really does nothing with the way normal
                        # keys are handled in the kernel. All it does is:
                        # - It is necessary for `dumpkeys' in order to
                        #   not drop U+XXXX entries from the keymaps.
                        # - It is necessary for `loadkeys' in order to
                        #   avoid warnings.
                        # - Unicode characters typed as Alt-x1 ... Alt-xn
                        #   (where x1,...,xn are digits on the numeric keypad)
                        #    will be emitted in UTF-8.
                        kbd_mode -u -C $tty
                        rc_status
                    done
                    ;;
                *)
                    echo Stop Unicode mode
                    for tty in $KBD_TTY; do
                        # The chvt is not needed for SuSE kernels
                        test "$NON_SUSE_KERNEL" != "yes" || chvt ${tty#*tty}

                        echo -n -e '\033%@' > $tty

                        kbd_mode -a -C $tty
                        rc_status
                    done
                    ;;
            esac
            test "$NON_SUSE_KERNEL" != "yes" || chvt $FGCONS
            rc_status -v1
        fi
        
        if test "$MACHINE" = "ps3" ; then
                # do not mess up console
                unset CONSOLE_FONT
        fi
        # setfont
        if test -d ${KBDBASE}/consolefonts -a \
                -n "$CONSOLE_FONT" -a "$CONSOLE_FONT" != "YAST_ASK"
        then
            if test ! -z "$CONSOLE_UNICODEMAP"; then 
                    UMAP="-u $CONSOLE_UNICODEMAP"
            fi
            if test ! -z "$CONSOLE_SCREENMAP"; then 
                    SMAP="-m $CONSOLE_SCREENMAP"
            fi
            PRINTABLE_MAGIC="";
            if test -n "$CONSOLE_MAGIC" -a "$CONSOLE_MAGIC" != "none"; then
                    case $CONSOLE_MAGIC in
                        \(B)    PRINTABLE_MAGIC="G0:iso8859-1" ;;
                        \(0)    PRINTABLE_MAGIC="G0:vt100" ;;
                        \(U)    PRINTABLE_MAGIC="G0:ROM" ;;
                        \(K)    PRINTABLE_MAGIC="G0:loadable" ;;
                        \)B)    PRINTABLE_MAGIC="G1:iso8859-1" ;;
                        \)0)    PRINTABLE_MAGIC="G1:vt100" ;;
                        \)U)    PRINTABLE_MAGIC="G1:ROM" ;;
                        \)K)    PRINTABLE_MAGIC="G1:loadable" ;;
                        *)      PRINTABLE_MAGIC="magic='$CONSOLE_MAGIC'" ;;
                    esac
                    CONSOLE_MAGIC="\033$CONSOLE_MAGIC"
            else
                    CONSOLE_MAGIC="";
            fi
            if test -x /bin/setfont ; then
                echo "Loading console font $CONSOLE_FONT $UMAP $SMAP 
$PRINTABLE_MAGIC"
                for tty in $KBD_TTY; do
                    # The chvt is not needed for SuSE kernels
                    test "$NON_SUSE_KERNEL" != "yes" || chvt ${tty#*tty}

                    /bin/setfont -C $tty $CONSOLE_FONT $UMAP $SMAP
                    rc_status

                    echo -en "$CONSOLE_MAGIC" > $tty
                done
                test "$NON_SUSE_KERNEL" != "yes" || chvt $FGCONS
                rc_status -v1
            fi
        fi

        case "$RUNLEVEL" in
            S|N|1|\#) true ;;
            *)
                case $LOCALE_CHARMAP in
                    UTF-8)
                        # Change the keyboard mapping in such a way that the
                        # non-ASCII keys produce UTF-8 encoded multibyte 
sequences
                        # instead of single bytes >= 0x80 in a legacy 8-bit 
encoding.
                        ( dumpkeys | loadkeys -C "$KBD_TTY" --unicode ) > 
/dev/null 2>&1
                        ;;
                    *) 
                        ;;
                esac
                dumpkeys=yes
                if type -p cmp > /dev/null 2>&1 && \
                   dumpkeys | cmp -s /etc/defkeymap.map
                then
                   dumpkeys=no
                fi
                if test "$dumpkeys" = "yes" ; then
                    ( dumpkeys > /etc/defkeymap.map ) > /dev/null 2>&1
                    if test ! -z "$KEYMAP" && test "$KEYMAP" != 
"/etc/defkeymap.map" ; then
                        test ! -e "$KEYMAP" && KEYMAP=$K
                        echo $KEYMAP > /etc/defkeymap.name
                    fi
                fi
        esac

        ;;
    stop)
        # enable start after stop.
        echo -n "$0 stop"
        rm -f /var/run/keymap
        rc_status -v
        ;;
    check|status)
        if test -r /var/run/keymap ; then
            read current < /var/run/keymap
            echo "Keymap $current is loaded."
        else
            rc_failed 3
        fi
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|reload|force-reload|status|check}"
        exit 2
        ;;
esac
rc_exit
++++++ piofont_debug.diff ++++++
--- kbd-1.12/src/kdfontop.c.orig        2004-10-01 13:44:47.788404680 +0000
+++ kbd-1.12/src/kdfontop.c     2004-10-01 13:46:09.349005584 +0000
@@ -268,6 +268,7 @@
        if (i == 0)
                return 0;
        if (errno != ENOSYS && errno != EINVAL) {
+               fprintf(stderr, "%s: putfont: %d,%dx%d:failed: %d\n", progname, 
count, width, height, i);
                perror("putfont: PIO_FONTX");
                return -1;
        }
@@ -276,6 +277,7 @@
        /* This will load precisely 256 chars, independent of count */
        i = ioctl(fd, PIO_FONT, buf);
        if (i) {
+               fprintf(stderr, "%s: putfont: %d,%dx%d:  failed: %d\n", 
progname, count, width, height, i);
                perror("putfont: PIO_FONT");
                return -1;
        }
++++++ repack_kbd.sh ++++++
--- /var/tmp/diff_new_pack.KJzC4x/_old  2020-09-23 12:59:22.725776781 +0200
+++ /var/tmp/diff_new_pack.KJzC4x/_new  2020-09-23 12:59:22.725776781 +0200
@@ -1,4 +1,4 @@
-#!/bin/sh
+#! /bin/sh
 #
 # repackage kbd source tar ball, 
 # to remove fonts that forbid commercial distribution.
@@ -6,21 +6,30 @@
 # 2005-07-11, [email protected]
 
 tmpdir=`mktemp -d`
-in="$1"
-if [ -z $in ]; then
-  echo "usage: $0 <tarball>"
-  exit 1
-fi
-name="${in%.tar.*}"
 
-# recent gnu tar can autodetect gzip / bzip2
-if ! tar xf "$in" -C $tmpdir; then
-       rm -rf $tmpdir
-       exit 1
-fi
+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
  
 echo removing files...
 find $tmpdir -iname \*agafari\* | tee /dev/tty | xargs rm
-tar Jcf $name-repack.tar.xz -C $tmpdir $name
+tar jcf $in-repack.tar.bz2 -C $tmpdir .
 
 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     2010-03-29 17:15:16.000000000 
+0200
+++ new/data/keymaps/i386/azerty/lt.std.map     1970-01-01 01:00:00.000000000 
+0100
@@ -1,167 +0,0 @@
-# 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        2008-05-19 
12:35:07.000000000 +0200
+++ new/data/keymaps/i386/qwerty/ru1_win-utf.map        1970-01-01 
01:00:00.000000000 +0100
@@ -1,443 +0,0 @@
-# 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        2009-10-01 
14:46:23.000000000 +0200
+++ new/data/keymaps/i386/qwerty/tj_alt-UTF8.map        1970-01-01 
01:00:00.000000000 +0100
@@ -1,507 +0,0 @@
-# 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 =   ""
-

++++++ sv-latin1-keycode10.diff ++++++
--- 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
++++++ sysconfig.console ++++++
--- /var/tmp/diff_new_pack.KJzC4x/_old  2020-09-23 12:59:22.825776878 +0200
+++ /var/tmp/diff_new_pack.KJzC4x/_new  2020-09-23 12:59:22.825776878 +0200
@@ -1,9 +1,8 @@
 ## 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)
@@ -11,7 +10,7 @@
 #
 # Load this console font on bootup:
 # (/usr/share/kbd/consolefonts/)
-#
+# 
 CONSOLE_FONT=""
 
 ## Type:       string
@@ -47,3 +46,4 @@
 # Normally not needed (automatically handled by setfont).
 #
 CONSOLE_MAGIC=""
+

++++++ sysconfig.keyboard ++++++
--- /var/tmp/diff_new_pack.KJzC4x/_old  2020-09-23 12:59:22.845776898 +0200
+++ /var/tmp/diff_new_pack.KJzC4x/_new  2020-09-23 12:59:22.849776902 +0200
@@ -1,7 +1,16 @@
 ## Path:        Hardware/Keyboard
-## Description: Keyboard settings for the text console
-## ServiceRestart: kbdsettings
+## Description: Keyboard settings
+## Type:        string
+## Default:     ""
+## ServiceRestart: kbd
+#
+# Keyboard settings for the text console
 #
+# Keyboard mapping
+# (/usr/share/kbd/keymaps/)
+# e.g. KEYTABLE="de-latin1-nodeadkeys", "us" or empty for US settings
+#
+KEYTABLE=""
 
 ## Type:        integer
 ## Default:
@@ -18,8 +27,7 @@
 ## Type:        list(bios,yes,no)
 ## Default:     bios
 #
-# 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.
+# NumLock on? ("yes" or "no" or empty or "bios" for BIOS setting)
 KBD_NUMLOCK="bios"
 
 ## Type:        yesno
@@ -46,11 +54,11 @@
 KBD_DISABLE_CAPS_LOCK="no"
 
 ## Type:        string
-## Default:
+## Default:     "tty1 tty2 tty3 tty4 tty5 tty6"
 #
 # ttys for the above settings 
 # Example: "tty1 tty2"
-# "" for tty's 1-6
+# "" for all tty's
 #
-KBD_TTY=""
+KBD_TTY="tty1 tty2 tty3 tty4 tty5 tty6"
 

++++++ testutf8.c ++++++
/*
 * Copyright Gerd Knorr <[email protected]>, 2003
 *
 * small tool to figure whenever a tty runs in utf8 mode or not.
 * writes a utf-8 multibyte sequence and then checks how far the
 * cursor has been moved.
 *
 * return codes:
 *      0 - don't know (stdin isn't a terminal, timeout, some error, ...)
 *      1 - not in utf8
 *      2 - utf-8
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <termios.h>
struct termios  saved_attributes;
int             saved_fl;
void
tty_raw()
{
    struct termios tattr;
        fcntl(0,F_GETFL,&saved_fl);
    tcgetattr (0, &saved_attributes);
    fcntl(0,F_SETFL,O_NONBLOCK);
    memcpy(&tattr,&saved_attributes,sizeof(struct termios));
    tattr.c_lflag &= ~(ICANON|ECHO);
    tattr.c_cc[VMIN] = 1;
    tattr.c_cc[VTIME] = 0;
    tcsetattr (0, TCSAFLUSH, &tattr);
}
void
tty_restore()
{
    fcntl(0,F_SETFL,saved_fl);
    tcsetattr (0, TCSANOW, &saved_attributes);
}
int
select_wait()
{
    struct timeval  tv;
    fd_set          se;
        FD_ZERO(&se);
    FD_SET(0,&se);
    tv.tv_sec = 3;
    tv.tv_usec = 0;
    return select(1,&se,NULL,NULL,&tv);
}
int
main(int argc, char **argv)
{
        static char *teststr = "\r\xc3\xb6";
        static char *cleanup = "\r  \r";
        static char *getpos  = "\033[6n";
        char retstr[16];
        int pos,rc,row,col,verbose;
        verbose = 0;
        if (argc > 1 && 0 == strcmp(argv[1],"-v"))
                verbose = 1;
        if (!isatty(0) || !isatty(1)) {
                if (verbose)
                        fprintf(stderr,"Not a tty.\n");
                exit(0);
        }
        tty_raw();
        write(1,teststr,strlen(teststr));
        write(1,getpos,strlen(getpos));
        for (pos = 0; pos < sizeof(retstr)-1;) {
                if (0 == select_wait())
                        break;
                if (-1 == (rc = read(0,retstr+pos,sizeof(retstr)-1-pos))) {
                        perror("read");
                        exit(0);
                }
                pos += rc;
                if (retstr[pos-1] == 'R')
                        break;
        }
        retstr[pos] = 0;
        write(1,cleanup,strlen(cleanup));
        tty_restore();
        rc = sscanf(retstr,"\033[%d;%dR",&row,&col);
        if (2 == rc && 2 == col) {
                if (verbose)
                        fprintf(stderr,"Terminal is in UTF-8 mode.\n");
                exit(2);
        } else {
                if (verbose)
                        fprintf(stderr,"Terminal is in byte mode.\n");
                exit(1);
        }
}

Reply via email to