Hello community,

here is the log from the commit of package kbd.2994 for openSUSE:13.1:Update 
checked in at 2014-09-16 14:22:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1:Update/kbd.2994 (Old)
 and      /work/SRC/openSUSE:13.1:Update/.kbd.2994.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kbd.2994"

Changes:
--------
New Changes file:

--- /dev/null   2014-07-24 01:57:42.080040256 +0200
+++ /work/SRC/openSUSE:13.1:Update/.kbd.2994.new/kbd.changes    2014-09-16 
14:22:10.000000000 +0200
@@ -0,0 +1,1547 @@
+-------------------------------------------------------------------
+Sat Sep  6 22:49:34 UTC 2014 - [email protected]
+
+- added /usr/bin/kbd, a simple userfriedly keymap switcher.
+  From https://github.com/jnweiger/kbd-wrapper
+
+-------------------------------------------------------------------
+Thu Apr  4 15:57:45 UTC 2013 - [email protected]
+
+- disable vlock build, which is in vlock package.
+
+-------------------------------------------------------------------
+Thu Apr  4 01:34:32 UTC 2013 - [email protected]
+
+- Remove sysvinit support, init scripts from this package 
+  are masked by systemd and only serve for confusion.
+
+-------------------------------------------------------------------
+Wed Apr  3 19:06:41 CEST 2013 - [email protected]
+
+- sysconfig.keyboard: Updated description of KBD_NUMLOCK
+  (bnc#746595#c74).
+
+-------------------------------------------------------------------
+Wed Dec  5 20:45:40 UTC 2012 - [email protected]
+
+- Update to version 1.15.5:
+  * Fix msgstr in es.po and update translations.
+  * Update changelog and increase version (1.15.5wip).
+  * po: Update vi.po from translationproject.org.
+  * Fix various vlock build errors.
+  * Fix loadkeys.analyze lex handling.
+  * Ignore config.cache files.
+- Applied into upstream kbd-1.15.3-po-es.patch was deleted.
+
+-------------------------------------------------------------------
+Mon Dec  3 18:58:13 UTC 2012 - [email protected]
+
+- Update to version 1.15.4:
+  * vlock: New utility which locks one or more virtual consoles.
+  * loadkeys: Change the handling of -C option.
+  * loadkeys: Fix -d option.
+  * Add dvorak-es keymap.
+  * Add dvorak-uk keymap (Joe MacMahon).
+  * Add dvorak-sv-a1 and dvorak-sv-a5 keymaps.
+  * Add ruwin_alt_sh-UTF-8 keymap (Dmitriy Perlow).
+- kbd-1.15.3-po-es.patch was fixed.
+- Applied into upstream patches were deleted.
+- Fixed up via spec-cleaner.
+- Clean-section was removed.
+- Macro warnings were fixed via '%' deleting.
+
+-------------------------------------------------------------------
+Fri Apr 20 15:40:30 UTC 2012 - [email protected]
+
+- Place binaries into /usr tree (UsrMerge project)
+
+-------------------------------------------------------------------
+Tue Dec 20 17:35:35 CET 2011 - [email protected]
+
+- Enable resizecons on x86_64 (bnc#737631).
+
+-------------------------------------------------------------------
+Wed Nov 30 14:24:18 UTC 2011 - [email protected]
+
+- add automake as buildrequire to avoid implicit dependency
+
+-------------------------------------------------------------------
+Wed Oct  5 13:37:08 UTC 2011 - [email protected]
+
+- fix loadkeys -C option (bnc#720486)
+
+-------------------------------------------------------------------
+Fri Sep 30 15:28:41 UTC 2011 - [email protected]
+
+- cross-build fix: use %__cc, %configure macros
+- configure: explicitly set bindir
+
+-------------------------------------------------------------------
+Wed Sep 14 15:58:43 CEST 2011 - [email protected]
+
+- Update to version 1.15.3:
+  * kbdinfo: New utility to obtain information about console.
+  * setvtrgb: New utility to set the virtual terminal RGB colors.
+  * loadkeys: Add LOADKEYS_KEYMAP_PATH env variable.
+  * loadkeys: Fix some memory leaks.
+  * loadkeys: Do not set prefer_unicode for iso-8859-1.
+  * loadkeys -a: Switch to ASCII mode.
+  * loadkeys: Fix "compose as usual" for Unicode diacritics.
+  * Add dvorak-ru keymap.
+  * Add LatGrkCyr fonts.
+
+-------------------------------------------------------------------
+Mon Mar 21 14:07:36 CET 2011 - [email protected]
+
+- If /usr is located in a separate partition, the locale command fails.
+- Ignore /var/run/keymap in sinlge user mode otherwise key mapping
+  could be wrong if booted cold into sinlge user mode
+
+-------------------------------------------------------------------
+Thu Feb 17 12:39:06 CET 2011 - [email protected]
+
+- Tag boot script as interactive as systemd uses it
+
+-------------------------------------------------------------------
+Wed Jan 12 14:22:09 UTC 2011 - [email protected]
+
+- use /etc/defkeymap.name if possible to avoid find call
+- move some code that is only needed for start to actual start section
+  (bnc#463801)
+- Fixed symlink vulnerability of the init script
+  (bnc#663898, CVE-2011-0460).
+
+-------------------------------------------------------------------
+Tue Sep  7 14:48:34 CEST 2010 - [email protected]
+
+- build optional binaries (bnc#637453) 
+
+-------------------------------------------------------------------
+Mon Sep  6 17:27:40 CEST 2010 - [email protected]
+
+- update to 1.15.2
+  * Use automake to build translations.
+  * loadkeys -u: Switch to Unicode mode, if necessary
+  * Never handle plain ASCII characters as Unicode
+  * Enable UNUMBERs in compose definitions
+  * Use automake.
+  * Add --enable-strip configure option.
+  * unicode_start: Without any arguments utility will only set
+    unicode mode.
+  * Add qwerty/cz.map keymap.
+- remove upstreamed and obsolete patches (-remove-kbio, -Makefile, 
+  -2d01989f, -no-strip)
+- retain original behavior of unicode_start script
+- remove manpages for programs that are not installed
+
+-------------------------------------------------------------------
+Thu May 27 02:18:05 CEST 2010 - [email protected]
+
+- added dummy keyboard mappings for chinese/taiwanese (bnc #603950) 
+
+-------------------------------------------------------------------
+Mon Mar 29 17:31:11 CEST 2010 - [email protected]
+
+- add lt.std map (bnc#569554) 
+
+-------------------------------------------------------------------
+Fri Feb 19 14:39:29 CET 2010 - [email protected]
+
+- respect KBD_TTY="" set in sysconfig (bnc#405658)
+
+-------------------------------------------------------------------
+Tue Feb 16 11:14:18 PST 2010 - [email protected]
+
+- Add kbd-1.12-chvt-userwait.patch, taken from Gentoo to add a
+  --userwait option to chvt. This can be used to avoid situation
+  where chvt can hang forever waiting for the vt switch: the wait
+  is done in userspace, and has a timeout of 5 seconds. (bnc#575123)
+
+-------------------------------------------------------------------
+Thu Feb  4 12:22:49 UTC 2010 - [email protected]
+
+- remove inclusion of kbio.h on SPARC, this has been removed
+  in the kernel
+
+-------------------------------------------------------------------
+Sun Jan 10 01:45:25 UTC 2010 - [email protected]
+
+- added guess_encoding, an old script of mine, that tests
+  if a tty is in utf8 mode or not.
+  (Also helpful with text files in unknown encoding.)
+
+-------------------------------------------------------------------
+Mon Nov  2 13:48:13 CET 2009 - [email protected]
+
+- do not include '.' in the repacked tarball (bnc#544975).
+
+-------------------------------------------------------------------
+Thu Oct  1 15:09:51 CEST 2009 - [email protected]
+
+- Add real Tajik keymap.
+- remove slovak keymaps from suse-add.tar.bz2 that are already
+  upstream.
+
+-------------------------------------------------------------------
+Fri Sep  4 15:22:07 CEST 2009 - [email protected]
+
+- added symlink tj.map.gz -> ruwin_alt-UTF-8.map.gz until there is
+  a real Tajik map.
+
+-------------------------------------------------------------------
+Tue May 19 16:25:37 CEST 2009 - [email protected]
+
+- remove testutf8 (replace with a script that returns 2 in any
+  terminal), it's a hack that has a number of problems (bnc#436378,
+  bnc#334889). Users who don't want utf8 should adjust their locale
+  setting accordingly.
++++ 1350 more lines (skipped)
++++ between /dev/null
++++ and /work/SRC/openSUSE:13.1:Update/.kbd.2994.new/kbd.changes

New:
----
  README.SuSE
  convert-kbd-mac.sed
  fbtest.8
  fbtest.c
  guess_encoding.pl
  kbd-1.15.2-chvt-userwait.patch
  kbd-1.15.2-docu-X11R6-xorg.patch
  kbd-1.15.2-dumpkeys-C-opt.patch
  kbd-1.15.2-dumpkeys-ppc.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-repack.tar.bz2
  kbd-1.15.5.tar.gz
  kbd.changes
  kbd.fillup
  kbd.fillup.nonpc
  kbd.pl
  kbd.spec
  kbd_fonts.tar.bz2
  repack_kbd.sh
  suse-add.tar.bz2
  sysconfig.console
  sysconfig.keyboard
  testutf8

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

Other differences:
------------------
++++++ kbd.spec ++++++
#
# spec file for package kbd
#
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


Name:           kbd
Version:        1.15.5
Release:        0
Summary:        Keyboard and Font Utilities
License:        GPL-2.0+
Group:          System/Console
# git: git://git.altlinux.org/people/legion/packages/kbd.git
Url:            ftp://ftp.altlinux.org/pub/people/legion/kbd/
%if 0
Source:         %{name}-%{version}.tar.gz
%else
Source:         %{name}-%{version}-repack.tar.bz2
%endif
Source1:        kbd_fonts.tar.bz2
Source2:        suse-add.tar.bz2
Source3:        README.SuSE
Source5:        kbd.fillup
Source6:        kbd.fillup.nonpc
Source8:        sysconfig.console
Source9:        sysconfig.keyboard
Source10:       testutf8
Source11:       fbtest.c
Source12:       fbtest.8
Source13:       guess_encoding.pl
Source14:       kbd.pl
Source42:       convert-kbd-mac.sed
Source43:       repack_kbd.sh
Patch0:         kbd-1.15.2-prtscr_no_sigquit.patch
Patch1:         kbd-1.15.2-dumpkeys-ppc.patch
Patch2:         kbd-1.15.2-unicode_scripts.patch
Patch3:         kbd-1.15.2-docu-X11R6-xorg.patch
Patch4:         kbd-1.15.2-sv-latin1-keycode10.patch
Patch5:         kbd-1.15.2-setfont-no-cruft.patch
Patch6:         kbd-1.15.2-dumpkeys-C-opt.patch
Patch8:         kbd-1.15.2-chvt-userwait.patch

BuildRequires:  automake
BuildRequires:  bison
BuildRequires:  flex
BuildRequires:  pam-devel

Requires(pre):  %fillup_prereq
Recommends:     fbset

BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
Load and save keyboard mappings. This is needed if you are not using
the US keyboard map. This package also contains utilities for changing
your console fonts. If you install this package, YaST includes an extra
menu to allow you to choose between the different fonts. This package
also includes fonts from the kbd_fonts.tar.gz package (by Paul
Gortmaker) on Sunsite.



Authors:
--------
    Andries Brouwer <[email protected]>
    Alexey Gladkov <[email protected]>

%define kbd /usr/share/kbd

%prep
%setup -q -a 1 -a 2 -n kbd-%{version}
%patch0 -p1
%patch1 -p1
%patch2
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6
%patch8 -p1

%build
for i in `find data/keymaps/mac -type f` ; do
sed -i -f %{SOURCE42} $i
done
# workaround ambiguous keymap names
pushd data/keymaps/i386
        # bnc#48301
        test -f qwerty/se-latin1.map || cp qwerty/sv-latin1.map 
qwerty/se-latin1.map
        # bnc#435121
        test -f olpc/es-olpc.map || mv olpc/es.map olpc/es-olpc.map
popd
%configure \
        --datadir=%{kbd} \
        --enable-nls \
        --localedir=/usr/share/locale \
        --enable-optional-progs \
        --disable-vlock
make CFLAGS="%{optflags}"
gcc %{optflags} -o fbtest   $RPM_SOURCE_DIR/fbtest.c
# fix lat2-16.psfu (bnc#340579)
font=data/consolefonts/lat2a-16.psfu
./src/psfxtable -i $font -it  data/unimaps/lat2u.uni \
        -o t.psfu
mv t.psfu $font
make

%install
mkdir -p %{buildroot}%{_sbindir}
DOC=%{buildroot}%{_defaultdocdir}/kbd
KBD=%{kbd}
K=%{buildroot}$KBD
mkdir -p $K/consolefonts
# First install the fonts from the vfont package 
# (allowing kbd to overwrite some of them)
mkdir -p $DOC/fonts
install -m 644 fonts/README $DOC/fonts/README.fonts
install -m 644 fonts/vfont-4.36/README $DOC/fonts/README.vfont-4.36
install -m 644 fonts/vfont-5.10/README $DOC/fonts/README.vfont-5.10
install -m 644 fonts/vfont-5.10/SCRIPT $DOC/fonts/SCRIPT.vfont-5.10
rm -f fonts/vfont-5.10/SCRIPT fonts/*/README
install -m 644 fonts/*/* $K/consolefonts/
# Now call kbd install
echo "# Now call kbd install DESTDIR=%{buildroot} DATA_DIR=%{kbd} 
MAN_DIR=%{_mandir}"
make DESTDIR=%{buildroot} DATA_DIR=%{kbd} MAN_DIR=%{_mandir} install
# ln -s iso01-12x22.psfu $K/consolefonts/suse12x22.psfu
install -m 644 data/consolefonts/README* $DOC/fonts/
mkdir -p $DOC/doc/
install -m 644 doc/keysyms.h.info doc/kbd.FAQ.txt doc/kbd.FAQ*.html doc/README* 
doc/TODO $DOC/doc/
install -m 644 doc/as400.kbd doc/console.docs doc/repeat/set_kbd_repeat-2 
$DOC/doc/
echo "See /usr/share/i18/charmaps for a description of char maps" 
>$DOC/doc/README.charmaps
install -m 644 COPYING ChangeLog CREDITS README $DOC/
install -m 644 %{SOURCE3} $DOC/
rm -f $K/consolefonts/README* $K/consolefonts/ERRORS.gz
if ls $K/consolefonts/Agafari-* > /dev/null 2>&1; then
  echo "";
  echo "ERROR: Ethiopian Agafari fonts are for noncommercial distribution only."
  echo "please run repack_kbd.sh";
  echo "";
  exit 1
fi
ln -sf us.map.gz $K/keymaps/i386/qwerty/khmer.map.gz
ln -sf us.map.gz $K/keymaps/i386/qwerty/korean.map.gz
ln -sf us.map.gz $K/keymaps/i386/qwerty/arabic.map.gz
ln -sf us.map.gz $K/keymaps/i386/qwerty/chinese.map.gz
ln -sf us.map.gz $K/keymaps/i386/qwerty/taiwanese.map.gz
# Compatability links; don't know what the first three are good for.
# The others are for yast/langselection and should be removed as soon as
# yast knows about it.
#ln -sf de-latin1-nodeadkeys.map.gz \
#  $K/keymaps/i386/qwertz/de-lat1-nd.map.gz
#ln -sf ru1.map.gz $K/keymaps/i386/qwerty/russian.map.gz
#ln -sf sg-latin1-lk450.map.gz \
#  $K/keymaps/i386/qwertz/sg-l1-lk450.map.gz
# The next two links are for yast-language choise; should be obsolete
# with the next yast version (on 6.1)
#ln -sf lat1-16.psfu.gz $K/consolefonts/lat1u-16.psf.gz
#ln -sf lat2-16.psfu.gz $K/consolefonts/lat2u-16.psf.gz
#
# This is for stupid default font search
rm -f $K/consolefonts/default8x16.gz
ln -sf default8x16.psfu.gz $K/consolefonts/default8x16.gz
#
rm -f $K/keymaps/i386/qwerty/*~ $K/keymaps/i386/qwerty/*,v
#
# this is until the Cyr* font are not part of the package
rm -f $K/consolefonts/Cyr_a8x14.gz
ln -sf Cyr_a8x14.psfu.gz $K/consolefonts/Cyr_a8x14.gz
rm -f $K/consolefonts/Cyr_a8x16.gz
ln -sf Cyr_a8x16.psfu.gz $K/consolefonts/Cyr_a8x16.gz
rm -f $K/consolefonts/Cyr_a8x8.gz
ln -sf Cyr_a8x8.psfu.gz $K/consolefonts/Cyr_a8x8.gz
#
find $K -name \*.orig | xargs -r rm -vf
# add some missing maps to mac and remap french board
(
cd $K/keymaps/mac/all
pwd
#ln -s mac-fr-latin1.map.gz mac-fr_CH-latin1.map.gz
#ln -s mac-fr-latin1.map.gz mac-fr.map.gz
for i in \
        mac-es.map.gz \
        mac-it.map.gz \
        mac-pt-latin1.map.gz \
        mac-br-abnt2.map.gz \
        mac-gr.map.gz \
        mac-dk-latin1.map.gz \
        mac-no-latin1.map.gz \
        mac-fi-latin1.map.gz \
        mac-cz-us-qwertz.map.gz \
        mac-hu.map.gz \
        mac-Pl02.map.gz \
        mac-ru1.map.gz \
        mac-jp106.map.gz
do test -f $i || ln -sv mac-us.map.gz $i
done
)
FILLUP_DIR=%{buildroot}%{_localstatedir}/adm/fillup-templates
mkdir -p $FILLUP_DIR
install -m 644 %{SOURCE8} $FILLUP_DIR/sysconfig.console
install -m 644 %{SOURCE9} $FILLUP_DIR/sysconfig.keyboard
%ifarch %ix86 alpha ia64 x86_64
cat %{SOURCE5} >> $FILLUP_DIR/sysconfig.keyboard
%else
cat %{SOURCE6} >> $FILLUP_DIR/sysconfig.keyboard
%endif
#mkdir -p $RPM_BUILD_ROOT/etc/sysconfig
#touch $RPM_BUILD_ROOT/etc/sysconfig/console
%ifnarch %ix86
%ifnarch x86_64
   rm -f %{buildroot}/%{_mandir}/man8/resizecons.8*
%endif
%endif
%ifarch %sparc m68k
rm -f %{buildroot}/%{_mandir}/man8/getkeycodes.8*
rm -f %{buildroot}/%{_mandir}/man8/setkeycodes.8*
%endif
install -m 755 %_sourcedir/testutf8  %{buildroot}/%{_bindir}
install -m 755 fbtest    %{buildroot}/%{_sbindir}
install -m 644 %{SOURCE12} %{buildroot}/%{_mandir}/man8/
install -m 755 %{SOURCE13} %{buildroot}/%{_bindir}/guess_encoding
install -m 755 %{SOURCE14} %{buildroot}/%{_bindir}/kbd
#UsrMerge
mkdir -p %{buildroot}/bin
mkdir -p %{buildroot}/sbin
ln -s %{_bindir}/chvt %{buildroot}/bin
ln -s %{_bindir}/clrunimap %{buildroot}/bin
ln -s %{_bindir}/deallocvt %{buildroot}/bin
ln -s %{_bindir}/dumpkeys %{buildroot}/bin
ln -s %{_bindir}/fgconsole %{buildroot}/bin
ln -s %{_bindir}/getunimap %{buildroot}/bin
ln -s %{_bindir}/guess_encoding %{buildroot}/bin
ln -s %{_bindir}/kbd_mode %{buildroot}/bin
ln -s %{_bindir}/kbdinfo %{buildroot}/bin
ln -s %{_bindir}/kbdrate %{buildroot}/bin
ln -s %{_bindir}/loadkeys %{buildroot}/bin
ln -s %{_bindir}/loadunimap %{buildroot}/bin
ln -s %{_bindir}/mapscrn %{buildroot}/bin
ln -s %{_bindir}/openvt %{buildroot}/bin
ln -s %{_bindir}/outpsfheader %{buildroot}/bin
ln -s %{_bindir}/psfaddtable %{buildroot}/bin
ln -s %{_bindir}/psfgettable %{buildroot}/bin
ln -s %{_bindir}/psfstriptable %{buildroot}/bin
ln -s %{_bindir}/psfxtable %{buildroot}/bin
ln -s %{_bindir}/screendump %{buildroot}/bin
ln -s %{_bindir}/setfont %{buildroot}/bin
ln -s %{_bindir}/setleds %{buildroot}/bin
ln -s %{_bindir}/setlogcons %{buildroot}/bin
ln -s %{_bindir}/setmetamode %{buildroot}/bin
ln -s %{_bindir}/setpalette %{buildroot}/bin
ln -s %{_bindir}/setvesablank %{buildroot}/bin
ln -s %{_bindir}/setvtrgb %{buildroot}/bin
ln -s %{_bindir}/showconsolefont %{buildroot}/bin
ln -s %{_bindir}/showkey %{buildroot}/bin
ln -s %{_bindir}/spawn_console %{buildroot}/bin
ln -s %{_bindir}/spawn_login %{buildroot}/bin
ln -s %{_bindir}/testutf8 %{buildroot}/bin
ln -s %{_bindir}/unicode_start %{buildroot}/bin
ln -s %{_bindir}/unicode_stop %{buildroot}/bin
ln -s %{_sbindir}/fbtest %{buildroot}/sbin
%ifnarch %sparc m68k
ln -s %{_bindir}/getkeycodes %{buildroot}/bin
ln -s %{_bindir}/setkeycodes %{buildroot}/bin
%endif
%ifarch %ix86
ln -s %{_bindir}/resizecons %{buildroot}/bin
%endif
%ifarch x86_64
ln -s %{_bindir}/resizecons %{buildroot}/bin
%endif
#EndUsrMerge
%find_lang %{name}

%post
%{fillup_only -n console}
%{fillup_only -n keyboard}
#echo "Please read the docu about the new COMPOSETABLE rc.config variable."
#echo "See /etc/sysconfig/console, /etc/sysconfig/keyboard"
#echo "and {_docdir}/kbd/README.SuSE."

%files -f %{name}.lang
%defattr(-,root,root)
#config(noreplace) /etc/sysconfig/console
%doc %{_defaultdocdir}/kbd
#doc COPYING CHANGES README CREDITS
%{_localstatedir}/adm/fillup-templates/sysconfig.console
%{_localstatedir}/adm/fillup-templates/sysconfig.keyboard
%{kbd}
#UsrMerge
/sbin/fbtest
/bin/chvt
/bin/openvt
/bin/deallocvt
/bin/dumpkeys
%ifnarch %sparc m68k
/bin/getkeycodes
/bin/setkeycodes
%endif
/bin/fgconsole
/bin/kbd_mode
/bin/kbdinfo
/bin/loadkeys
/bin/loadunimap
/bin/mapscrn
/bin/psfaddtable
/bin/psfgettable
/bin/psfstriptable
/bin/psfxtable
%ifarch %ix86
/bin/resizecons
%endif
%ifarch x86_64
/bin/resizecons
%endif
/bin/setfont
/bin/setleds
/bin/setmetamode
/bin/setvtrgb
/bin/showconsolefont
/bin/showkey
/bin/unicode_start
/bin/unicode_stop
/bin/kbdrate
/bin/testutf8
/bin/guess_encoding
/bin/clrunimap
/bin/getunimap
/bin/outpsfheader
/bin/screendump
/bin/setlogcons
/bin/setpalette
/bin/setvesablank
/bin/spawn_console
/bin/spawn_login
#EndUsrMerge
%{_sbindir}/fbtest
%{_bindir}/chvt
%{_bindir}/openvt
%{_bindir}/deallocvt
%{_bindir}/dumpkeys
%ifnarch %sparc m68k
%{_bindir}/getkeycodes
%{_bindir}/setkeycodes
%endif
%{_bindir}/fgconsole
%{_bindir}/kbd_mode
%{_bindir}/kbdinfo
%{_bindir}/loadkeys
%{_bindir}/loadunimap
%{_bindir}/mapscrn
%{_bindir}/psfaddtable
%{_bindir}/psfgettable
%{_bindir}/psfstriptable
%{_bindir}/psfxtable
%ifarch %ix86
%{_bindir}/resizecons
%endif
%ifarch x86_64
%{_bindir}/resizecons
%endif
%{_bindir}/setfont
%{_bindir}/setleds
%{_bindir}/setmetamode
%{_bindir}/setvtrgb
%{_bindir}/showconsolefont
%{_bindir}/showkey
%{_bindir}/unicode_start
%{_bindir}/unicode_stop
%{_bindir}/kbdrate
%{_bindir}/testutf8
%{_bindir}/guess_encoding
%{_bindir}/kbd
%{_bindir}/clrunimap
%{_bindir}/getunimap
%{_bindir}/outpsfheader
%{_bindir}/screendump
%{_bindir}/setlogcons
%{_bindir}/setpalette
%{_bindir}/setvesablank
%{_bindir}/spawn_console
%{_bindir}/spawn_login
%doc %{_mandir}/man1/*
%doc %{_mandir}/man5/keymaps.5.gz
%ifnarch %sparc m68k
%doc %{_mandir}/man8/getkeycodes.8.gz
%doc %{_mandir}/man8/setkeycodes.8.gz
%endif
%doc %{_mandir}/man8/showconsolefont.8.gz
%doc %{_mandir}/man8/loadunimap.8.gz
%doc %{_mandir}/man8/mapscrn.8.gz
%ifarch %ix86
%doc %{_mandir}/man8/resizecons.8.gz
%endif
%ifarch x86_64
%doc %{_mandir}/man8/resizecons.8.gz
%endif
%doc %{_mandir}/man8/setfont.8.gz
%doc %{_mandir}/man8/fbtest.8.gz
%doc %{_mandir}/man8/kbdrate.8.gz
%doc %{_mandir}/man8/clrunimap.8.gz
%doc %{_mandir}/man8/getunimap.8.gz
%doc %{_mandir}/man8/mk_modmap.8.gz
%doc %{_mandir}/man8/setlogcons.8.gz
%doc %{_mandir}/man8/setvesablank.8.gz
%doc %{_mandir}/man8/setvtrgb.8.gz
%doc %{_mandir}/man8/vcstime.8.gz

%changelog
++++++ 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]>
++++++ convert-kbd-mac.sed ++++++
# vim: syntax=sed
s#keycode[[:blank:]]*122[[:blank:]]*=[[:blank:]]*#keycode   59 = #;t 1;
s#keycode[[:blank:]]*121[[:blank:]]*=[[:blank:]]*#keycode  109 = #;t 1;
s#keycode[[:blank:]]*120[[:blank:]]*=[[:blank:]]*#keycode   60 = #;t 1;
s#keycode[[:blank:]]*119[[:blank:]]*=[[:blank:]]*#keycode  107 = #;t 1;
s#keycode[[:blank:]]*118[[:blank:]]*=[[:blank:]]*#keycode   62 = #;t 1;
s#keycode[[:blank:]]*117[[:blank:]]*=[[:blank:]]*#keycode  111 = #;t 1;
s#keycode[[:blank:]]*116[[:blank:]]*=[[:blank:]]*#keycode  104 = #;t 1;
s#keycode[[:blank:]]*115[[:blank:]]*=[[:blank:]]*#keycode  102 = #;t 1;
s#keycode[[:blank:]]*114[[:blank:]]*=[[:blank:]]*#keycode  110 = #;t 1;
s#keycode[[:blank:]]*113[[:blank:]]*=[[:blank:]]*#keycode  101 = #;t 1;
s#keycode[[:blank:]]*111[[:blank:]]*=[[:blank:]]*#keycode   88 = #;t 1;
s#keycode[[:blank:]]*109[[:blank:]]*=[[:blank:]]*#keycode   68 = #;t 1;
s#keycode[[:blank:]]*107[[:blank:]]*=[[:blank:]]*#keycode   70 = #;t 1;
s#keycode[[:blank:]]*103[[:blank:]]*=[[:blank:]]*#keycode   87 = #;t 1;
s#keycode[[:blank:]]*101[[:blank:]]*=[[:blank:]]*#keycode   67 = #;t 1;
s#keycode[[:blank:]]*100[[:blank:]]*=[[:blank:]]*#keycode   66 = #;t 1;
s#keycode[[:blank:]]*99[[:blank:]]*=[[:blank:]]*#keycode   61 = #;t 1;
s#keycode[[:blank:]]*98[[:blank:]]*=[[:blank:]]*#keycode   65 = #;t 1;
s#keycode[[:blank:]]*97[[:blank:]]*=[[:blank:]]*#keycode   64 = #;t 1;
s#keycode[[:blank:]]*96[[:blank:]]*=[[:blank:]]*#keycode   63 = #;t 1;
s#keycode[[:blank:]]*92[[:blank:]]*=[[:blank:]]*#keycode   73 = #;t 1;
s#keycode[[:blank:]]*91[[:blank:]]*=[[:blank:]]*#keycode   72 = #;t 1;
s#keycode[[:blank:]]*89[[:blank:]]*=[[:blank:]]*#keycode   71 = #;t 1;
s#keycode[[:blank:]]*88[[:blank:]]*=[[:blank:]]*#keycode   77 = #;t 1;
s#keycode[[:blank:]]*87[[:blank:]]*=[[:blank:]]*#keycode   76 = #;t 1;
s#keycode[[:blank:]]*86[[:blank:]]*=[[:blank:]]*#keycode   75 = #;t 1;
s#keycode[[:blank:]]*85[[:blank:]]*=[[:blank:]]*#keycode   81 = #;t 1;
s#keycode[[:blank:]]*84[[:blank:]]*=[[:blank:]]*#keycode   80 = #;t 1;
s#keycode[[:blank:]]*83[[:blank:]]*=[[:blank:]]*#keycode   79 = #;t 1;
s#keycode[[:blank:]]*82[[:blank:]]*=[[:blank:]]*#keycode   82 = #;t 1;
s#keycode[[:blank:]]*81[[:blank:]]*=[[:blank:]]*#keycode  117 = #;t 1;
s#keycode[[:blank:]]*78[[:blank:]]*=[[:blank:]]*#keycode   74 = #;t 1;
s#keycode[[:blank:]]*76[[:blank:]]*=[[:blank:]]*#keycode   96 = #;t 1;
s#keycode[[:blank:]]*75[[:blank:]]*=[[:blank:]]*#keycode   98 = #;t 1;
s#keycode[[:blank:]]*71[[:blank:]]*=[[:blank:]]*#keycode   69 = #;t 1;
s#keycode[[:blank:]]*69[[:blank:]]*=[[:blank:]]*#keycode   78 = #;t 1;
s#keycode[[:blank:]]*67[[:blank:]]*=[[:blank:]]*#keycode   55 = #;t 1;
s#keycode[[:blank:]]*65[[:blank:]]*=[[:blank:]]*#keycode   83 = #;t 1;
s#keycode[[:blank:]]*62[[:blank:]]*=[[:blank:]]*#keycode  103 = #;t 1;
s#keycode[[:blank:]]*61[[:blank:]]*=[[:blank:]]*#keycode  108 = #;t 1;
s#keycode[[:blank:]]*60[[:blank:]]*=[[:blank:]]*#keycode  106 = #;t 1;
s#keycode[[:blank:]]*59[[:blank:]]*=[[:blank:]]*#keycode  105 = #;t 1;
s#keycode[[:blank:]]*58[[:blank:]]*=[[:blank:]]*#keycode   56 = #;t 1;
s#keycode[[:blank:]]*57[[:blank:]]*=[[:blank:]]*#keycode   58 = #;t 1;
s#keycode[[:blank:]]*56[[:blank:]]*=[[:blank:]]*#keycode   42 = #;t 1;
s#keycode[[:blank:]]*55[[:blank:]]*=[[:blank:]]*#keycode  125 = #;t 1;
s#keycode[[:blank:]]*54[[:blank:]]*=[[:blank:]]*#keycode   29 = #;t 1;
s#keycode[[:blank:]]*53[[:blank:]]*=[[:blank:]]*#keycode    1 = #;t 1;
s#keycode[[:blank:]]*51[[:blank:]]*=[[:blank:]]*#keycode   14 = #;t 1;
s#keycode[[:blank:]]*50[[:blank:]]*=[[:blank:]]*#keycode   41 = #;t 1;
s#keycode[[:blank:]]*49[[:blank:]]*=[[:blank:]]*#keycode   57 = #;t 1;
s#keycode[[:blank:]]*48[[:blank:]]*=[[:blank:]]*#keycode   15 = #;t 1;
s#keycode[[:blank:]]*47[[:blank:]]*=[[:blank:]]*#keycode   52 = #;t 1;
s#keycode[[:blank:]]*46[[:blank:]]*=[[:blank:]]*#keycode   50 = #;t 1;
s#keycode[[:blank:]]*45[[:blank:]]*=[[:blank:]]*#keycode   49 = #;t 1;
s#keycode[[:blank:]]*44[[:blank:]]*=[[:blank:]]*#keycode   53 = #;t 1;
s#keycode[[:blank:]]*43[[:blank:]]*=[[:blank:]]*#keycode   51 = #;t 1;
s#keycode[[:blank:]]*42[[:blank:]]*=[[:blank:]]*#keycode   43 = #;t 1;
s#keycode[[:blank:]]*41[[:blank:]]*=[[:blank:]]*#keycode   39 = #;t 1;
s#keycode[[:blank:]]*40[[:blank:]]*=[[:blank:]]*#keycode   37 = #;t 1;
s#keycode[[:blank:]]*39[[:blank:]]*=[[:blank:]]*#keycode   40 = #;t 1;
s#keycode[[:blank:]]*38[[:blank:]]*=[[:blank:]]*#keycode   36 = #;t 1;
s#keycode[[:blank:]]*37[[:blank:]]*=[[:blank:]]*#keycode   38 = #;t 1;
s#keycode[[:blank:]]*36[[:blank:]]*=[[:blank:]]*#keycode   28 = #;t 1;
s#keycode[[:blank:]]*35[[:blank:]]*=[[:blank:]]*#keycode   25 = #;t 1;
s#keycode[[:blank:]]*34[[:blank:]]*=[[:blank:]]*#keycode   23 = #;t 1;
s#keycode[[:blank:]]*33[[:blank:]]*=[[:blank:]]*#keycode   26 = #;t 1;
s#keycode[[:blank:]]*32[[:blank:]]*=[[:blank:]]*#keycode   22 = #;t 1;
s#keycode[[:blank:]]*31[[:blank:]]*=[[:blank:]]*#keycode   24 = #;t 1;
s#keycode[[:blank:]]*30[[:blank:]]*=[[:blank:]]*#keycode   27 = #;t 1;
s#keycode[[:blank:]]*29[[:blank:]]*=[[:blank:]]*#keycode   11 = #;t 1;
s#keycode[[:blank:]]*28[[:blank:]]*=[[:blank:]]*#keycode    9 = #;t 1;
s#keycode[[:blank:]]*27[[:blank:]]*=[[:blank:]]*#keycode   12 = #;t 1;
s#keycode[[:blank:]]*26[[:blank:]]*=[[:blank:]]*#keycode    8 = #;t 1;
s#keycode[[:blank:]]*25[[:blank:]]*=[[:blank:]]*#keycode   10 = #;t 1;
s#keycode[[:blank:]]*24[[:blank:]]*=[[:blank:]]*#keycode   13 = #;t 1;
s#keycode[[:blank:]]*23[[:blank:]]*=[[:blank:]]*#keycode    6 = #;t 1;
s#keycode[[:blank:]]*22[[:blank:]]*=[[:blank:]]*#keycode    7 = #;t 1;
s#keycode[[:blank:]]*21[[:blank:]]*=[[:blank:]]*#keycode    5 = #;t 1;
s#keycode[[:blank:]]*20[[:blank:]]*=[[:blank:]]*#keycode    4 = #;t 1;
s#keycode[[:blank:]]*19[[:blank:]]*=[[:blank:]]*#keycode    3 = #;t 1;
s#keycode[[:blank:]]*18[[:blank:]]*=[[:blank:]]*#keycode    2 = #;t 1;
s#keycode[[:blank:]]*17[[:blank:]]*=[[:blank:]]*#keycode   20 = #;t 1;
s#keycode[[:blank:]]*16[[:blank:]]*=[[:blank:]]*#keycode   21 = #;t 1;
s#keycode[[:blank:]]*15[[:blank:]]*=[[:blank:]]*#keycode   19 = #;t 1;
s#keycode[[:blank:]]*14[[:blank:]]*=[[:blank:]]*#keycode   18 = #;t 1;
s#keycode[[:blank:]]*13[[:blank:]]*=[[:blank:]]*#keycode   17 = #;t 1;
s#keycode[[:blank:]]*12[[:blank:]]*=[[:blank:]]*#keycode   16 = #;t 1;
s#keycode[[:blank:]]*11[[:blank:]]*=[[:blank:]]*#keycode   48 = #;t 1;
s#keycode[[:blank:]]*10[[:blank:]]*=[[:blank:]]*#keycode   86 = #;t 1;
s#keycode[[:blank:]]*9[[:blank:]]*=[[:blank:]]*#keycode   47 = #;t 1;
s#keycode[[:blank:]]*8[[:blank:]]*=[[:blank:]]*#keycode   46 = #;t 1;
s#keycode[[:blank:]]*7[[:blank:]]*=[[:blank:]]*#keycode   45 = #;t 1;
s#keycode[[:blank:]]*6[[:blank:]]*=[[:blank:]]*#keycode   44 = #;t 1;
s#keycode[[:blank:]]*5[[:blank:]]*=[[:blank:]]*#keycode   34 = #;t 1;
s#keycode[[:blank:]]*4[[:blank:]]*=[[:blank:]]*#keycode   35 = #;t 1;
s#keycode[[:blank:]]*3[[:blank:]]*=[[:blank:]]*#keycode   33 = #;t 1;
s#keycode[[:blank:]]*2[[:blank:]]*=[[:blank:]]*#keycode   32 = #;t 1;
s#keycode[[:blank:]]*1[[:blank:]]*=[[:blank:]]*#keycode   31 = #;t 1;
s#keycode[[:blank:]]*0[[:blank:]]*=[[:blank:]]*#keycode   30 = #;t 1;
:1;
++++++ fbtest.8 ++++++
'\" -*- coding: UTF-8 -*-
.\"
.\" Copyright 2008 Werner Fink, 2008 SUSE LINUX Products GmbH, Germany.
.\"
.\" This program is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 2 of the License, or
.\" (at your option) any later version.
.\"
.TH FBTEST 8 "May 6, 2008" "0.42" "International Support"
.SH NAME
fbtest \- test if a virtual console is mapped to a frame buffer devive
.SH SYNOPSIS
.B fbtest
.RB [ \-f \ \fI<fb_device>\fR]
.RB [ \-C \ \fI<vc_device>\fR]
.br
.B fbtest
.B \-\-help
.SH DESCRIPTION
The program
.BR fbtest (8)
is used to test if a virtual console, e.g.
.I /dev/tty1
is mapped on a frame buffer device.
.SH OPTIONS
.TP
.BR \-f ,\  \-\-fb = \fI<fb_device>\fR
This option specifies an other frame buffer device than
the default
.IR /dev/fb0 .
.TP
.BR \-C ,\  \-\-vc = \fI<vc_device>\fR
This option specifies an other virtual console than the default
.IR /dev/tty1 .
.SH EXIT STATUS
.IP \fB0\fR 5
The virtual console is mapped onto a frame buffer device.
.IP \fB1\fR 5
The virtual console is
.B not
mapped onto a frame buffer device.
.PP
.SH FILES
.I /dev/fb0
.br
.I /dev/tty<1...63>
.SH SEE ALSO
.BR fbset (8).
++++++ fbtest.c ++++++
/*
 * fbtest(.c)
 *
 * Copyright 2008 Werner Fink, 2008 SUSE LINUX Products GmbH, Germany.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 */

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

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

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

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

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

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

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

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

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

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

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

    return map.framebuffer > FB_MAX;
}
++++++ guess_encoding.pl ++++++
#! /usr/bin/perl -w
#
# encoding.pl -- guess charset encoding
#
# (C) 2007, [email protected], Novell Inc.
# Distribute under GPLv2
# 
# 2006-12-05, jw, V0.1 -- only framework.
# 2007-01-23, jw, V0.2 -- utf8 and latin1 for ttys.
# 2007-02-08, jw, V0.3 -- utf8 and latin1 for files.

use Data::Dumper;
use POSIX;
use IO::Handle;

my $version = '0.3';
my $verbose = 0;
my $stdin = 0;

while (defined (my $arg = shift))
  {
    if    ($arg !~ m{^-.})              { unshift @ARGV, $arg; last }
    elsif ($arg =~ m{^(-h|--help|-\?)}) { exit usage(); }
    elsif ($arg =~ m{^--?v})            { $verbose++; }
    elsif ($arg =~ m{^--?q})            { $verbose = 0; }
    else { exit usage("unknown option $arg"); }
  }

if (!@ARGV and -t STDIN and -t STDERR)
  {
    my $r = probe_tty();
    print "$r\n";
    exit 0;
  }

for my $file (@ARGV)
  {
    my $fd;
    open $fd, ($file eq '-') ? '<&=STDIN' : "<$file" or die "open($file) 
failed: $!";
    probe_file($fd, $file);
    close $fd;
  }

exit 0;
########################################################################

sub usage
{
  my ($msg) = @_;
  print STDERR qq{$0 V$version usage:

encoding [options] [file]

valid options are:
 -h                         Print this online help
 -v                         Be more verbose. Default $verbose
 -q                         Be quiet
 -                          Read from stdin.

Without any parameters, the terminal (if any) is probed, 
using stdin and stderr.

Files are searched for characters outside the ascii range.
Those characters are tested for their likeliness in 
various encodings.
Thus an illegal mix of encodings can be detected.

If not verbose, only one single word is printed to stdout:
The name of the most likely encoding.

};

  print STDERR "\nERROR: $msg\n" if $msg;
  return 0;
}

sub sysread_tout
{
  my ($FILE, $len, $tout) = @_;
  my $r = '';
  while ($len > 0)
    {
      my $rout;
      my $rin = '';
      vec($rin,fileno($FILE), 1) = 1;
      my ($n, $t) = select($rout = $rin, undef, undef, $tout);
      $tout = $t if defined $t;
      last unless $n;
      my $buf = '';
      last if sysread($FILE, $buf, 1) <= 0;
      $r .= $buf;
      $len--;
    }
  return $r;
}

sub tty_raw
{
  my ($FILE) = @_;

  my $t = POSIX::Termios->new;
  my $o = POSIX::Termios->new;
  $t->getattr(fileno $FILE);
  $o->getattr(fileno $FILE);

  $t->setlflag(0);      # -echo, -icanon
  $t->setcc(POSIX::VMIN, 1);
  $t->setcc(POSIX::VTIME, 0);
  tty_set($FILE, $t);
  return $o;
}

sub tty_set
{
  my ($FILE, $t) = @_;
  $t->setattr(fileno $FILE, POSIX::TCSANOW) or die "TCSANOW failed: $!\n";
}

sub get_cursor_pos
{
  my ($hint) = @_;
  # 1 may be an ansi term?
  # testing device status report 6, as seen in vttest.
  my $t = tty_raw(STDIN);

  while (length(sysread_tout(STDIN, 1, 0.1))) { }

  syswrite(STDOUT, "\33[6n", 4);
  my $r = sysread_tout(STDIN, 10, 0.1);
  tty_set(STDIN, $t);
  return { x => $2 - 1, y => $1 - 1, hint => 'DC6' } if $r =~ 
m{^\33\[(\d+);(\d+)R};
  return undef;
}

sub probe_tty
{
  #
  # we can use STDIN and STDERR.
  # 0) first, see, if the terminal can report cursor positions.
  syswrite(STDOUT, "\r", 1);
  my $o = get_cursor_pos();
  print ", x=$o->{x}\n" if $verbose > 1;

  # - if not, abort.
  die "get_cursor_pos failed.\n" unless defined $o;

  # - if it can, store the current position 
  if ($o->{x} != 0)
    {
      warn "strace (or other) output interferes or\n" if $o->{x} >= 20;
      die "carriage return does not work.\n";
    }

  # 1) write a single byte ascii character, 'X' and check, 
  # if it advances by one. 
  syswrite(STDOUT, "\rX", 2);
  my $p = get_cursor_pos($o->{hint});
  print ", x=$p->{x}\n" if $verbose;
  

  # - If not, it is probably in microsoft-multibyte encoding, 
  #   and requires '\0' prefixing. check this, report and abort.
  die "multi-byte mode" if $p->{x} != 1;

  # 2)Then try non-ascii characters, e.g. a-umlaut.
  # 2a) send its latin1 code, and see what happens,
  syswrite(STDOUT, "\r1\34434", 5);     # 1, a-umlaut-latin1, 3, 4
  $p = get_cursor_pos($o->{hint});
  print ", x=$p->{x}\n" if $verbose;
  die "no report" unless defined $p;

  # - no advance indicates that the terminal is not in latin1 mode 
  #   or a lousy font is used.
  # - advance by 2 indicates a defect in the tty-emulator.
  die "latin1 a-umlaut caused confusion." if $p->{x} > 4 or $p->{x} < 2;

  # in utf8, our \344 consumes another char, thus the '3' is not printed.
  # we don't know what the font does then.
  my $maybe = 'utf8' if $p->{x} == 2 or $p->{x} == 3;
  $maybe = 'latin1'  if $p->{x} == 4;
  print "maybe $maybe\n" if $verbose;
  # - advance by 1 says nothing, may be latin1.
  # 2b) send its utf8 code.

  syswrite(STDOUT, "\r1\303\24434", 6);  # 1, a-umlaut-utf8, 3, 4
  $p = get_cursor_pos($o->{hint});
  print ", x=$p->{x}\n" if $verbose;

  die "no report" unless defined $p;
  # - no advance indicates that a lousy font is used.
  # - advance by one indicates that the terminal is in utf8 mode.
  # - advance by two indicates that the terminal is in latin1 mode.

  syswrite(STDOUT, "\r      \r", 8) unless $verbose;     # clear scratch area
  
  if ($p->{x} == 4)
    {
      return 'utf8' if $maybe eq 'utf8';
      return 'possibly utf8';
    }
  
  return 'latin1' if $maybe eq 'latin1';
  return 'possibly latin1';
}

##
## if utf8_valid is positive, then it can only be utf-8.
##   (if also utf8_invalid and/or latin1_typ are positive, then it is a mixture)
## if only utf8_invalid or latin1_typ are positive, then it is latin1.
## if all 3 are zero, it is plain ascii.
##
## FIXME: should take an optional length parameter to limit runtime.
##
sub probe_file
{
  my ($fd, $name) = @_;
  print "probing $name\n" if $verbose;

  my %typ_latin = map { $_ => 1 } qw(169 171  174 176 177 178 179 181
  185 187 191 192 193 194 195 196 197 199 200 201 202 203 204 205 206 207 208 
209
  210 211 212 213 214 215 216 217 218 219 220 
  223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 
242 243 244 245
  246 249 250 251 252 253 189 164);


  # when running incremental, $fd is probably not seekable.
  # so we need to buffer characters to be re-read after a lookahead.

  # http://de.wikipedia.org/wiki/UTF-8#Kodierung

  my $utf8_valid   = 0;         # parser happy.
  my $utf8_invalid = 0;         # something wrong.
  my $latin1_typ   = 0;         # valid chars in 128..255 range followed by a 
ascii byte
  my $ascii        = 0;         # char in 10..127 range
  my $utf8_size    = 0;         # how many bytes belong to this utf-8 char.
  my $utf8_len     = 0;         # how many more bytes belong to this utf-8 char.
  my $utf8_start   = 0;         # ord of utf_8 start char.

  while (defined(my $c = getc($fd)))
    {
      my $v = ord($c);
      if ($utf8_len)
        {
          if (($v & 0xc0) == 0x80)      # 10xx xxxx
            {
#             printf "0 %02x\n", $v;
              unless (--$utf8_len)
                {
                  $utf8_valid++;
                  $utf8_size = 0;
                }
            }
          else
            {
#             printf "0x %02x %02x '$c' $utf8_size-$utf8_len\n", $utf8_start, 
$v;
              if (($utf8_size - $utf8_len) == 1 and $typ_latin{$utf8_start})
                {
                  if ($v > 7 && $v < 128)
                    {
                      $latin1_typ++;
                      $ascii++;
                    }
                  elsif ($typ_latin{$v})
                    {
                      $latin1_typ += 2;
                    }
                  else
                    {
                      $utf8_invalid++;
                    }
                }
              else
                {
                  $utf8_invalid++;
                }
              $utf8_len = $utf8_size = $utf8_start = 0;
            }
        }
      elsif ($v > 7 && $v < 128)
        {
          $ascii++;
          next;
        }
      elsif (($v & 0xe0) == 0xc0)               # 110x xxxx
        {
          $utf8_start = $v;
          $utf8_size = 2;
          $utf8_len = 1;
#         printf "1 %02x\n", $v;
        }
      elsif (($v & 0xf0) == 0xe0)               # 1110 xxxx
        {
          $utf8_start = $v;
          $utf8_size = 3;
          $utf8_len = 2;
#         printf "2 %02x\n", $v;
        }
      elsif (($v & 0xf8) == 0xf0)               # 1111 0xxx
        {
          $utf8_start = $v;
          $utf8_size = 4;
          $utf8_len = 3;
#         printf "3 %02x\n", $v;
        }
      elsif ($typ_latin{$v})
        {
          $latin1_typ++;
        }
      else
        {
          $utf8_invalid++;
#         printf "x %02x\n", $v;
        }
    }
  print "$name: utf8_valid=$utf8_valid utf8_invalid=$utf8_invalid 
latin1_typ=$latin1_typ ascii=$ascii\n";
}
++++++ kbd-1.15.2-chvt-userwait.patch ++++++
chvt: add --userwait option

From: Daniel Drake <[email protected]>

At http://bugs.gentoo.org/159729 we see chvt hanging in some scenario's. As
the solution to this is not immediately obvious, add a --userwait option
which repeatedly tries changing the terminal until the change has taken place.

Index: kbd-1.14.1/man/man1/chvt.1
===================================================================
--- kbd-1.14.1.orig/man/man1/chvt.1
+++ kbd-1.14.1/man/man1/chvt.1
@@ -4,6 +4,9 @@
 chvt \- change foreground virtual terminal
 .SH SYNOPSIS
 .B chvt
+[
+.B --userwait
+]
 .I N
 .SH DESCRIPTION
 The command
@@ -21,3 +24,10 @@ The key combination
 (with
 .I N
 in the range 1-12) usually has a similar effect.
+.LP
+The
+.B --userwait
+option causes the system to loop in userspace waiting for the new terminal
+to become active, as opposed to the kernel-side
+.I VT_WAITACTIVE
+ioctl.
Index: kbd-1.14.1/src/chvt.c
===================================================================
--- kbd-1.14.1.orig/src/chvt.c
+++ kbd-1.14.1/src/chvt.c
@@ -7,13 +7,43 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <fcntl.h>
+#include <getopt.h>
+#include <unistd.h>
 #include "getfd.h"
 #include "nls.h"
 #include "version.h"
 
+#define USER_WAIT_SLEEP_US             100000
+#define USER_WAIT_MAX_ITERATIONS       50
+
+static int fd;
+
+static void chvt(int num)
+{
+    if (ioctl(fd,VT_ACTIVATE,num)) {
+       perror("VT_ACTIVATE");
+       exit(1);
+    }
+}
+
+static int fgconsole(void)
+{
+    struct vt_stat vtstat;
+    if (ioctl(fd, VT_GETSTATE, &vtstat)) {
+       perror("VT_GETSTATE");
+       exit(1);
+    }
+    return vtstat.v_active;
+}
+
 int
 main(int argc, char *argv[]) {
-    int fd, num;
+    int c, num;
+    int user_wait = 0;
+    const struct option long_opts[] = {
+       { "version",    no_argument, NULL, 'V' },
+       { "userwait",   no_argument, NULL, 'u' },
+    };
 
     set_progname(argv[0]);
 
@@ -21,22 +51,46 @@ main(int argc, char *argv[]) {
     bindtextdomain(PACKAGE_NAME, LOCALEDIR);
     textdomain(PACKAGE_NAME);
 
-    if (argc == 2 && !strcmp(argv[1], "-V"))
-       print_version_and_exit();
+    while ((c = getopt_long(argc, argv, "Vu", long_opts, NULL)) != -1) {
+       switch (c) {
+           case 'V':
+               print_version_and_exit();
+           case 'u':
+               user_wait = 1;
+               break;
+       }
+    }
 
-    if (argc != 2) {
-       fprintf(stderr, _("usage: chvt N\n"));
+    if (optind >= argc) {
+       fprintf(stderr, _("usage: chvt [--userwait] N\n"));
        exit(1);
     }
+
     fd = getfd(NULL);
-    num = atoi(argv[1]);
-    if (ioctl(fd,VT_ACTIVATE,num)) {
-       perror("chvt: VT_ACTIVATE");
-       exit(1);
-    }
-    if (ioctl(fd,VT_WAITACTIVE,num)) {
-       perror("VT_WAITACTIVE");
-       exit(1);
+    num = atoi(argv[optind++]);
+    chvt(num);
+
+    if (user_wait) {
+       int active = 0;
+       int i;
+       for (i = 0; i < USER_WAIT_MAX_ITERATIONS; i++) {
+           if (fgconsole() == num) {
+               active = 1;
+               break;
+           }
+
+           chvt(num);
+           usleep(USER_WAIT_SLEEP_US);
+       }
+       if (!active) {
+           fprintf(stderr, _("VT change timed out\n"));
+           exit(1);
+       }
+    } else {
+       if (ioctl(fd,VT_WAITACTIVE,num)) {
+           perror("VT_WAITACTIVE");
+           exit(1);
+       }
     }
     exit(0);
 }
++++++ kbd-1.15.2-docu-X11R6-xorg.patch ++++++
--- 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.15.2-dumpkeys-C-opt.patch ++++++
Index: man/man1/dumpkeys.1.in
===================================================================
--- man/man1/dumpkeys.1.in.orig
+++ man/man1/dumpkeys.1.in
@@ -4,6 +4,7 @@
 dumpkeys \- dump keyboard translation tables
 .SH SYNOPSIS
 .B dumpkeys
+.RI [ \-C\ '<vc>' | \-\-console='<vc>' ]
 [
 .B \-hilfn
 .BI \-c charset
@@ -197,6 +198,12 @@ This option produces an output line `cha
 loadkeys how to interpret the keymap. (For example, "division" is
 0xf7 in iso-8859-1 but 0xba in iso-8859-8.)
 .LP
+The affected console device can be specified using the 
+.I -C 
+(or
+.I --console
+) option. This option supports exactly one device name.
+.LP
 .SH FILES
 .PD 0
 .TP 20
Index: src/dumpkeys.c
===================================================================
--- src/dumpkeys.c.orig
+++ src/dumpkeys.c
@@ -31,6 +31,7 @@
 static int fd;
 static int verbose;
 static int nr_keys = 0;                        /* probably 112, 128, 256 or 
512 */
+static char * console;
 
 int keymap_index[MAX_NR_KEYMAPS];      /* inverse of good_keymap */
 int good_keymap[MAX_NR_KEYMAPS], keymapnr, allocct;
@@ -582,6 +583,8 @@ valid options are:\n\
           --funcs-only     display only the function key strings\n\
           --keys-only      display only key bindings\n\
           --compose-only   display only compose key combinations\n\
+       -C <vc>\n\
+          --console=<vc>   Indicate the virtual console device to be used.\n\
        -c --charset="));
        list_charsets(stderr);
        fprintf(stderr, _("\
@@ -593,7 +596,7 @@ valid options are:\n\
 
 int
 main (int argc, char *argv[]) {
-       const char *short_opts = "hilvsnf1S:c:V";
+       const char *short_opts = "hilvsnf1S:c:C:V";
        const struct option long_opts[] = {
                { "help",       no_argument,            NULL, 'h' },
                { "short-info", no_argument,            NULL, 'i' },
@@ -606,6 +609,7 @@ main (int argc, char *argv[]) {
                { "keys-only",  no_argument,            NULL, 'k' },
                { "compose-only",no_argument,           NULL, 'd' },
                { "charset",    required_argument,      NULL, 'c' },
+               { "console",    required_argument,      NULL, 'C' },
                { "verbose",    no_argument,            NULL, 'v' },
                { "version",    no_argument,            NULL, 'V' },
                { NULL, 0, NULL, 0 }
@@ -665,6 +669,9 @@ main (int argc, char *argv[]) {
                                        usage();
                                printf("charset \"%s\"\n", optarg);
                                break;
+                       case 'C':
+                               console = optarg;
+                               break;
                        case 'V':
                                print_version_and_exit();
                        case 'h':
@@ -676,7 +683,7 @@ main (int argc, char *argv[]) {
        if (optind < argc)
                usage();
 
-       fd = getfd(NULL);
+       fd = getfd(console);
 
        find_nr_keys();
 
++++++ kbd-1.15.2-dumpkeys-ppc.patch ++++++
XXX: this has been reverted upstream with the comment:

    Revert "[SYSTEM] Apply patch from SUSE."
    
    This is an old mistake. No, 0 is not a valid keycode.
    It is used by the kernel for bookkeeping purposes.
    It must not be used as keycode.
    
    Andries
    
    This reverts commit 49ce531d1c70017113540318b24b9d645d170773.
    
    Signed-off-by: Andries Brouwer <[email protected]>
    Signed-off-by: Alexey Gladkov <[email protected]>
---
 src/dumpkeys.c |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Index: kbd-1.15.2/src/dumpkeys.c
===================================================================
--- kbd-1.15.2.orig/src/dumpkeys.c
+++ kbd-1.15.2/src/dumpkeys.c
@@ -165,6 +165,10 @@ valid_type(int t) {
        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;
 }
@@ -269,8 +273,13 @@ static void
 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();
@@ -383,7 +392,11 @@ dump_keys(char table_shape, char numeric
        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);
@@ -411,7 +424,11 @@ dump_keys(char table_shape, char numeric
 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]);
            if (buf[0] == -1)
++++++ kbd-1.15.2-prtscr_no_sigquit.patch ++++++
XXX: reverted upstream
---
 data/keymaps/i386/azerty/fr-latin9.map      |    1 +
 data/keymaps/i386/fgGIod/tr_f-latin5.map    |    1 +
 data/keymaps/i386/qwerty/bg-cp1251.map      |    1 +
 data/keymaps/i386/qwerty/bg_bds-cp1251.map  |    1 +
 data/keymaps/i386/qwerty/br-abnt.map        |    1 +
 data/keymaps/i386/qwerty/by.map             |    1 +
 data/keymaps/i386/qwerty/cz-cp1250.map      |    1 +
 data/keymaps/i386/qwerty/cz-lat2-prog.map   |    1 +
 data/keymaps/i386/qwerty/cz-lat2.map        |    1 +
 data/keymaps/i386/qwerty/cz.map             |    8 ++++----
 data/keymaps/i386/qwerty/defkeymap.map      |    1 +
 data/keymaps/i386/qwerty/defkeymap_V1.0.map |    1 +
 data/keymaps/i386/qwerty/lt.baltic.map      |    1 +
 data/keymaps/i386/qwerty/lt.l4.map          |    1 +
 data/keymaps/i386/qwerty/lt.map             |    1 +
 data/keymaps/i386/qwerty/pl2.map            |    1 +
 data/keymaps/i386/qwerty/sk-prog-qwerty.map |    1 +
 data/keymaps/i386/qwerty/ua-utf-ws.map      |    1 +
 data/keymaps/i386/qwerty/ua-utf.map         |    1 +
 data/keymaps/i386/qwerty/ua-ws.map          |    1 +
 data/keymaps/i386/qwerty/ua.map             |    1 +
 data/keymaps/i386/qwerty/us-acentos.map     |    1 +
 data/keymaps/i386/qwertz/cz-us-qwertz.map   |    1 +
 data/keymaps/i386/qwertz/sk-prog-qwertz.map |    1 +
 24 files changed, 27 insertions(+), 4 deletions(-)

Index: kbd-1.15.2/data/keymaps/i386/azerty/fr-latin9.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/azerty/fr-latin9.map
+++ kbd-1.15.2/data/keymaps/i386/azerty/fr-latin9.map
@@ -418,6 +418,7 @@ keycode 100 = AltGr
 # La touche Ctrl+Pause = Attn = 101 a un code pour elle-m�me
 #
 keycode 101 = Break
+       control keycode 101 = Control_c
 
 keycode 102 = Home
 
Index: kbd-1.15.2/data/keymaps/i386/fgGIod/tr_f-latin5.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/fgGIod/tr_f-latin5.map
+++ kbd-1.15.2/data/keymaps/i386/fgGIod/tr_f-latin5.map
@@ -217,6 +217,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/bg-cp1251.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/bg-cp1251.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/bg-cp1251.map
@@ -312,6 +312,7 @@ keycode  99 =       Control_backslash
        altgr   alt     keycode  99 = Control_backslash
 keycode 100 =  AltGr
 keycode 101 =  Break
+       control keycode 101 = Control_c
 keycode 102 =  Find
 keycode 103 =  Up
 keycode 104 =  Prior
Index: kbd-1.15.2/data/keymaps/i386/qwerty/bg_bds-cp1251.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/bg_bds-cp1251.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/bg_bds-cp1251.map
@@ -638,6 +638,7 @@ keycode  98 = KP_Divide
 keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/br-abnt.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/br-abnt.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/br-abnt.map
@@ -197,6 +197,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/by.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/by.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/by.map
@@ -529,6 +529,7 @@ keycode  99 =       VoidSymbol              Control_backsl
                Meta_Control_backslash  Meta_Control_backslash  
Meta_Control_backslash
 keycode 100 =  Alt
 keycode 101 =  Break
+       control keycode 101 = Control_c
 keycode 102 =  Find
 keycode 103 =  Up              Up              Up      \
                KeyboardSignal  Up              Up      \
Index: kbd-1.15.2/data/keymaps/i386/qwerty/cz-cp1250.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/cz-cp1250.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/cz-cp1250.map
@@ -138,6 +138,7 @@ keycode  99 = VoidSymbol
        alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior
Index: kbd-1.15.2/data/keymaps/i386/qwerty/cz-lat2-prog.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/cz-lat2-prog.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/cz-lat2-prog.map
@@ -141,6 +141,7 @@ keycode  99 = VoidSymbol
        alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior Scroll_Backward Prior Scroll_Backward VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol 
Index: kbd-1.15.2/data/keymaps/i386/qwerty/cz-lat2.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/cz-lat2.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/cz-lat2.map
@@ -138,6 +138,7 @@ keycode  99 = VoidSymbol
        alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior Scroll_Backward Prior Scroll_Backward VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
Index: kbd-1.15.2/data/keymaps/i386/qwerty/cz.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/cz.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/cz.map
@@ -1086,13 +1086,13 @@ keycode  99 = dead_acute   dead_acute
 keycode 100 = AltGr
 #
 #keycode 101 = Break
-keycode 101 = Break        Break        VoidSymbol   VoidSymbol   VoidSymbol  \
-              VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
+keycode 101 = Break        Break        VoidSymbol   VoidSymbol   Control_c   \
+              Control_c    VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol                                                      \
-              Break        Break        VoidSymbol   VoidSymbol   VoidSymbol  \
-              VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
+              Break        Break        VoidSymbol   VoidSymbol   Control_c   \
+              Control_c    VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol   VoidSymbol  \
               VoidSymbol
Index: kbd-1.15.2/data/keymaps/i386/qwerty/defkeymap.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/defkeymap.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/defkeymap.map
@@ -222,6 +222,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior
Index: kbd-1.15.2/data/keymaps/i386/qwerty/defkeymap_V1.0.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/defkeymap_V1.0.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/defkeymap_V1.0.map
@@ -185,6 +185,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior
Index: kbd-1.15.2/data/keymaps/i386/qwerty/lt.baltic.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/lt.baltic.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/lt.baltic.map
@@ -171,6 +171,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/lt.l4.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/lt.l4.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/lt.l4.map
@@ -463,6 +463,7 @@ keycode  99 = VoidSymbol     # 99=Print-Scr
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break #  101=Control-Pause
+       control keycode 101 = Control_c
 string F102 = "\033[7$"
 keycode 102 = Find  #  =Home
        shift         keycode 102 = F102
Index: kbd-1.15.2/data/keymaps/i386/qwerty/lt.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/lt.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/lt.map
@@ -462,6 +462,7 @@ keycode  99 = VoidSymbol     # 99=Print-Scr
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break #  101=Control-Pause
+       control keycode 101 = Control_c
 string F102 = "\033[7$"
 keycode 102 = Find  #  =Home
        shift         keycode 102 = F102
Index: kbd-1.15.2/data/keymaps/i386/qwerty/pl2.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/pl2.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/pl2.map
@@ -242,6 +242,7 @@ keycode  99 = VoidSymbol
        alt             keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/sk-prog-qwerty.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/sk-prog-qwerty.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/sk-prog-qwerty.map
@@ -122,6 +122,7 @@ keycode  99 = VoidSymbol
        alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior
Index: kbd-1.15.2/data/keymaps/i386/qwerty/ua-utf-ws.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/ua-utf-ws.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/ua-utf-ws.map
@@ -1526,6 +1526,7 @@ ctrll keycode 100 = CtrlR_Lock
 ctrlr keycode 100 = CtrlR_Lock
 ctrll ctrlr keycode 100 = CtrlR_Lock
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/ua-utf.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/ua-utf.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/ua-utf.map
@@ -1516,6 +1516,7 @@ ctrll keycode 100 = CtrlR_Lock
 ctrlr keycode 100 = CtrlR_Lock
 ctrll ctrlr keycode 100 = CtrlR_Lock
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/ua-ws.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/ua-ws.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/ua-ws.map
@@ -1521,6 +1521,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = Alt
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/ua.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/ua.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/ua.map
@@ -1515,6 +1515,7 @@ ctrll keycode 100 = CtrlR_Lock
 ctrlr keycode 100 = CtrlR_Lock
 ctrll ctrlr keycode 100 = CtrlR_Lock
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwerty/us-acentos.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwerty/us-acentos.map
+++ kbd-1.15.2/data/keymaps/i386/qwerty/us-acentos.map
@@ -194,6 +194,7 @@ keycode  99 = VoidSymbol
        alt     keycode  99 = Control_backslash
 keycode 100 = AltGr           
 keycode 101 = Break           
+       control keycode 101 = Control_c
 keycode 102 = Find            
 keycode 103 = Up              
 keycode 104 = Prior           
Index: kbd-1.15.2/data/keymaps/i386/qwertz/cz-us-qwertz.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwertz/cz-us-qwertz.map
+++ kbd-1.15.2/data/keymaps/i386/qwertz/cz-us-qwertz.map
@@ -135,6 +135,7 @@ control keycode  99 = Control_backslash
 alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior Scroll_Backward Prior Scroll_Backward VoidSymbol 
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
Index: kbd-1.15.2/data/keymaps/i386/qwertz/sk-prog-qwertz.map
===================================================================
--- kbd-1.15.2.orig/data/keymaps/i386/qwertz/sk-prog-qwertz.map
+++ kbd-1.15.2/data/keymaps/i386/qwertz/sk-prog-qwertz.map
@@ -122,6 +122,7 @@ keycode  99 = VoidSymbol
        alt keycode  99 = Control_backslash
 keycode 100 = AltGr
 keycode 101 = Break
+       control keycode 101 = Control_c
 keycode 102 = Find
 keycode 103 = Up
 keycode 104 = Prior
++++++ kbd-1.15.2-setfont-no-cruft.patch ++++++
--- kbd-1.14.1wip/src/kdfontop.c.orig   2008-03-03 23:47:18.160420000 +0100
+++ kbd-1.14.1wip/src/kdfontop.c        2008-03-03 23:52:32.918345000 +0100
@@ -268,6 +268,23 @@
                        return 0;
        }
 
+#if 1
+       // We no longer try PIO_FONT* calls.
+       // A former patch even added a possible 5 seconds delay loop here, in 
an attempt to
+       // gain victory over kdm. We no do this fight, as it can only result in 
races.
+       // https://bugzilla.novell.com/show_bug.cgi?id=302010
+       //
+       // Two effects:
+       // a) Without the delay loop, we are fast enough to run early. 
+       //    Moving setfont calls to an earlier point most likly
+       //    avoids the race.
+       // b) Without the old compat calls, it should be easier to 
+       //    fix this in kernel side.
+       //
+       fprintf(stderr, "%s: putfont: %d,%dx%d:  failed: %d\n", progname, 
count, width, height, i);
+       perror("putfont: KDFONTOP");
+       return -1;
+#else
        /* Second attempt: PIO_FONTX */
        cfd.charcount = count;
        cfd.charheight = height;
@@ -302,4 +319,5 @@
                return -1;
        }
        return 0;
+#endif
 }
++++++ kbd-1.15.2-sv-latin1-keycode10.patch ++++++
--- kbd-1.12/data/keymaps/i386/qwerty/sv-latin1.map.orig        2007-07-17 
12:33:52.000000000 +0200
+++ kbd-1.12/data/keymaps/i386/qwerty/sv-latin1.map     2007-07-17 
12:36:34.855389000 +0200
@@ -42,6 +42,7 @@
        alt     keycode   9 = Meta_eight
 keycode  10 = nine             parenright      bracketright
        alt     keycode  10 = Meta_nine
+       control altgr keycode 10 = Control_bracketright
 keycode  11 = zero             equal           braceright
        alt     keycode  11 = Meta_zero
 keycode  12 = plus       question         backslash
++++++ kbd-1.15.2-unicode_scripts.patch ++++++
--- src/unicode_start
+++ src/unicode_start
@@ -72,6 +72,17 @@
 # have a Unicode map attached, or explicitly specified, e.g.,
 # by giving `def.uni' as a second argument.
 
+DEFAULT_UNICODE_FONT='LatArCyrHeb-16'
+# Also drdos8x16 is a good candidate.
+
+# Fonts with 512 glyphs like LatArCyrHeb-16 make it impossible to use bold
+# on the console, which makes YaST2 unusable. To be able to use bold,
+# only fonts with 256 glyphs can be used. Therefore we prefer
+# the font specified in /etc/sysconfig/console. This should be OK because
+# the default font written to /etc/sysconfig/console by YaST2
+# is currently always a font with 256 glyphs and a Unicode map
+# which is suitable for the language used during the installation.
+
 case "$#" in
        2)
                setfont "$1" -u "$2"
@@ -80,6 +91,24 @@
                setfont "$1"
                ;;
        0)
+               if [ -f /etc/sysconfig/console ] ; then
+                   . /etc/sysconfig/console
+               fi
+               if [ -n "$CONSOLE_FONT" ] ; then
+                       SETFONT_ARGS="$CONSOLE_FONT"
+                   if [ -n "$CONSOLE_UNICODEMAP" ] ; then
+                       SETFONT_ARGS="$SETFONT_ARGS -u $CONSOLE_UNICODEMAP"
+                   fi
+                   if [ -n "$CONSOLE_SCREENMAP" ] ; then
+                       SETFONT_ARGS="$SETFONT_ARGS -m $CONSOLE_SCREENMAP"
+                   fi
+                   setfont $SETFONT_ARGS
+                   if [ -n "$CONSOLE_MAGIC" -a "$CONSOLE_MAGIC" != "none" ] ; 
then
+                       echo -en "\033$CONSOLE_MAGIC"
+                   fi
+               else
+                   setfont $DEFAULT_UNICODE_FONT
+               fi
                ;;
        *)
                echo "usage: unicode_start [font [unicode map]]"
++++++ 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.pl ++++++
#! /usr/bin/perl -w
#
# simple script to switch the keyboard language
# (c) 2014 [email protected]

my $sysconffile = '/etc/sysconfig/keyboard';
my $mapdir = '/usr/share/kbd/keymaps/i386';

my $version = '1.0';

my $what = shift || '-h';


my $v = slurp_sysconf($sysconffile);
my $m = find_maps();

my $l = {
  'english' => 'us.map',
  'german'  => 'de-latin1-nodeadkeys.map',
  'french'  => 'fr-latin1.map',
  'spanish' => 'es.map',
  'italian' => 'it.map',
  'dutch'   => 'nl.map',
};

for my $k (keys %$l)
  {
    # zap non-installed languages from our pretty printed list.
    delete $l->{$k} unless $m->{$l->{$k}} or $m->{"$l->{$k}.gz"};
  }

if ($what eq '-h')
  {
    print qq{kbd Version $version

Usage: $0 [option] [mapping]

Available options are:
  -l    list typical language mappings.
  -a    list all maps
  -h    print this usage

Specify as a mapping either a language name (seen with -l)
or a mapping name (seen with -a). For a mapping name, add a .map suffix.

Current keymap: $v->{KEYTABLE}
};
    exit 0;
  }
  
if ($what eq '-l')
  {
    for my $k (sort keys %$l)
      {
        printf "%-10s %s\n",  $k, $l->{$k};
      }
    exit 0;
  }

if ($what eq '-a' || $what eq '-m')
  { 
    my @k = map { $1 if /(.*).map(.gz)?$/ } sort keys %$m;
    print "current keymap: $v->{KEYTABLE}\n";
    print "available keymaps: @k\n";
    print "\n\nuse '$0 MAPNAME' to change.\n";
    exit 0;
  }

$what = $l->{$what} if $l->{$what};

$what = "$what.gz"     if $m->{"$what.gz"};
$what = "$what.map"    if $m->{"$what.map"};
$what = "$what.map.gz" if $m->{"$what.map.gz"};

die "$what: keymap not found.\n Try $0 -h\n" unless $m->{$what};

write_sysconf($sysconffile, { 'KEYTABLE' => $what } );
# system("kbd_mode -u");                # switch to unicode. Should be the 
default anyway.
system("loadkeys $what");       # now set the keymap.

# FIXME: is that all?
# mayb also do: systemctl restart kbd.service 

exit 0;
###################################################################

sub find_maps
{
  my $maps;

  opendir DIR, $mapdir or die "$0: cannot readdir $mapdir: !$\n";
  my @d = grep { -d "$mapdir/$_" && !/^\./ } readdir DIR;
  closedir DIR;
  for my $d (@d)
    {
      opendir DIR, "$mapdir/$d" or die "$0: cannot readdir $mapdir/$d: !$\n";
      my @f = grep { /\.map(.gz)?$/ } readdir DIR;
      closedir DIR;
      for my $f (@f)
        {
          $maps->{$f} = "$d/$f";
        }
    }
  return $maps;
}

sub slurp_sysconf
{
  my ($file) = @_;
  
  my $vals;
  open my $fd, "<", $file or die "$0: cannot read config file $file: $!\n";
  while (defined(my $line = <$fd>))
    {
      chomp $line;
      $vals->{$1} = $2 if $line =~ m{^([A-Z_]+)\s*=\s*"(.*)"};
    }
  close $fd; 
  return $vals;
}

sub write_sysconf
{
  my ($file, $vals) = @_;
  
  my @sysconf = ();
  open my $fd, "<", $file or die "$0: cannot read config file $file: $!\n";
  while (defined(my $line = <$fd>))
    {
      chomp $line;
      push @sysconf, $line;
    }
  close $fd; 
  open $fd, ">", $file or die "$0: cannot write config file $file: $!\n";
  for my $line (@sysconf)
    {
      if ($line =~ m{^([A-Z_]+)\s*=\s*"(.*)"})
        {
           my ($keyword,$value) = ($1,$2);
           if (defined $vals->{$keyword})
             {
               $line =~ s{\Q$value\E}{$vals->{$keyword}};
             }
        }
      print $fd "$line\n";
    }
  close $fd or die "$0: could not write config file $file: $!\n";
}
++++++ repack_kbd.sh ++++++
#! /bin/bash
#
# repackage kbd source tar ball, 
# to remove fonts that forbid commercial distribution.
#
# 2005-07-11, [email protected]

tmpdir=`mktemp -d`

in="$1"
name="${in%.tar.*}"

# recent gnu tar can autodetect gzip / bzip2
if ! tar xf "$in" -C $tmpdir; then
        rm -rf $tmpdir
        exit 1
fi
 
echo removing files...
find $tmpdir -iname \*agafari\* | tee /dev/tty | xargs rm
tar jcf $name-repack.tar.bz2 -C $tmpdir $name

rm -rf $tmpdir
++++++ sysconfig.console ++++++
## 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)
# also applies for the settings here.
#
# Load this console font on bootup:
# (/usr/share/kbd/consolefonts/)
# 
CONSOLE_FONT=""

## Type:        string
## Default:     ""
#
# Some fonts come without a unicode map.
# (.psfu fonts supposedly have it, others often not.)
# You can then specify the unicode mapping of your font 
# explicitly. (/usr/share/kbd/unimaps/)
# Normally not needed.
#
CONSOLE_UNICODEMAP=""

## Type:        string
## Default:     ""
#
# Most programs output 8 bit characters, so you need a table to
# translate those characters into unicode. That one can be specified
# here. (/usr/share/kbd/consoletrans/)
# (Note: If your console is in utf-8 mode you don't need this.)
# If your code does not use a unicode mapping at all (because you
# e.g. explicitly specified UNICODEMAP="none") you may circumvent
# the translation via unicode, but load a map which directly maps
# 8 bit output of your program to a font position.
#
CONSOLE_SCREENMAP=""

## Type:        string
## Default:     ""
#
# for some fonts the console has to be initialized with CONSOLE_MAGIC.
# CONSOLE_MAGIC can be empty or have the values "(B", ")B", "(K" or ")K".
# Normally not needed (automatically handled by setfont).
#
CONSOLE_MAGIC=""

++++++ sysconfig.keyboard ++++++
## Path:        Hardware/Keyboard
## 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:
#
# Keyboard delay time in ms (250, 500, 750, 1000)
KBD_DELAY=""

## Type:        
string(2.0,2.1,2.3,2.5,2.7,3.0,3.3,3.7,4.0,4.3,4.6,5.0,5.5,6.0,6.7,7.5,8.0,8.6,9.2,10.0,10.9,12.0,13.3,15.0,16.0,17.1,18.5,20.0,21.8,24.0,26.7,30.0)
## Default:
#
# Keyboard repeat rate (2.0 - 30.0)
KBD_RATE=""

## Type:        list(bios,yes,no)
## Default:     bios
#
# NumLock on? ("yes" or "no" or empty or "bios" for BIOS setting)
# This setting may interfere with GNOME 
/desktop/gnome/peripherals/keyboard/remember_numlock_state GConf key.
KBD_NUMLOCK="bios"

## Type:        yesno
## Default:     no
#
# ScrollLock on? ("yes" or "no")
KBD_SCRLOCK="no"

## Type:        yesno
## Default:     no
#
# CapsLock on? ("yes" or "no")
KBD_CAPSLOCK="no"

## Type:        yesno
## Default:     no
#
# Disable CAPS LOCK and make it a normal Shift key?
# (Ctrl Caps Lock will still toggle Caps Lock functionality)
# Note that you need to tweak the xkb maps or use xmodmap
# if you want to do the same under X-Windows. In ~/.Xmodmap:
# keycode 0x42 = Shift_L Shift_L
#
KBD_DISABLE_CAPS_LOCK="no"

## Type:        string
## Default:
#
# ttys for the above settings 
# Example: "tty1 tty2"
# "" for tty's 1-6
#
KBD_TTY=""

++++++ testutf8 ++++++
#!/bin/sh

# testutf8 will be soon removed completely, it's kept only not to break
# /etc/profile currently
if tty -s; then
        exit 2
else
        exit 0
fi

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to