SHA256
1
0
forked from pool/kbd
Dominique Leuenberger 2020-09-23 10:59:13 +00:00 committed by Git OBS Bridge
parent 06fa864359
commit 36be77335a
64 changed files with 4560 additions and 2611 deletions

View File

@ -1,42 +0,0 @@
Handling of composition of characters
=====================================
Most of the fonts have much more characters than you can reach directly
through the keyboard. To access all of them you may use showconsolefont,
deduce the decimal code and enter it by holding down <alt> and entering
the code via the keypad. There's a much better way, though:
Most characters may be entered via composition. Many characters are just
consisting of a standard character with some sort of accent or change.
Such characters can be composed by composition. Just press the <compose>
key, let it go again, enter the accent and then the letter.
Some examples: (Assuming Iso-Latin-1/9 character set:)
<compose> " a => ä
<compose> , c => ç
<compose> | S => $
Support for composition is unfortunately not contained in most keymaps.
Most lack two things:
(a) The <compose> key is not mapped
(b) The compose tables are not included
Look at the compose.* files in /usr/share/kbd/keymaps/include/:
(a) You find there two files for having the <compose> key mapped.
(b) You find there compose tables which are suitable for different
character sets.
ad (a): winkeys: The compose key will be mapped on the W*n menu key
shiftctrl: The compose key will be mapped to Shift Ctrl.
You can use both, if you like.
ad (b): latin, latinX, latin1.add, 8859_X: Contains the compose
combinations suitable for the respective character set.
Many people will want to use latin1 or latin1.add. Just
using latin is also sort of an acceptable compromise for
many Latin character sets.
YOU MAY ONLY USE ONE OF THOSE.
If you want the combination of more than one table, you
have to create a file which includes what you want.
Please keep in mind, that all these settings only affect the console,
i.e. text mode.
Your SuSE team

83
README.SuSE Normal file
View File

@ -0,0 +1,83 @@
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 <feedback@suse.de>
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 <feedback@suse.de>

View File

@ -1,61 +0,0 @@
--- cz.map.orig 2015-08-06 13:54:28.823257906 +0200
+++ cz.map 2015-08-06 13:54:49.338038186 +0200
@@ -39,7 +39,7 @@
keycode 38 = +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+006c +U+004c +U+0141 +U+0141 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l +U+004c +U+006c +U+0142 +U+0142 Control_l Control_l Control_l Control_l Meta_l Meta_L Meta_l Meta_L Meta_Control_l Meta_Control_l Meta_Control_l Meta_Control_l
keycode 39 = +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016f U+0022 U+0024 dead_doubleacute +U+016f U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar +U+016e U+0022 U+0024 dead_doubleacute +U+016e U+0022 U+0024 dead_doubleacute Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar Meta_quotedbl Meta_quotedbl Meta_dollar Meta_dollar
keycode 40 = U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+00df U+00a7 U+0021 U+0027 +U+00df Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe U+00a7 U+0021 U+0027 +U+0053 U+00a7 U+0021 U+0027 +U+0053 Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe Meta_exclam Meta_exclam Meta_apostrophe Meta_apostrophe
-keycode 41 = U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum
+keycode 41 = U+003b dead_grave U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum U+003b U+00b0 U+0060 U+007e nul Control_asciicircum nul Control_asciicircum Meta_semicolon Meta_semicolon Meta_grave Meta_asciitilde Meta_nul Meta_Control_asciicircum Meta_nul Meta_Control_asciicircum
keycode 42 = Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift Shift
keycode 43 = dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash dead_diaeresis U+0027 U+005c U+007c Control_backslash Control_backslash Control_backslash Control_backslash Meta_apostrophe Meta_apostrophe Meta_backslash Meta_bar Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash
keycode 44 = +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0079 +U+0059 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y +U+0059 +U+0079 U+00b0 U+003c Control_y Control_y Control_y Control_y Meta_y Meta_Y Meta_less Meta_less Meta_Control_y Meta_Control_y Meta_Control_y Meta_Control_y
@@ -108,3 +108,49 @@
keycode 127 = VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 121 = KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period
strings as usual
+# dead_grave
+compose '`' 'u' to U+016F
+compose '`' 'U' to U+016E
+compose '`' 'z' to U+00B0
+compose '`' 'Z' to U+00B0
+# dead_acute
+compose '\'' 'a' to U+00E1
+compose '\'' 'A' to U+00C1
+compose '\'' 'e' to U+00E9
+compose '\'' 'E' to U+00C9
+compose '\'' 'i' to U+00ED
+compose '\'' 'I' to U+00CD
+compose '\'' 'o' to U+00F3
+compose '\'' 'O' to U+00D3
+compose '\'' 'u' to U+00FA
+compose '\'' 'U' to U+00DA
+compose '\'' 'y' to U+00FD
+compose '\'' 'Y' to U+00DD
+# dead_caron
+compose '^' 'u' to U+016F
+compose '^' 'U' to U+016E
+compose '^' 'c' to U+010D
+compose '^' 'C' to U+010C
+compose '^' 'd' to U+010F
+compose '^' 'D' to U+010E
+compose '^' 'e' to U+011B
+compose '^' 'E' to U+011A
+compose '^' 'n' to U+0148
+compose '^' 'N' to U+0147
+compose '^' 'r' to U+0159
+compose '^' 'R' to U+0158
+compose '^' 's' to U+0161
+compose '^' 'S' to U+0160
+compose '^' 't' to U+0165
+compose '^' 'T' to U+0164
+compose '^' 'z' to U+017E
+compose '^' 'Z' to U+017D
+# dead_diaeresis
+compose '"' 'a' to U+00E4
+compose '"' 'A' to U+00C4
+compose '"' 'e' to U+00EB
+compose '"' 'E' to U+00CB
+compose '"' 'o' to U+00F6
+compose '"' 'O' to U+00D6
+compose '"' 'u' to U+00FC
+compose '"' 'U' to U+00DC

View File

@ -1,49 +0,0 @@
'\" -*- 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).

112
fbtest.c
View File

@ -1,112 +0,0 @@
/*
* fbtest(.c)
*
* Copyright 2008 Werner Fink, 2008 SUSE LINUX Products GmbH, Germany.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
*/
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/sysmacros.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <fcntl.h>
#include <getopt.h>
#include <unistd.h>
#include <linux/fb.h>
static struct option options[] = {
{ "fb", required_argument, 0, 'f'},
{ "vc", required_argument, 0, 'C'},
{ "help", no_argument, 0, 'h'},
{ (const char*)0, 0, (int*)0, 0}
};
int main(int argc, char * argv[])
{
struct fb_con2fbmap map = {1, -1};
const char *base = basename(argv[0]);
const char * fb = (char*)0;
const char * vc = (char*)0;
struct stat st;
int c, fd;
opterr = 0;
while ((c = getopt_long(argc, argv, "hf:C:", options, (int *)0)) != -1) {
switch (c) {
case 'f':
fb = optarg;
break;
case 'C':
vc = optarg;
break;
case 'h':
fprintf(stderr, "%s: Usage:\n %s [-f <fb_device>] [-C <vc_device>]\n", base, base);
fprintf(stderr, "Valid options are:\n");
fprintf(stderr, " -f <fb_device> The frame buffer device (default /dev/fb0)\n");
fprintf(stderr, " -C <vc_device> The virtual console device (default /dev/tty1)\n");
return 0;
case '?':
fprintf(stdout, "%s: Invalid option for help use:\n %s --help\n", base, base);
return 1;
break;
default:
break;
}
}
if (fb == (char*)0) {
fb = "/dev/fb/0";
if (stat(fb, &st) < 0) {
if (errno != ENOENT && errno != ENOTDIR) {
fprintf(stderr, "%s: %s: %m\n", base, fb);
return 1;
}
fb = "/dev/fb0";
if (stat(fb, &st) < 0) {
fprintf(stderr, "%s: %s: %m\n", base, fb);
return 1;
}
}
}
if (vc == (char*)0)
vc = "/dev/tty1";
if (stat(vc, &st) < 0) {
fprintf(stderr, "%s: %s: %m\n", base, vc);
return 1;
}
if (major(st.st_rdev) != (dev_t)4) {
errno = ECANCELED;
fprintf(stderr, "%s: %s: %m\n", base, vc);
return 1;
}
if ((fd = open(fb, O_RDONLY|O_NOCTTY)) < 0) {
if (errno != ENODEV)
fprintf(stderr, "%s: %s: %m\n", base, fb);
return 1;
}
map.console = (typeof(map.console))minor(st.st_rdev);
map.framebuffer = (typeof(map.framebuffer))-1;
if (ioctl(fd, FBIOGET_CON2FBMAP, &map) < 0) {
fprintf(stderr, "%s: %s: %m\n", base, fb);
return 1;
}
return map.framebuffer > FB_MAX;
}

View File

@ -1,70 +0,0 @@
#!/bin/bash
# Generate entries for systemd's /usr/share/systemd/kbd-model-map
if [ $# -eq 0 ]; then
pushd /usr/share/kbd/keymaps/xkb > /dev/null || exit 1
else
pushd > /dev/null $1 || exit 1
fi
echo "# generated from xkb generated keymaps (basic layouts *without* variant)"
for i in $(ls *.map.gz|grep -v "-"); do
consolelayout=$(echo $i|sed 's/.map.gz//g')
layout=$consolelayout
variant="-"
printf '%s' "$consolelayout"
printf "\t\t\t"
printf '%s' "$layout"
printf '\t'
printf 'microsoftpro\t\t'
printf '%s' "$variant"
printf '\t\t'
printf 'terminate:ctrl_alt_bksp\n'
done | sort -u
echo "# generated from xkb generated keymaps (layouts *with* variant)"
for i in $(ls *-*.map.gz); do
consolelayout=$(echo $i|sed 's/.map.gz//g')
conlen=$(echo "$consolelayout" |wc -m)
conlen=$((conlen - 1))
layout=$(echo $i|cut -d "-" -f 1)
variant=$(echo $i|cut -d "-" -f 2,3,4,5,6,7,8,9,10|cut -d "." -f1)
varlen=$(echo $variant|wc -m)
varlen=$((varlen -1))
printf '%s' "$consolelayout"
if [ $conlen -lt 8 ]; then
printf "\t\t\t"
elif [ $conlen -lt 16 ]; then
printf "\t\t"
elif [ $conlen -lt 24 ]; then
printf "\t"
else
printf ' '
fi
printf '%s' "$layout"
printf '\t'
if [ "$layout" == "br" ]; then
printf 'abnt2\t\t'
elif [ "$layout" == "jp" ]; then
printf 'jp106\t\t'
else
printf 'microsoftpro\t\t'
fi
printf '%s' "$variant"
if [ $varlen -lt 8 ]; then
printf "\t\t"
elif [ $varlen -lt 16 ]; then
printf "\t"
else
printf ' '
fi
printf 'terminate:ctrl_alt_bksp\n'
done | sort -u
popd > /dev/null

1048
kbd-1.12-Meta-Tab.diff Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,54 @@
--- 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, jw@suse.de.
+ */
+ 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");

View File

@ -0,0 +1,21 @@
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

View File

@ -1,5 +1,5 @@
--- docs/doc/kbd.FAQ-15.html.orig 2012-02-27 13:27:11.000000000 +0300 --- kbd-1.12/doc/kbd.FAQ-15.html.orig 2003-09-24 23:01:40.000000000 +0200
+++ docs/doc/kbd.FAQ-15.html 2013-07-30 18:56:43.697000005 +0300 +++ kbd-1.12/doc/kbd.FAQ-15.html 2006-08-11 12:10:06.000000000 +0200
@@ -188,7 +188,7 @@ @@ -188,7 +188,7 @@
<P>XFree86 also supports Slow Keys, Repeat Keys, Bounce Keys and an <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 audible bell. <CODE>xkbcomp</CODE> can be used to generate a <CODE>.xkm</CODE> file
@ -9,8 +9,8 @@
Unfortunately, the exact process is still undocumented. Unfortunately, the exact process is still undocumented.
<P> <P>
<HR> <HR>
--- docs/doc/kbd.FAQ.txt.orig 2012-02-27 13:27:11.000000000 +0300 --- kbd-1.12/doc/kbd.FAQ.txt.orig 1999-10-08 22:46:24.000000000 +0200
+++ docs/doc/kbd.FAQ.txt 2013-07-30 18:57:41.150000005 +0300 +++ kbd-1.12/doc/kbd.FAQ.txt 2006-08-11 12:10:16.000000000 +0200
@@ -1253,7 +1253,7 @@ @@ -1253,7 +1253,7 @@
1. The Linux keyboard driver mechanism, used in conjunction with 1. The Linux keyboard driver mechanism, used in conjunction with
loadkeys. loadkeys.
@ -20,8 +20,8 @@
See also Andrew D. Balsa's comments at See also Andrew D. Balsa's comments at
http://wauug.erols.com/~balsa/linux/deadkeys/index.html. http://wauug.erols.com/~balsa/linux/deadkeys/index.html.
--- docs/doc/kbd.FAQ-8.html.orig 2012-02-27 13:27:11.000000000 +0300 --- kbd-1.12/doc/kbd.FAQ-8.html.orig 2003-09-24 23:01:40.000000000 +0200
+++ docs/doc/kbd.FAQ-8.html 2013-07-30 18:58:23.978000004 +0300 +++ kbd-1.12/doc/kbd.FAQ-8.html 2006-08-11 12:09:53.000000000 +0200
@@ -154,7 +154,7 @@ @@ -154,7 +154,7 @@
<OL> <OL>
<LI>The Linux keyboard driver mechanism, used in conjunction with loadkeys.</LI> <LI>The Linux keyboard driver mechanism, used in conjunction with loadkeys.</LI>

View File

@ -0,0 +1,34 @@
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

View File

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

View File

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

View File

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

146
kbd-1.12-happy-abuild.diff Normal file
View File

@ -0,0 +1,146 @@
--- 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

99
kbd-1.12-kbd_mode.diff Normal file
View File

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

View File

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

View File

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

99
kbd-1.12-mac-de.diff Normal file
View File

@ -0,0 +1,99 @@
---
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

26
kbd-1.12-mac-dk.diff Normal file
View File

@ -0,0 +1,26 @@
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

24
kbd-1.12-noclaudio.diff Normal file
View File

@ -0,0 +1,24 @@
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 olh@suse.de
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 olh@suse.de from mac-de_CH
alt_is_meta

View File

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

View File

@ -0,0 +1,40 @@
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%@'

View File

@ -0,0 +1,285 @@
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

View File

@ -0,0 +1,29 @@
--- 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, jw@suse.de (#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, jw@suse.de (#88501)
/* instructions to combine fonts? */
{ char *combineheader = "# combine partial fonts\n";

View File

@ -0,0 +1,44 @@
--- 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;
}

View File

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

48
kbd-1.12-strip.diff Normal file
View File

@ -0,0 +1,48 @@
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

73
kbd-1.12-swiss.diff Normal file
View File

@ -0,0 +1,73 @@
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

View File

@ -0,0 +1,79 @@
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
+

399
kbd-1.12.diff Normal file
View File

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

15
kbd-1.12.lsm Normal file
View File

@ -0,0 +1,15 @@
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 (aeb@cwi.nl)
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

3
kbd-1.12.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:22dd61453c6f5feffc2170118edb151c9eda2dee8bdc98d71e5b8f5be671de75
size 635392

View File

@ -1,82 +0,0 @@
Index: docs/man/man1/dumpkeys.1.in
===================================================================
--- docs/man/man1/dumpkeys.1.in.orig
+++ docs/man/man1/dumpkeys.1.in
@@ -4,6 +4,7 @@
dumpkeys \- dump keyboard translation tables
.SH SYNOPSIS
.B dumpkeys
+.RI [ \-C\ '<vc>' | \-\-console='<vc>' ]
[
.\".B \-1Vdfhiklnstv
.B \-h \-\-help \-i \-\-short\-info \-l \-s \-\-long\-info
@@ -212,6 +213,12 @@ loadkeys how to interpret the keymap. (F
.B \-V \-\-version
Prints version number and exits.
.LP
+The affected console device can be specified using the
+.I -C
+(or
+.I --console
+) option. This option supports exactly one device name.
+.LP
.SH FILES
.PD 0
.TP 20
Index: src/dumpkeys.c
===================================================================
--- src/dumpkeys.c.orig
+++ src/dumpkeys.c
@@ -41,6 +41,8 @@ usage(int rc)
" -t, --funcs-only display only the function key strings;\n"
" -k, --keys-only display only key bindings;\n"
" -d, --compose-only display only compose key combinations;\n"
+ " -C <vc>\n"
+ " --console=<vc> Indicate the virtual console device to be used;\n"
" -c, --charset="));
lk_list_charsets(stderr);
fprintf(stderr, _(
@@ -55,7 +57,7 @@ usage(int rc)
int main(int argc, char *argv[])
{
- const char *short_opts = "hilvsnf1tkdS:c:V";
+ const char *short_opts = "hilvsnf1tkdS:C:c:V";
const struct option long_opts[] = {
{ "help", no_argument, NULL, 'h' },
{ "short-info", no_argument, NULL, 'i' },
@@ -68,6 +70,7 @@ int main(int argc, char *argv[])
{ "keys-only", no_argument, NULL, 'k' },
{ "compose-only", no_argument, NULL, 'd' },
{ "charset", required_argument, NULL, 'c' },
+ { "console", required_argument, NULL, 'C' },
{ "verbose", no_argument, NULL, 'v' },
{ "version", no_argument, NULL, 'V' },
{ NULL, 0, NULL, 0 }
@@ -82,6 +85,7 @@ int main(int argc, char *argv[])
char funcs_only = 0;
char keys_only = 0;
char diac_only = 0;
+ char * console = NULL;
struct lk_ctx *ctx;
@@ -135,6 +139,9 @@ int main(int argc, char *argv[])
}
printf("charset \"%s\"\n", optarg);
break;
+ case 'C':
+ console = optarg;
+ break;
case 'V':
print_version_and_exit();
break;
@@ -150,7 +157,7 @@ int main(int argc, char *argv[])
if (optind < argc)
usage(EX_USAGE);
- if ((fd = getfd(NULL)) < 0)
+ if ((fd = getfd(console)) < 0)
kbd_error(EXIT_FAILURE, 0, _("Couldn't get a file descriptor referring to the console"));
/* check whether the keyboard is in Unicode mode */

View File

@ -1,326 +0,0 @@
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

View File

@ -1,34 +0,0 @@
Index: kbd-2.2.0/src/kdfontop.c
===================================================================
--- kbd-2.2.0.orig/src/kdfontop.c
+++ kbd-2.2.0/src/kdfontop.c
@@ -169,6 +169,23 @@ int putfont(int fd, unsigned char *buf,
return 0;
}
+#if 1
+ // We no longer try PIO_FONT* calls.
+ // A former patch even added a possible 5 seconds delay loop here, in an attempt to
+ // gain victory over kdm. We no do this fight, as it can only result in races.
+ // https://bugzilla.novell.com/show_bug.cgi?id=302010
+ //
+ // Two effects:
+ // a) Without the delay loop, we are fast enough to run early.
+ // Moving setfont calls to an earlier point most likly
+ // avoids the race.
+ // b) Without the old compat calls, it should be easier to
+ // fix this in kernel side.
+ //
+ fprintf(stderr, "%s: putfont: %d,%dx%d: failed: %d\n", get_progname(), count, width, height, i);
+ perror("putfont: KDFONTOP");
+ return -1;
+#else
/* Second attempt: PIO_FONTX */
cfd.charcount = count;
cfd.charheight = height;
@@ -191,4 +208,5 @@ int putfont(int fd, unsigned char *buf,
return -1;
}
return 0;
+#endif
}

View File

@ -1,45 +0,0 @@
--- src/unicode_start
+++ src/unicode_start
@@ -72,6 +72,17 @@
# have a Unicode map attached, or explicitly specified, e.g.,
# by giving `def.uni' as a second argument.
+DEFAULT_UNICODE_FONT='LatArCyrHeb-16'
+# Also drdos8x16 is a good candidate.
+
+# Fonts with 512 glyphs like LatArCyrHeb-16 make it impossible to use bold
+# on the console, which makes YaST2 unusable. To be able to use bold,
+# only fonts with 256 glyphs can be used. Therefore we prefer
+# the font specified in /etc/sysconfig/console. This should be OK because
+# the default font written to /etc/sysconfig/console by YaST2
+# is currently always a font with 256 glyphs and a Unicode map
+# which is suitable for the language used during the installation.
+
case "$#" in
2)
setfont "$1" -u "$2"
@@ -80,6 +91,24 @@
setfont "$1"
;;
0)
+ if [ -f /etc/sysconfig/console ] ; then
+ . /etc/sysconfig/console
+ fi
+ if [ -n "$CONSOLE_FONT" ] ; then
+ SETFONT_ARGS="$CONSOLE_FONT"
+ if [ -n "$CONSOLE_UNICODEMAP" ] ; then
+ SETFONT_ARGS="$SETFONT_ARGS -u $CONSOLE_UNICODEMAP"
+ fi
+ if [ -n "$CONSOLE_SCREENMAP" ] ; then
+ SETFONT_ARGS="$SETFONT_ARGS -m $CONSOLE_SCREENMAP"
+ fi
+ setfont $SETFONT_ARGS
+ if [ -n "$CONSOLE_MAGIC" -a "$CONSOLE_MAGIC" != "none" ] ; then
+ printf "\033$CONSOLE_MAGIC"
+ fi
+ else
+ setfont $DEFAULT_UNICODE_FONT
+ fi
;;
*)
echo "usage: unicode_start [font [unicode map]]"

View File

@ -1,26 +0,0 @@
Index: kbd-2.2.0/src/loadkeys.c
===================================================================
--- kbd-2.2.0.orig/src/loadkeys.c
+++ kbd-2.2.0/src/loadkeys.c
@@ -24,7 +24,7 @@
#include "paths.h"
#include "keymap.h"
-static const char *const dirpath1[] = { "", DATADIR "/" KEYMAPDIR "/**", KERNDIR "/", 0 };
+static const char *const dirpath1[] = { "", DATADIR "/" XKBKEYMAPDIR "/", DATADIR "/" LEGACYKEYMAPDIR "/**", DATADIR "/" KEYMAPDIR "/**", KERNDIR "/", 0 };
static const char *const suffixes[] = { "", ".kmap", ".map", 0 };
static void __attribute__((noreturn))
Index: kbd-2.2.0/src/paths.h
===================================================================
--- kbd-2.2.0.orig/src/paths.h
+++ kbd-2.2.0/src/paths.h
@@ -5,6 +5,8 @@
* The following five subdirectories are defined:
*/
#define KEYMAPDIR "keymaps"
+#define XKBKEYMAPDIR "keymaps/xkb"
+#define LEGACYKEYMAPDIR "keymaps/legacy"
#define UNIMAPDIR "unimaps"
#define TRANSDIR "consoletrans"
#define VIDEOMODEDIR "videomodes"

View File

@ -1,10 +0,0 @@
Index: data/keymaps/mac/include/mac-qwerty-layout.inc
===================================================================
--- data/keymaps/mac/include/mac-qwerty-layout.inc.orig 2012-02-27 11:27:11.000000000 +0100
+++ data/keymaps/mac/include/mac-qwerty-layout.inc 2014-08-22 08:47:46.799078582 +0200
@@ -1,4 +1,4 @@
-# qwertz-layout
+# qwerty-layout
keycode 12 = q
keycode 13 = w
keycode 14 = e

View File

@ -1,10 +0,0 @@
Index: docs/man/man1/openvt.1
===================================================================
--- docs/man/man1/openvt.1.orig 2013-08-27 22:45:33.000000000 +0200
+++ docs/man/man1/openvt.1 2014-09-12 11:48:08.465988937 +0200
@@ -92,5 +92,4 @@
.SH "SEE ALSO"
.BR chvt (1),
-.BR doshell (8),
.BR login (1)

View File

@ -1,33 +0,0 @@
Index: data/keymaps/i386/include/euro.map
===================================================================
--- data/keymaps/i386/include/euro.map.orig 2012-02-27 11:27:10.000000000 +0100
+++ data/keymaps/i386/include/euro.map 2014-09-25 12:31:37.594749095 +0200
@@ -2,5 +2,5 @@
# [Say: "loadkeys euro" to get Euro and cent with Alt on the positions
# where many keyboards have E and C.
# To get it displayed, use a latin0 (i.e., latin9) font.]
-alt keycode 18 = currency
+alt keycode 18 = euro
alt keycode 46 = cent
Index: data/keymaps/i386/include/euro1.map
===================================================================
--- data/keymaps/i386/include/euro1.map.orig 2012-02-27 11:27:10.000000000 +0100
+++ data/keymaps/i386/include/euro1.map 2014-09-25 12:31:20.218749689 +0200
@@ -2,5 +2,5 @@
# [Say: "loadkeys euro1" to get Euro and cent with AltGr (right alt)
# on the positions where many keyboards have 5 and C.
# To get it displayed, use a latin0 (i.e., latin9) font.]
-altgr keycode 6 = currency
+altgr keycode 6 = euro
altgr keycode 46 = cent
Index: data/keymaps/i386/include/euro2.map
===================================================================
--- data/keymaps/i386/include/euro2.map.orig 2012-02-27 11:27:10.000000000 +0100
+++ data/keymaps/i386/include/euro2.map 2014-09-25 12:31:52.098748600 +0200
@@ -2,5 +2,5 @@
# [Say: "loadkeys euro2" to get Euro and cent with AltGr (right alt)
# on the positions where many keyboards have E and C.
# To get it displayed, use a latin0 (i.e., latin9) font.]
-altgr keycode 18 = currency
+altgr keycode 18 = euro
altgr keycode 46 = cent

View File

@ -1,105 +0,0 @@
diff -Ndurp kbd-2.0.2/contrib/font2psf kbd-2.0.2-fix-bashisms/contrib/font2psf
--- kbd-2.0.2/contrib/font2psf 2012-02-27 12:27:10.000000000 +0200
+++ kbd-2.0.2-fix-bashisms/contrib/font2psf 2014-10-19 23:07:11.719239190 +0300
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#written by Martin Lohner, SuSE GmbH, Dec 1998
echo "This script converts 256 character font to psf-fonts"
echo "It simply assumes that all files in the current directory"
@@ -15,24 +15,21 @@ read a
random=hfdsvnpoh97k
if [ $a = y -o $a = Y ] ; then
echo "Creating psf-headers..."
- echo -ne "\066" > $random
- echo -ne "\004" >> $random
- echo -ne "\000" >> $random
+ printf "\066\004\000" > $random
-
- echo -ne "\006" > $random.6.tmp
+ printf "\006" > $random.6.tmp
cat $random $random.6.tmp > $random.6
- echo -ne "\010" > $random.8.tmp
+ printf "\010" > $random.8.tmp
cat $random $random.8.tmp > $random.8
- echo -ne "\012" > $random.10.tmp
+ printf "\012" > $random.10.tmp
cat $random $random.10.tmp > $random.10
- echo -ne "\014" > $random.12.tmp
+ printf "\014" > $random.12.tmp
cat $random $random.12.tmp > $random.12
- echo -ne "\016" > $random.14.tmp
+ printf "\016" > $random.14.tmp
cat $random $random.14.tmp > $random.14
- echo -ne "\020" > $random.16.tmp
+ printf "\020" > $random.16.tmp
cat $random $random.16.tmp > $random.16
- echo -ne "\023" > $random.19.tmp
+ printf "\023" > $random.19.tmp
cat $random $random.19.tmp > $random.19
for i in 6 8 10 12 14 16 19; do
diff -Ndurp kbd-2.0.2/contrib/psfsplit kbd-2.0.2-fix-bashisms/contrib/psfsplit
--- kbd-2.0.2/contrib/psfsplit 2012-02-27 12:27:10.000000000 +0200
+++ kbd-2.0.2-fix-bashisms/contrib/psfsplit 2014-10-19 22:53:02.271296655 +0300
@@ -11,17 +11,17 @@ then echo $1 -- non .psf file
exit
fi
size=`hexdump -e '/1 "%i" ' -n1 -s2 $1 `
-size=$[ ($size % 2 + 1) * 256 ]
+size=$((($size % 2 + 1) * 256))
height=`hexdump -e '/1 "%i" ' -n1 -s3 $1 `
echo $size chars, height=$height
mkdir $1_
-dd bs=4 count=1 if=$1 of=$1_/#psf_header &>/dev/null
+dd bs=4 count=1 if=$1 of=$1_/#psf_header >/dev/null 2>&1
i=0
-while let $[ i < $size ]
+while [ $i -lt $size ]
do
- dd bs=1 count=$height skip=$[ $i * $height + 4 ] if=$1 \
- of=$1_/`printf "%.3x" $i` &>/dev/null
- let i+=1
+ dd bs=1 count=$height skip=$(($i * $height + 4)) if=$1 \
+ of=$1_/`printf "%.3x" $i` >/dev/null 2>&1
+ i=$((i + 1))
done
-dd bs=1 skip=$[ $i * $height + 4 ] if=$1 of=$1_/map_tables &>/dev/null
+dd bs=1 skip=$(($i * $height + 4)) if=$1 of=$1_/map_tables >/dev/null 2>&1
diff -Ndurp kbd-2.0.2/contrib/showconsolefont kbd-2.0.2-fix-bashisms/contrib/showconsolefont
--- kbd-2.0.2/contrib/showconsolefont 2012-02-27 12:27:10.000000000 +0200
+++ kbd-2.0.2-fix-bashisms/contrib/showconsolefont 2014-10-19 22:58:03.106276304 +0300
@@ -5,16 +5,16 @@
# A small shell script version of the `showconsolefont' C program
#
-echo -e "\033%G"
+printf "\033%%G\n"
for L in "0 2 4 6" "1 3 5 7"; do
for P in 0 1 2 3 4 5 6 7; do
for U in 0 1 2 3; do
for K in $L; do
- echo -ne " \357\20$U\2$K$P"
+ printf " \357\20$U\2$K$P"
done
done
echo
done
echo
done
-echo -ne "\033%@"
+printf "\033%%@"
diff -Ndurp kbd-2.0.2/rc/suse-kbd.rc kbd-2.0.2-fix-bashisms/rc/suse-kbd.rc
--- kbd-2.0.2/rc/suse-kbd.rc 2012-02-27 12:27:11.000000000 +0200
+++ kbd-2.0.2-fix-bashisms/rc/suse-kbd.rc 2014-10-19 23:00:34.475266064 +0300
@@ -76,7 +76,7 @@ case "$1" in
else
return=$rc_failed
fi
- echo -e "Loading keymap ${retmsg#Loading*/usr/lib/kbd/keymaps/*/}${return}"
+ printf "Loading keymap ${retmsg#Loading*/usr/lib/kbd/keymaps/*/}${return}\n"
;;
stop)
;;

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8c769445fb7342e032105ede63848f3d9c90bd380115d47b378fd3452655bc6c
size 1132436

View File

@ -1,71 +0,0 @@
Disable characters >=U+F000. These do not work properly.
Explanation from Alexey Gladkov:
The kbd value is unsigned short [1] and take a look how kernel gets
a type [2]. The last bytes are occupied by type.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/kd.h?id=06dd3dfeea60e2a6457a6aedf97afc8e6d2ba497#n103
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/keyboard.h?id=06dd3dfeea60e2a6457a6aedf97afc8e6d2ba497#n45
The problem in the kernel. In the kb_value there is no room to store such
values.
Index: kbd-2.0.4/data/keymaps/i386/qwertz/de_alt_UTF-8.map
===================================================================
--- kbd-2.0.4.orig/data/keymaps/i386/qwertz/de_alt_UTF-8.map
+++ kbd-2.0.4/data/keymaps/i386/qwertz/de_alt_UTF-8.map
@@ -160,7 +160,7 @@ shift alt keycode 2 = U+00AC # notsig
shift alt keycode 3 = U+201D # right double quote
shift alt keycode 4 = numbersign
shift alt keycode 5 = sterling
-shift alt keycode 6 = U+FB01 # fi ligature
+#shift alt keycode 6 = U+FB01 # fi ligature
shift alt keycode 7 = dead_circumflex
shift alt keycode 8 = backslash
shift alt keycode 9 = U+02DC # small tilde
@@ -179,7 +179,7 @@ shift alt keycode 23 = Ucircumflex
shift alt keycode 24 = Ooblique
shift alt keycode 25 = U+220F # n-ary product
shift alt keycode 26 = degree
-shift alt keycode 27 = U+F8FF # apple logo
+#shift alt keycode 27 = U+F8FF # apple logo
shift alt keycode 30 = Aring
shift alt keycode 31 = Iacute
shift alt keycode 32 = U+2122 # trade mark
@@ -188,7 +188,7 @@ shift alt keycode 34 = Igrave
shift alt keycode 35 = Oacute
shift alt keycode 36 = U+0131 # dotless i
shift alt keycode 37 = U+02C6 # circumflex accent
-shift alt keycode 38 = U+FB02 # fl ligature
+#shift alt keycode 38 = U+FB02 # fl ligature
shift alt keycode 39 = U+0152 # OE
shift alt keycode 40 = AE
shift alt keycode 41 = U+201C # left double quote
@@ -210,7 +210,7 @@ control shift alt keycode 2 = U+00AC
control shift alt keycode 3 = U+201D # right double quote
control shift alt keycode 4 = numbersign
control shift alt keycode 5 = sterling
-control shift alt keycode 6 = U+FB01 # fi ligature
+#control shift alt keycode 6 = U+FB01 # fi ligature
control shift alt keycode 7 = circumflex
control shift alt keycode 8 = backslash
control shift alt keycode 9 = U+02DC # small tilde
@@ -229,7 +229,7 @@ control shift alt keycode 23 = Ucircumf
control shift alt keycode 24 = Ooblique
control shift alt keycode 25 = U+220F # n-ary product
control shift alt keycode 26 = degree
-control shift alt keycode 27 = U+F8FF # apple logo
+#control shift alt keycode 27 = U+F8FF # apple logo
control shift alt keycode 30 = Aring
control shift alt keycode 31 = Iacute
control shift alt keycode 32 = U+2122 # trade mark
@@ -238,7 +238,7 @@ control shift alt keycode 34 = Igrave
control shift alt keycode 35 = Oacute
control shift alt keycode 36 = U+0131 # dotless i
control shift alt keycode 37 = U+02C6 # circumflex accent
-control shift alt keycode 38 = U+FB02 # fl ligature
+#control shift alt keycode 38 = U+FB02 # fl ligature
control shift alt keycode 39 = U+0152 # OE
control shift alt keycode 40 = AE
control shift alt keycode 41 = U+201C # left double quote

View File

@ -1,682 +1,3 @@
-------------------------------------------------------------------
Thu Sep 17 22:43:16 UTC 2020 - Stanislav Brabec <sbrabec@suse.com>
- Make kbdsettings working in both bash and dash (boo#1175040).
-------------------------------------------------------------------
Thu Sep 17 14:47:04 UTC 2020 - Stanislav Brabec <sbrabec@suse.com>
- 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 <jslaby@suse.com>
- add libkeymap-Fix-mk_mapname-for-the-plain-map.patch
-------------------------------------------------------------------
Tue Apr 21 13:08:11 UTC 2020 - Ludwig Nussel <lnussel@suse.de>
- 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 - sbrabec@suse.com
- 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 <stefan.bruens@rwth-aachen.de>
- 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 - kukuk@suse.de
- Move pam.d/vlock to /usr/etc
-------------------------------------------------------------------
Thu Sep 19 09:05:55 UTC 2019 - Martin Vidner <mvidner@suse.com>
- Allow YaST to select Iranian (Persian, Farsi) keyboard layout
(bsc#1092920)
-------------------------------------------------------------------
Thu Aug 2 08:06:01 UTC 2018 - schwab@suse.de
- fbtest.c: include <sys/sysmacros.h> for major/minor
-------------------------------------------------------------------
Thu May 24 16:14:57 CEST 2018 - kukuk@suse.de
- Use %license instead of %doc [bsc#1082318]
-------------------------------------------------------------------
Thu Apr 5 17:32:03 CEST 2018 - sbrabec@suse.com
- Disable characters >=U+F000. These do not work properly
(bsc#1085432#c15, kbd-unicode-fxxx.patch).
-------------------------------------------------------------------
Thu Mar 15 17:04:06 CET 2018 - sbrabec@suse.com
- 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 - sbrabec@suse.com
- 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 - fbui@suse.com
- 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 - rbrown@suse.com
- Replace references to /var/adm/fillup-templates with new
%_fillupdir macro (boo#1069468)
-------------------------------------------------------------------
Fri Oct 13 14:53:41 CEST 2017 - sbrabec@suse.com
- Add vlock.pamd PAM file (bsc#1056449#c8).
- Clean spec file.
-------------------------------------------------------------------
Fri Sep 22 15:51:51 CEST 2017 - sbrabec@suse.com
- 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 - bwiedemann@suse.com
- call gzip -n to make build fully reproducible
-------------------------------------------------------------------
Thu Mar 23 23:23:20 UTC 2017 - zaitor@opensuse.org
- 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 - zaitor@opensuse.org
- Drop kdb-legacy Requires: No longer needed, and was always meant
to be temporary.
-------------------------------------------------------------------
Tue Jul 12 12:52:31 UTC 2016 - tchvatal@suse.com
- 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 - marceloatie@gmail.com
- 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 - tiwai@suse.de
- 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 - opensuse.lietuviu.kalba@gmail.com
- 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 - sndirsch@suse.com
- 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 - sndirsch@suse.com
- 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 - sndirsch@suse.com
- Include xkb layouts from xkeyboard-config converted to console
keymaps, (FATE#318426)
* Rename Finnish xkb converted layout
* Add xkb and legacy keymaps subdirs to loadkyes search path
(kbd-1.15.5-loadkeys-search-path.patch), remove symlinks,
Don't convert layouts that can't input ASCII,
* Original keymaps moved to legacy dir, created symlinks to xkb
keymaps
-------------------------------------------------------------------
Thu Apr 2 18:36:23 UTC 2015 - crrodriguez@opensuse.org
- For the previos change to wok, we need to buildrequire
suse-module-tools to get the initrd rpm macros.
-------------------------------------------------------------------
Sat Mar 28 21:15:08 UTC 2015 - crrodriguez@opensuse.org
- Regenerate the initrd if this package changes as it is
included there for early console setup.
-------------------------------------------------------------------
Tue Feb 10 15:45:09 UTC 2015 - tchvatal@suse.com
- Convert changelog to utf8
-------------------------------------------------------------------
Sat Nov 29 22:14:00 UTC 2014 - Led <ledest@gmail.com>
- fix bashisms in scripts
- add patches:
* kbd-2.0.2-fix-bashisms.patch
- update patches:
* kbd-1.15.2-unicode_scripts.patch
-------------------------------------------------------------------
Thu Sep 25 10:33:55 UTC 2014 - pgajdos@suse.com
- euro{,1,2}.map now produces correct unicode for Euro sign
[bnc#360993]
- added patches:
* kbd-2.0.2-euro-unicode.patch
-------------------------------------------------------------------
Thu Sep 18 10:54:51 UTC 2014 - pgajdos@suse.com
- port dumpkeys-C-opt.patch
- modified patches:
* kbd-1.15.2-dumpkeys-C-opt.patch
-------------------------------------------------------------------
Fri Sep 12 09:52:30 UTC 2014 - pgajdos@suse.com
- kbd-2.0.2-doshell-reference.patch:
drop doshell reference from openvt.1 man page [bnc#675317]
-------------------------------------------------------------------
Thu Sep 4 17:51:54 UTC 2014 - jw@owncloud.com
- added /usr/bin/kbd, a simple userfriedly keymap switcher.
From https://github.com/jnweiger/kbd-wrapper
-------------------------------------------------------------------
Fri Aug 22 09:50:15 UTC 2014 - pgajdos@suse.com
- drop kbd-1.15.2-chvt-userwait.patch [bnc#830805] (internal)
(--userwait seems to not be used anywhere)
-------------------------------------------------------------------
Fri Aug 22 09:25:51 UTC 2014 - pgajdos@suse.com
- remove testutf8 stub (2009: testutf8 will be soon removed completely,
it's kept only not to break /etc/profile currently)
-------------------------------------------------------------------
Fri Aug 22 06:51:23 UTC 2014 - pgajdos@suse.com
- Update to version 2.0.2:
libkeymap: fix kmap on big-endian machines
Add functions to get the total number of elements
Add functions to convert ksyms
eurlatgr - new Linux console font
Hide syms array
Add information about the total number of elements
Add function to obtain items from the diacritical table
Change the API for working with the diacritical table
Change API for working with list of functions
Add functions to check diacr/func existance
Add pancyrillic font
po: Update translations (from translationproject.org)
vlock: implement PAM account and password management
vlock: rename ERROR_TIMEOUT macro to LONG_DELAY
vlock: introduce short delays after non-fatal PAM errors
Added Latvian keymap
(changelog taken from
http://lists.altlinux.org/pipermail/kbd/2014-July/000476.html)
- add kbd-2.0.2-comment-typo-qwerty.patch [bnc#825385]
-------------------------------------------------------------------
Wed Aug 20 16:47:44 UTC 2014 - pgajdos@suse.com
- SuSE -> SUSE [bnc#889035]
-------------------------------------------------------------------
Thu Jul 24 20:31:47 UTC 2014 - dimstar@opensuse.org
- No longer recommend fbset: the package does no longer exist in
openSUSE since late 2013.
-------------------------------------------------------------------
Sun Nov 3 17:51:09 UTC 2013 - dap.darkness@gmail.com
- Update to version 2.0.1:
* Disable arch-specific tests.
* Fix regression in processing alt_is_meta keyword.
* Rename Bepo keymaps:
dvorak-fr-bepo.map -> fr-bepo-latin9.map
dvorak-fr-bepo-utf8.map -> fr-bepo.map.
- Deleted kbd-1.15.2-dumpkeys-ppc.patch as obsolete:
http://lists.opensuse.org/opensuse-factory/2013-08/msg00347.html
- gcc 4.6+ became required to prevent compilling error:
"expected declaration specifiers or '...' before 'va_list'".
-------------------------------------------------------------------
Mon Aug 19 18:27:19 UTC 2013 - dap.darkness@gmail.com
- Update to version 2.0.0:
* Add bepo keyboard layout;
* Add libkeymap;
* The loadkeys and dumpkeys always use the libkeymap.
- Updated patches because of docs moved:
* kbd-1.15.2-chvt-userwait.patch
* kbd-1.15.2-docu-X11R6-xorg.patch
- Disabled patches because of dumpkeys rewritten:
* kbd-1.15.2-dumpkeys-C-opt.patch
* kbd-1.15.2-dumpkeys-ppc.patch
-------------------------------------------------------------------
Thu Apr 4 15:57:45 UTC 2013 - meissner@suse.com
- disable vlock build, which is in vlock package.
-------------------------------------------------------------------
Thu Apr 4 01:34:32 UTC 2013 - crrodriguez@opensuse.org
- 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 - sbrabec@suse.cz
- sysconfig.keyboard: Updated description of KBD_NUMLOCK
(bnc#746595#c74).
-------------------------------------------------------------------
Wed Dec 5 20:45:40 UTC 2012 - dap.darkness@gmail.com
- 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 - dap.darkness@gmail.com
- 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 - rschweikert@suse.com
- Place binaries into /usr tree (UsrMerge project)
-------------------------------------------------------------------
Tue Dec 20 17:35:35 CET 2011 - sbrabec@suse.cz
- Enable resizecons on x86_64 (bnc#737631).
-------------------------------------------------------------------
Wed Nov 30 14:24:18 UTC 2011 - coolo@suse.com
- add automake as buildrequire to avoid implicit dependency
-------------------------------------------------------------------
Wed Oct 5 13:37:08 UTC 2011 - lnussel@suse.de
- fix loadkeys -C option (bnc#720486)
-------------------------------------------------------------------
Fri Sep 30 15:28:41 UTC 2011 - uli@suse.com
- cross-build fix: use %__cc, %configure macros
- configure: explicitly set bindir
-------------------------------------------------------------------
Wed Sep 14 15:58:43 CEST 2011 - sbrabec@suse.cz
- 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 - werner@suse.de
- 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 - werner@suse.de
- Tag boot script as interactive as systemd uses it
-------------------------------------------------------------------
Wed Jan 12 14:22:09 UTC 2011 - lnussel@suse.de
- 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 - anicka@suse.cz
- build optional binaries (bnc#637453)
-------------------------------------------------------------------
Mon Sep 6 17:27:40 CEST 2010 - anicka@suse.cz
- 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 - sndirsch@suse.de
- added dummy keyboard mappings for chinese/taiwanese (bnc #603950)
-------------------------------------------------------------------
Mon Mar 29 17:31:11 CEST 2010 - anicka@suse.cz
- add lt.std map (bnc#569554)
-------------------------------------------------------------------
Fri Feb 19 14:39:29 CET 2010 - anicka@suse.cz
- respect KBD_TTY="" set in sysconfig (bnc#405658)
-------------------------------------------------------------------
Tue Feb 16 11:14:18 PST 2010 - vuntz@opensuse.org
- 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 - jengelh@medozas.de
- remove inclusion of kbio.h on SPARC, this has been removed
in the kernel
-------------------------------------------------------------------
Sun Jan 10 01:45:25 UTC 2010 - jw@novell.com
- 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 - mmarek@suse.cz
- do not include '.' in the repacked tarball (bnc#544975).
-------------------------------------------------------------------
Thu Oct 1 15:09:51 CEST 2009 - mmarek@suse.cz
- Add real Tajik keymap.
- remove slovak keymaps from suse-add.tar.bz2 that are already
upstream.
-------------------------------------------------------------------
Fri Sep 4 15:22:07 CEST 2009 - mmarek@suse.cz
- 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 - mmarek@suse.cz
- 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.
-------------------------------------------------------------------
Tue May 19 14:40:11 CEST 2009 - mmarek@suse.cz
- do not load any usb drivers, udev takes care of this (bnc#482316).
-------------------------------------------------------------------
Mon Nov 10 12:10:09 CET 2008 - mmarek@suse.cz
- rename Spanish keymap for olpc to es-olpc to avoid ambiguity
(bnc#435121)
-------------------------------------------------------------------
Tue Nov 4 13:06:35 CET 2008 - sndirsch@suse.de
- added arabic console keyboard link ( arabic -> us ) (bnc #441432)
-------------------------------------------------------------------
Tue Oct 14 10:50:34 CEST 2008 - mmarek@suse.cz
- fix case when multiple keymaps are found (bnc#259694)
- allow to specify a path such as 'i386/es.map.gz' in KEYTABLE
-------------------------------------------------------------------
Mon Sep 29 16:47:35 CEST 2008 - mmarek@suse.cz
- fixed lat2a-16.psfu (bnc#340579)
-------------------------------------------------------------------
Tue Sep 9 14:09:26 CEST 2008 - mmarek@suse.cz
- really use $RPM_OPT_FLAGS
-------------------------------------------------------------------
Thu Sep 4 17:48:50 CEST 2008 - mmarek@suse.cz
- modified rckbd according to suggestions by Jiri Bohac
(bnc#367801#c17)
- first call setfont and then loadkeys, to make dead characters
work
- don't call dumpkeys | loadkeys --unicode
-------------------------------------------------------------------
Wed Aug 20 19:38:44 CEST 2008 - mmarek@suse.cz
- updated to 1.14.1
* Programs
- unicode_{start,stop}: To run loadkeys is allowed only to
root.
- mapscrn: Add '.acm' suffix for compatibility with
console-tools
- fix findfile so that it does not find directories
- kbdrate: fix for sparc
* Keymaps:
- Add Norwegian dvorak keymap.
- Add turkish F (trf) keyboard map.
- Fix turkish Q (trq) keyboard map (Ozgur Murat Homurlu).
- Move qwerty/cz.map -> qwertz/cz.map.
- include/*euro.map: Change 'currency' to 'euro' symbol.
- Add OLPC (One Laptop Per Child) keymaps
- Add more romanian keymaps (Vitezslav Crhonek)
- Add another ukrainian keymap
- Add Belarusian (Belarus) keymaps
- Add Kazakh keymap
- Add Kyrgyz keymap
- Add Bashkir (Russia) keymap
- Add Tatar keymaps
- Add more russian keymaps
* Fonts:
- Add unicode fonts (UniCyrExt_8x16.psf, UniCyr_8x14.psf,
UniCyr_8x16.psf, UniCyr_8x8.psf)
- Add Lat2-Terminus16 font
- Fix sun12x22 font unicode mapping table (Vitezslav Crhonek)
* translation updates
- dropped upstreamed patches:
kbd-1.12-Meta-Tab.diff
kbd-1.12-be-nice-to-kdm.diff
kbd-1.12-cz-us-qwertz.diff
kbd-1.12-dumpkeys-full.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-nohang-kbdrate2.diff
kbd-1.12-nounicode-nontty.diff
kbd-1.12-setfont-fpclose.diff
kbd-1.12-showconsolefont-info.diff
kbd-1.12-swiss.diff
kbd-1.12.diff
piofont_debug.diff
- dropped bnc147581_jp106.diff because it was not needed
(bnc#147581)
-------------------------------------------------------------------
Mon Aug 18 18:08:29 CEST 2008 - mrueckert@suse.de
- remove outdated options in the fillup_and_insserv call
-------------------------------------------------------------------
Mon Aug 18 11:21:24 CEST 2008 - werner@suse.de
- Fix LSB header of kbd init script
-------------------------------------------------------------------
Wed Jun 4 18:53:46 CEST 2008 - werner@suse.de
- Add "-C" option also to dumpkeys to make kbd init script work on
/dev/console and /dev/tty even within e.g. xterm (bnc#337238)
-------------------------------------------------------------------
Mon May 19 12:39:16 CEST 2008 - jw@suse.de
- added ru1_win-utf.map fixing bnc#337238
-------------------------------------------------------------------
Wed May 7 18:34:11 CEST 2008 - werner@suse.de
- Add description of option -i of showconsolefont (bnc#385200)
- Make showconsolefont option -i work together with option -C
- Add fbtest program and fbtest manual page
-------------------------------------------------------------------
Mon May 5 17:21:42 CEST 2008 - jw@suse.de
- added fix for bnc#164378 from werner.
-------------------------------------------------------------------
Fri Apr 25 12:11:45 CEST 2008 - jw@suse.de
- experimental patch for bnc#147581 added.
-------------------------------------------------------------------
Fri Mar 21 18:47:50 CET 2008 - sndirsch@suse.de
- kbd.init: MAY_TTY should be tty6 (Bug #302010)
-------------------------------------------------------------------
Thu Feb 21 21:19:52 CET 2008 - crrodriguez@suse.de
- use find_lang macro
-------------------------------------------------------------------
Mon Dec 3 20:49:23 CET 2007 - jw@suse.de
- fixed bugzilla #153179 by adding new versions of sk-qwertz.map
and sk-qwerty.map from lmichnovic to suse-add.tar.bz2
- Thus partially obsoleting kbd-1.12-prtscr_no_sigquit.diff and
kbd-1.12-Meta-Tab.diff
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Aug 21 19:53:59 CEST 2007 - jw@suse.de Tue Aug 21 19:53:59 CEST 2007 - jw@suse.de
@ -1566,7 +887,7 @@ Mon Dec 4 23:43:08 MET 2000 - garloff@suse.de
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Dec 4 17:29:56 MET 2000 - garloff@suse.de Mon Dec 4 17:29:56 MET 2000 - garloff@suse.de
- Add de_CH ("schwyzerdütsch") keymap. - Add de_CH ("schwyzerdütsch") keymap.
- Initialize consoles 1-24 (instead of 1-6) with CONSOLE_MAGIC - Initialize consoles 1-24 (instead of 1-6) with CONSOLE_MAGIC
(Bugzilla #4468) (Bugzilla #4468)
@ -1758,7 +1079,7 @@ Sun Apr 11 13:55:06 MET 1999 - ml@suse.de
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Apr 6 20:55:06 MET 1999 - ml@suse.de Tue Apr 6 20:55:06 MET 1999 - ml@suse.de
- added a patch harald könig for us.map - added a patch harald könig for us.map
------------------------------------------------------------------- -------------------------------------------------------------------
Sun Apr 5 20:55:06 MET 1999 - ml@suse.de Sun Apr 5 20:55:06 MET 1999 - ml@suse.de

29
kbd.fillup Normal file
View File

@ -0,0 +1,29 @@
#
# 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"

29
kbd.fillup.nonpc Normal file
View File

@ -0,0 +1,29 @@
#
# 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"

470
kbd.init Normal file
View File

@ -0,0 +1,470 @@
#! /bin/sh
# Copyright (c) 1995-2005 SUSE LINUX Products AG, Nuernberg, Germany.
#
# Author: Burchard Steinbild
# Werner Fink <werner@suse.de>
#
# 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

1151
kbd.spec

File diff suppressed because it is too large Load Diff

View File

@ -1,51 +0,0 @@
#! /bin/sh
. /etc/sysconfig/keyboard
[ $KBD_DELAY ] && /usr/bin/kbdrate -s -d $KBD_DELAY
[ $KBD_RATE ] && /usr/bin/kbdrate -s -r $KBD_RATE
for i in NUM SCR CAPS; do
conf=$(eval echo KBD_${i}LOCK)
eval confval=\"\$$conf\"
[ -z "$confval" ] && continue
param=$(echo $i | tr A-Z a-z | sed 's/scr/scroll/')
for tty in ${KBD_TTY:-tty1 tty2 tty3 tty4 tty5 tty6}; do
case "$confval" in
yes)
if [ $param = "num" ]; then
touch /run/numlock-on
fi
/usr/bin/setleds -D +$param < /dev/$tty
;;
no)
if [ $param = "num" ]; then
rm -f /run/numlock-on
fi
/usr/bin/setleds -D -$param < /dev/$tty
;;
bios)
bios=$(/usr/lib/kbd/numlockbios 2>/dev/null)
if [ $param = "num" ]; then
if [ "$bios" = "on" ]; then
touch /run/numlock-on
/usr/bin/setleds -D +$param < /dev/$tty
elif [ "$bios" = "off" -o "$bios" = "unknown" ]; then
rm -f /run/numlock-on
/usr/bin/setleds -D -$param < /dev/$tty
fi
else
echo "Value $confval invalid for $conf"
fi
;;
*)
echo "error: unknown value $confval in $conf"
;;
esac
done
done
if [ "$KBD_DISABLE_CAPS_LOCK" = "yes" ]; then
/usr/bin/dumpkeys | sed 's/ *58 *= *Caps_Lock/ 58 = Control/' | /usr/bin/loadkeys -q -
fi

View File

@ -1,42 +0,0 @@
--- kbdsettings
+++ kbdsettings
@@ -24,20 +24,6 @@
fi
/usr/bin/setleds -D -$param < /dev/$tty
;;
- bios)
- bios=$(/usr/lib/kbd/numlockbios 2>/dev/null)
- if [ $param = "num" ]; then
- if [ "$bios" = "on" ]; then
- touch /run/numlock-on
- /usr/bin/setleds -D +$param < /dev/$tty
- elif [ "$bios" = "off" -o "$bios" = "unknown" ]; then
- rm -f /run/numlock-on
- /usr/bin/setleds -D -$param < /dev/$tty
- fi
- else
- echo "Value ${!conf} invalid for $conf"
- fi
- ;;
*)
echo "error: unknown value ${!conf} in $conf"
;;
--- sysconfig.keyboard
+++ sysconfig.keyboard
@@ -15,12 +15,12 @@
# Keyboard repeat rate (2.0 - 30.0)
KBD_RATE=""
-## Type: list(bios,yes,no)
-## Default: bios
+## Type: yesno
+## Default: no
#
-# NumLock on? ("yes" or "no" or "bios" for BIOS setting)
+# NumLock on? ("yes" or "no")
# This setting may interfere with GNOME /org/gnome/settings-daemon/peripherals/keyboard/remember-numlock-state DConf key.
-KBD_NUMLOCK="bios"
+KBD_NUMLOCK="no"
## Type: yesno
## Default: no

View File

@ -1,14 +0,0 @@
[Unit]
Description=Apply settings from /etc/sysconfig/keyboard
After=basic.target
After=systemd-vconsole-setup.service
PartOf=systemd-vconsole-setup.service
ConditionPathExists=/dev/tty0
[Service]
Type=oneshot
ExecStart=/usr/sbin/kbdsettings
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

View File

@ -1,52 +0,0 @@
From: Alexey Gladkov <gladkov.alexey@gmail.com>
Date: Sun, 23 Feb 2020 18:24:59 +0100
Subject: libkeymap: Fix mk_mapname for the plain map
Patch-mainline: 2.3
Git-commit: 88ae58fe8a223d11307accc36cc293133a18e7ac
mk_mapname did not correctly return "plain" for the plain map (no modifier set)
if it had already been called, as it did not correctly reset the static buffer
that it uses for the map name. When mk_mapname is called for the first time
from the first loop in lk_dump_ctable, all is fine, since buf has not been used
yet and it is initialised to 0. However, when it is called again for the plain
map from the second loop in lk_dump_ctable, buf already contains a value (left
over from the last iteration in the first loop), and then strcat appends
"plain" to that value instead of overwriting it, resulting in a bogus value.
Reported-by: Javier Pello <javier.pello@urjc.es>
Signed-off-by: Alexey Gladkov <gladkov.alexey@gmail.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
src/libkeymap/dump.c | 2 +-
tests/data/dumpkeys-mktable/defkeymap.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/libkeymap/dump.c b/src/libkeymap/dump.c
index 8531b5aa3d91..d67eefaada54 100644
--- a/src/libkeymap/dump.c
+++ b/src/libkeymap/dump.c
@@ -101,7 +101,7 @@ mk_mapname(char modifier)
int i;
if (!modifier) {
- strcat(buf, "plain");
+ strcpy(buf, "plain");
return buf;
}
buf[0] = 0;
diff --git a/tests/data/dumpkeys-mktable/defkeymap.c b/tests/data/dumpkeys-mktable/defkeymap.c
index e831316a1ff3..5d9a3aaeff8c 100644
--- a/tests/data/dumpkeys-mktable/defkeymap.c
+++ b/tests/data/dumpkeys-mktable/defkeymap.c
@@ -565,7 +565,7 @@ static unsigned short shift_altgr_ctrl_alt_map[NR_KEYS] = {
};
ushort *key_maps[MAX_NR_KEYMAPS] = {
- shift_altgr_ctrl_altplain_map, shift_map, altgr_map, shift_altgr_map,
+ plain_map, shift_map, altgr_map, shift_altgr_map,
ctrl_map, shift_ctrl_map, altgr_ctrl_map, shift_altgr_ctrl_map,
alt_map, shift_alt_map, altgr_alt_map, shift_altgr_alt_map,
ctrl_alt_map, shift_ctrl_alt_map, altgr_ctrl_alt_map, shift_altgr_ctrl_alt_map, 0
--
2.28.0

View File

@ -1,52 +0,0 @@
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
#define BIOS_DATA_AREA 0x400
#define BDA_KEYBOARD_STATUS_FLAGS_4 0x97
#define BDA_KSF4_NUMLOCK_MASK 0x02
int fdmem;
char c;
errno=0;
fdmem = open("/dev/mem", O_RDONLY);
if (fdmem < 0) {
fprintf(stderr, "Couldn't open /dev/mem; %s\n", strerror(errno));
goto finish;
}
if (lseek(fdmem, BIOS_DATA_AREA + BDA_KEYBOARD_STATUS_FLAGS_4, SEEK_SET) == (off_t) -1) {
fprintf(stderr, "Failed to seek /dev/mem: %s\n", strerror(errno));
goto finish;
}
if (read (fdmem, &c, sizeof(char)) == -1) {
fprintf(stderr, "Failed to read /dev/mem: %s\n", strerror(errno));
goto finish;
}
if (c & BDA_KSF4_NUMLOCK_MASK)
printf("on\n");
else
printf("off\n");
finish:
close(fdmem);
if (errno)
{
printf("unknown\n");
exit(EXIT_FAILURE);
}
return 0;
}

18
piofont_debug.diff Normal file
View File

@ -0,0 +1,18 @@
--- 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;
}

0
ready Normal file
View File

View File

@ -1,4 +1,4 @@
#!/bin/sh #! /bin/sh
# #
# repackage kbd source tar ball, # repackage kbd source tar ball,
# to remove fonts that forbid commercial distribution. # to remove fonts that forbid commercial distribution.
@ -6,21 +6,30 @@
# 2005-07-11, jw@suse.de # 2005-07-11, jw@suse.de
tmpdir=`mktemp -d` 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 in=$1
if ! tar xf "$in" -C $tmpdir; then
rm -rf $tmpdir case "$in" in
exit 1 *.tar.gz)
fi 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... echo removing files...
find $tmpdir -iname \*agafari\* | tee /dev/tty | xargs rm 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 rm -rf $tmpdir

BIN
suse-add.tar.bz2 (Stored with Git LFS)

Binary file not shown.

View File

@ -1,9 +1,8 @@
## Path: Hardware/Console ## Path: Hardware/Console
## Description: Text console settings (see also Hardware/Keyboard) ## Description: Text console settings (see also Hardware/Keyboard)
#
## Type: string ## Type: string
## Default: "" ## Default: ""
## ServiceRestart: kbd
# #
# Console settings. # Console settings.
# Note: The KBD_TTY setting from Hardware/Keyboard (sysconfig/keyboard) # Note: The KBD_TTY setting from Hardware/Keyboard (sysconfig/keyboard)
@ -47,3 +46,4 @@ CONSOLE_SCREENMAP=""
# Normally not needed (automatically handled by setfont). # Normally not needed (automatically handled by setfont).
# #
CONSOLE_MAGIC="" CONSOLE_MAGIC=""

View File

@ -1,7 +1,16 @@
## Path: Hardware/Keyboard ## Path: Hardware/Keyboard
## Description: Keyboard settings for the text console ## Description: Keyboard settings
## ServiceRestart: kbdsettings ## 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 ## Type: integer
## Default: ## Default:
@ -18,8 +27,7 @@ KBD_RATE=""
## Type: list(bios,yes,no) ## Type: list(bios,yes,no)
## Default: bios ## Default: bios
# #
# NumLock on? ("yes" or "no" or "bios" for BIOS setting) # NumLock on? ("yes" or "no" or empty or "bios" for BIOS setting)
# This setting may interfere with GNOME /org/gnome/settings-daemon/peripherals/keyboard/remember-numlock-state DConf key.
KBD_NUMLOCK="bios" KBD_NUMLOCK="bios"
## Type: yesno ## Type: yesno
@ -46,11 +54,11 @@ KBD_CAPSLOCK="no"
KBD_DISABLE_CAPS_LOCK="no" KBD_DISABLE_CAPS_LOCK="no"
## Type: string ## Type: string
## Default: ## Default: "tty1 tty2 tty3 tty4 tty5 tty6"
# #
# ttys for the above settings # ttys for the above settings
# Example: "tty1 tty2" # Example: "tty1 tty2"
# "" for tty's 1-6 # "" for all tty's
# #
KBD_TTY="" KBD_TTY="tty1 tty2 tty3 tty4 tty5 tty6"

96
testutf8.c Normal file
View File

@ -0,0 +1,96 @@
/*
* Copyright Gerd Knorr <kraxel@suse.de>, 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);
}
}

View File

@ -1,5 +0,0 @@
#%PAM-1.0
auth include common-auth
account include common-account
password include common-password
session include common-session

View File

@ -1,231 +0,0 @@
#!/usr/bin/perl
# converts the <rules>.xml file to the old format <rules>.lst file
#
# Usage:
#
# perl xml2lst.pl < filename.xml > filename.lst
#
# author Ivan Pascal
# modified by Vitezslav Crhonek
$doc = new_document( 0, '');
parse('', $doc);
($reg) = node_by_name($doc, '/xkbConfigRegistry');
@models = node_by_name($reg, 'modelList/model/configItem');
@layouts = node_by_name($reg, 'layoutList/layout/configItem');
@options = node_by_name($reg, 'optionList/group/configItem');
for $i (@layouts) {
($name) = node_by_name($i, 'name');
@variants = node_by_name($i, '../variantList/variant/configItem');
for $v (@variants) {
($variant) = node_by_name($v, 'name');
printf("%s %s\n", text_child($name), text_child($variant));
}
}
sub with_attribute {
local ($nodelist, $attrexpr) = @_;
local ($attr, $value) = split (/=/, $attrexpr);
local ($node, $attrvalue);
if (defined $value && $value ne '') {
$value =~ s/"//g;
foreach $node (@{$nodelist}) {
$attrvalue = node_attribute($node, $attr);
if (defined $attrvalue && $attrvalue eq $value) {
return $node;
}
}
} else {
foreach $node (@{$nodelist}) {
if (! defined node_attribute($node, $attr)) {
return $node;
}
}
}
undef;
}
# Subroutines
sub parse {
local $intag = 0;
my (@node_stack, $parent);
$parent = @_[1];
local ($tag, $text);
while (<>) {
chomp;
@str = split /([<>])/;
shift @str if ($str[0] eq '' || $str[0] =~ /^[ \t]*$/);
while (scalar @str) {
$token = shift @str;
if ($token eq '<') {
$intag = 1;
if (defined $text) {
add_text_node($parent, $text);
undef $text;
}
} elsif ($token eq '>') {
$intag = 0;
if ($tag =~ /^\/(.*)/) { # close tag
$parent = pop @node_stack;
} elsif ($tag =~ /^([^\/]*)\/$/) {
empty_tag($parent, $1);
} else {
if (defined ($node = open_tag($parent, $tag))) {
push @node_stack, $parent;
$parent = $node;
}
}
undef $tag;
} else {
if ($intag == 1) {
if (defined $tag) {
$tag .= ' '. $token;
} else {
$tag = $token;
}
} else {
if (defined $text) {
$text .= "\n" . $token;
} else {
$text = $token;
}
}
}
}
}
}
sub new_document {
$doc = new_node( 0, '', 'DOCUMENT');
$doc->{CHILDREN} = [];
return $doc;
}
sub new_node {
local ($parent_node, $tag, $type) = @_;
my %node;
$node{PARENT} = $parent_node;
$node{TYPE} = $type;
if ($type eq 'COMMENT' || $type eq 'TEXT') {
$node{TEXT} = $tag;
$node{NAME} = $type;
return \%node;
}
local ($tname, $attr) = split(' ', $tag, 2);
$node{NAME} = $tname;
if (defined $attr && $attr ne '') {
my %attr_table;
local @attr_list = split ( /"/, $attr);
local ($name, $value);
while (scalar @attr_list) {
$name = shift @attr_list;
$name =~ s/[ =]//g;
next if ($name eq '');
$value = shift @attr_list;
$attr_table{$name} =$value;
}
$node{ATTRIBUTES} = \%attr_table;
}
return \%node;
}
sub add_node {
local ($parent_node, $node) = @_;
push @{$parent_node->{CHILDREN}}, $node;
local $tname = $node->{NAME};
if (defined $parent_node->{$tname}) {
push @{$parent_node->{$tname}}, $node
} else {
$parent_node->{$tname} = [ $node ];
}
}
sub empty_tag {
local ($parent_node, $tag) = @_;
local $node = new_node($parent_node, $tag, 'EMPTY');
add_node($parent_node, $node);
}
sub open_tag {
local ($parent_node, $tag) = @_;
local $node;
if ($tag =~ /^\?.*/ || $tag =~ /^\!.*/) {
$node = new_node($parent_node, $tag, 'COMMENT');
add_node($parent_node, $node);
undef; return;
} else {
$node = new_node($parent_node, $tag, 'NODE');
$node->{CHILDREN} = [];
add_node($parent_node, $node);
return $node;
}
}
sub add_text_node {
local ($parent_node, $text) = @_;
local $node = new_node($parent_node, $text, 'TEXT');
add_node($parent_node, $node);
}
sub node_by_name {
local ($node, $name) = @_;
local ($tagname, $path) = split(/\//, $name, 2);
my @nodelist;
if ($tagname eq '') {
while ($node->{PARENT} != 0) {
$node = $node->{PARENT};
}
sublist_by_name($node, $path, \@nodelist);
} else {
sublist_by_name($node, $name, \@nodelist);
}
return @nodelist;
}
sub sublist_by_name {
local ($node, $name, $res) = @_;
local ($tagname, $path) = split(/\//, $name, 2);
if (! defined $path) {
push @{$res}, (@{$node->{$tagname}});
return;
}
if ($tagname eq '..' && $node->{PARENT} != 0) {
$node = $node->{PARENT};
sublist_by_name($node, $path, $res);
} else {
local $n;
for $n (@{$node->{$tagname}}) {
sublist_by_name($n, $path, $res);
}
}
}
sub node_attribute {
local $node = @_[0];
if (defined $node->{ATTRIBUTES}) {
return $node->{ATTRIBUTES}{@_[1]};
}
undef;
}
sub text_child {
local ($node) = @_;
local ($child) = node_by_name($node, 'TEXT');
return $child->{TEXT};
}