Initialize for kbd

This commit is contained in:
zyppe 2024-02-09 17:36:08 +08:00
commit c4ac1371e9
31 changed files with 3319 additions and 0 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
kbd-2.4.0-repack.tar.xz
kbd_fonts.tar.bz2
suse-add.tar.bz2

3
.kbd.metadata Normal file
View file

@ -0,0 +1,3 @@
12f69843fc36e8ddf53a9cea25ea91477fee12c9459c9d96282895cbc30e3abd kbd-2.4.0-repack.tar.xz
d4719be89c150313ff9c4c38d2e30ab824c108763f27e991c62dc3612ed743e1 kbd_fonts.tar.bz2
7c1af9f5becb17a474c5d1614662c60960365dc5184972c98ffc66d1e0c09f41 suse-add.tar.bz2

View file

@ -0,0 +1,36 @@
From 501efd7b873e1462da986f763398ea8d98df2767 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fvogt@suse.de>
Date: Fri, 14 Jan 2022 15:22:24 +0100
Subject: [PATCH] libkfont: Initialize kfont_context->options
kfont_init did not set the options member, so it had essentially random
content. This made setfont behave weirdly.
Switch to calloc for good measure to avoid issues like this.
Signed-off-by: Fabian Vogt <fvogt@suse.de>
---
src/libkfont/context.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/libkfont/context.c b/src/libkfont/context.c
index 9ce0975351be..d5a766606489 100644
--- a/src/libkfont/context.c
+++ b/src/libkfont/context.c
@@ -143,11 +143,12 @@ kfont_init(const char *prefix, struct kfont_context **ctx)
{
struct kfont_context *p;
- if (!(p = malloc(sizeof(*p))))
+ if (!(p = calloc(1, sizeof(*p))))
return -EX_OSERR;
p->progname = prefix;
p->verbose = 0;
+ p->options = 0;
p->log_fn = log_stderr;
p->mapdirpath = mapdirpath;
p->mapsuffixes = mapsuffixes;
--
2.34.0

42
README.SUSE Normal file
View file

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

102
convert-kbd-mac.sed Normal file
View file

@ -0,0 +1,102 @@
# vim: syntax=sed
s#keycode[[:blank:]]*122[[:blank:]]*=[[:blank:]]*#keycode 59 = #;t 1;
s#keycode[[:blank:]]*121[[:blank:]]*=[[:blank:]]*#keycode 109 = #;t 1;
s#keycode[[:blank:]]*120[[:blank:]]*=[[:blank:]]*#keycode 60 = #;t 1;
s#keycode[[:blank:]]*119[[:blank:]]*=[[:blank:]]*#keycode 107 = #;t 1;
s#keycode[[:blank:]]*118[[:blank:]]*=[[:blank:]]*#keycode 62 = #;t 1;
s#keycode[[:blank:]]*117[[:blank:]]*=[[:blank:]]*#keycode 111 = #;t 1;
s#keycode[[:blank:]]*116[[:blank:]]*=[[:blank:]]*#keycode 104 = #;t 1;
s#keycode[[:blank:]]*115[[:blank:]]*=[[:blank:]]*#keycode 102 = #;t 1;
s#keycode[[:blank:]]*114[[:blank:]]*=[[:blank:]]*#keycode 110 = #;t 1;
s#keycode[[:blank:]]*113[[:blank:]]*=[[:blank:]]*#keycode 101 = #;t 1;
s#keycode[[:blank:]]*111[[:blank:]]*=[[:blank:]]*#keycode 88 = #;t 1;
s#keycode[[:blank:]]*109[[:blank:]]*=[[:blank:]]*#keycode 68 = #;t 1;
s#keycode[[:blank:]]*107[[:blank:]]*=[[:blank:]]*#keycode 70 = #;t 1;
s#keycode[[:blank:]]*103[[:blank:]]*=[[:blank:]]*#keycode 87 = #;t 1;
s#keycode[[:blank:]]*101[[:blank:]]*=[[:blank:]]*#keycode 67 = #;t 1;
s#keycode[[:blank:]]*100[[:blank:]]*=[[:blank:]]*#keycode 66 = #;t 1;
s#keycode[[:blank:]]*99[[:blank:]]*=[[:blank:]]*#keycode 61 = #;t 1;
s#keycode[[:blank:]]*98[[:blank:]]*=[[:blank:]]*#keycode 65 = #;t 1;
s#keycode[[:blank:]]*97[[:blank:]]*=[[:blank:]]*#keycode 64 = #;t 1;
s#keycode[[:blank:]]*96[[:blank:]]*=[[:blank:]]*#keycode 63 = #;t 1;
s#keycode[[:blank:]]*92[[:blank:]]*=[[:blank:]]*#keycode 73 = #;t 1;
s#keycode[[:blank:]]*91[[:blank:]]*=[[:blank:]]*#keycode 72 = #;t 1;
s#keycode[[:blank:]]*89[[:blank:]]*=[[:blank:]]*#keycode 71 = #;t 1;
s#keycode[[:blank:]]*88[[:blank:]]*=[[:blank:]]*#keycode 77 = #;t 1;
s#keycode[[:blank:]]*87[[:blank:]]*=[[:blank:]]*#keycode 76 = #;t 1;
s#keycode[[:blank:]]*86[[:blank:]]*=[[:blank:]]*#keycode 75 = #;t 1;
s#keycode[[:blank:]]*85[[:blank:]]*=[[:blank:]]*#keycode 81 = #;t 1;
s#keycode[[:blank:]]*84[[:blank:]]*=[[:blank:]]*#keycode 80 = #;t 1;
s#keycode[[:blank:]]*83[[:blank:]]*=[[:blank:]]*#keycode 79 = #;t 1;
s#keycode[[:blank:]]*82[[:blank:]]*=[[:blank:]]*#keycode 82 = #;t 1;
s#keycode[[:blank:]]*81[[:blank:]]*=[[:blank:]]*#keycode 117 = #;t 1;
s#keycode[[:blank:]]*78[[:blank:]]*=[[:blank:]]*#keycode 74 = #;t 1;
s#keycode[[:blank:]]*76[[:blank:]]*=[[:blank:]]*#keycode 96 = #;t 1;
s#keycode[[:blank:]]*75[[:blank:]]*=[[:blank:]]*#keycode 98 = #;t 1;
s#keycode[[:blank:]]*71[[:blank:]]*=[[:blank:]]*#keycode 69 = #;t 1;
s#keycode[[:blank:]]*69[[:blank:]]*=[[:blank:]]*#keycode 78 = #;t 1;
s#keycode[[:blank:]]*67[[:blank:]]*=[[:blank:]]*#keycode 55 = #;t 1;
s#keycode[[:blank:]]*65[[:blank:]]*=[[:blank:]]*#keycode 83 = #;t 1;
s#keycode[[:blank:]]*62[[:blank:]]*=[[:blank:]]*#keycode 103 = #;t 1;
s#keycode[[:blank:]]*61[[:blank:]]*=[[:blank:]]*#keycode 108 = #;t 1;
s#keycode[[:blank:]]*60[[:blank:]]*=[[:blank:]]*#keycode 106 = #;t 1;
s#keycode[[:blank:]]*59[[:blank:]]*=[[:blank:]]*#keycode 105 = #;t 1;
s#keycode[[:blank:]]*58[[:blank:]]*=[[:blank:]]*#keycode 56 = #;t 1;
s#keycode[[:blank:]]*57[[:blank:]]*=[[:blank:]]*#keycode 58 = #;t 1;
s#keycode[[:blank:]]*56[[:blank:]]*=[[:blank:]]*#keycode 42 = #;t 1;
s#keycode[[:blank:]]*55[[:blank:]]*=[[:blank:]]*#keycode 125 = #;t 1;
s#keycode[[:blank:]]*54[[:blank:]]*=[[:blank:]]*#keycode 29 = #;t 1;
s#keycode[[:blank:]]*53[[:blank:]]*=[[:blank:]]*#keycode 1 = #;t 1;
s#keycode[[:blank:]]*51[[:blank:]]*=[[:blank:]]*#keycode 14 = #;t 1;
s#keycode[[:blank:]]*50[[:blank:]]*=[[:blank:]]*#keycode 41 = #;t 1;
s#keycode[[:blank:]]*49[[:blank:]]*=[[:blank:]]*#keycode 57 = #;t 1;
s#keycode[[:blank:]]*48[[:blank:]]*=[[:blank:]]*#keycode 15 = #;t 1;
s#keycode[[:blank:]]*47[[:blank:]]*=[[:blank:]]*#keycode 52 = #;t 1;
s#keycode[[:blank:]]*46[[:blank:]]*=[[:blank:]]*#keycode 50 = #;t 1;
s#keycode[[:blank:]]*45[[:blank:]]*=[[:blank:]]*#keycode 49 = #;t 1;
s#keycode[[:blank:]]*44[[:blank:]]*=[[:blank:]]*#keycode 53 = #;t 1;
s#keycode[[:blank:]]*43[[:blank:]]*=[[:blank:]]*#keycode 51 = #;t 1;
s#keycode[[:blank:]]*42[[:blank:]]*=[[:blank:]]*#keycode 43 = #;t 1;
s#keycode[[:blank:]]*41[[:blank:]]*=[[:blank:]]*#keycode 39 = #;t 1;
s#keycode[[:blank:]]*40[[:blank:]]*=[[:blank:]]*#keycode 37 = #;t 1;
s#keycode[[:blank:]]*39[[:blank:]]*=[[:blank:]]*#keycode 40 = #;t 1;
s#keycode[[:blank:]]*38[[:blank:]]*=[[:blank:]]*#keycode 36 = #;t 1;
s#keycode[[:blank:]]*37[[:blank:]]*=[[:blank:]]*#keycode 38 = #;t 1;
s#keycode[[:blank:]]*36[[:blank:]]*=[[:blank:]]*#keycode 28 = #;t 1;
s#keycode[[:blank:]]*35[[:blank:]]*=[[:blank:]]*#keycode 25 = #;t 1;
s#keycode[[:blank:]]*34[[:blank:]]*=[[:blank:]]*#keycode 23 = #;t 1;
s#keycode[[:blank:]]*33[[:blank:]]*=[[:blank:]]*#keycode 26 = #;t 1;
s#keycode[[:blank:]]*32[[:blank:]]*=[[:blank:]]*#keycode 22 = #;t 1;
s#keycode[[:blank:]]*31[[:blank:]]*=[[:blank:]]*#keycode 24 = #;t 1;
s#keycode[[:blank:]]*30[[:blank:]]*=[[:blank:]]*#keycode 27 = #;t 1;
s#keycode[[:blank:]]*29[[:blank:]]*=[[:blank:]]*#keycode 11 = #;t 1;
s#keycode[[:blank:]]*28[[:blank:]]*=[[:blank:]]*#keycode 9 = #;t 1;
s#keycode[[:blank:]]*27[[:blank:]]*=[[:blank:]]*#keycode 12 = #;t 1;
s#keycode[[:blank:]]*26[[:blank:]]*=[[:blank:]]*#keycode 8 = #;t 1;
s#keycode[[:blank:]]*25[[:blank:]]*=[[:blank:]]*#keycode 10 = #;t 1;
s#keycode[[:blank:]]*24[[:blank:]]*=[[:blank:]]*#keycode 13 = #;t 1;
s#keycode[[:blank:]]*23[[:blank:]]*=[[:blank:]]*#keycode 6 = #;t 1;
s#keycode[[:blank:]]*22[[:blank:]]*=[[:blank:]]*#keycode 7 = #;t 1;
s#keycode[[:blank:]]*21[[:blank:]]*=[[:blank:]]*#keycode 5 = #;t 1;
s#keycode[[:blank:]]*20[[:blank:]]*=[[:blank:]]*#keycode 4 = #;t 1;
s#keycode[[:blank:]]*19[[:blank:]]*=[[:blank:]]*#keycode 3 = #;t 1;
s#keycode[[:blank:]]*18[[:blank:]]*=[[:blank:]]*#keycode 2 = #;t 1;
s#keycode[[:blank:]]*17[[:blank:]]*=[[:blank:]]*#keycode 20 = #;t 1;
s#keycode[[:blank:]]*16[[:blank:]]*=[[:blank:]]*#keycode 21 = #;t 1;
s#keycode[[:blank:]]*15[[:blank:]]*=[[:blank:]]*#keycode 19 = #;t 1;
s#keycode[[:blank:]]*14[[:blank:]]*=[[:blank:]]*#keycode 18 = #;t 1;
s#keycode[[:blank:]]*13[[:blank:]]*=[[:blank:]]*#keycode 17 = #;t 1;
s#keycode[[:blank:]]*12[[:blank:]]*=[[:blank:]]*#keycode 16 = #;t 1;
s#keycode[[:blank:]]*11[[:blank:]]*=[[:blank:]]*#keycode 48 = #;t 1;
s#keycode[[:blank:]]*10[[:blank:]]*=[[:blank:]]*#keycode 86 = #;t 1;
s#keycode[[:blank:]]*9[[:blank:]]*=[[:blank:]]*#keycode 47 = #;t 1;
s#keycode[[:blank:]]*8[[:blank:]]*=[[:blank:]]*#keycode 46 = #;t 1;
s#keycode[[:blank:]]*7[[:blank:]]*=[[:blank:]]*#keycode 45 = #;t 1;
s#keycode[[:blank:]]*6[[:blank:]]*=[[:blank:]]*#keycode 44 = #;t 1;
s#keycode[[:blank:]]*5[[:blank:]]*=[[:blank:]]*#keycode 34 = #;t 1;
s#keycode[[:blank:]]*4[[:blank:]]*=[[:blank:]]*#keycode 35 = #;t 1;
s#keycode[[:blank:]]*3[[:blank:]]*=[[:blank:]]*#keycode 33 = #;t 1;
s#keycode[[:blank:]]*2[[:blank:]]*=[[:blank:]]*#keycode 32 = #;t 1;
s#keycode[[:blank:]]*1[[:blank:]]*=[[:blank:]]*#keycode 31 = #;t 1;
s#keycode[[:blank:]]*0[[:blank:]]*=[[:blank:]]*#keycode 30 = #;t 1;
:1;

61
cz-map.patch Normal file
View file

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

49
fbtest.8 Normal file
View file

@ -0,0 +1,49 @@
'\" -*- 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 Normal file
View file

@ -0,0 +1,112 @@
/*
* 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;
}

70
genmap4systemd.sh Normal file
View file

@ -0,0 +1,70 @@
#!/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

View file

@ -0,0 +1,33 @@
--- docs/doc/kbd.FAQ-15.html.orig 2012-02-27 13:27:11.000000000 +0300
+++ docs/doc/kbd.FAQ-15.html 2013-07-30 18:56:43.697000005 +0300
@@ -188,7 +188,7 @@
<P>XFree86 also supports Slow Keys, Repeat Keys, Bounce Keys and an
audible bell. <CODE>xkbcomp</CODE> can be used to generate a <CODE>.xkm</CODE> file
to enable these. The appropriate <CODE>xkbcomp</CODE> commands are listed in
-<CODE>/usr/X11R6/lib/X11/xkb/compat/accessx</CODE>.
+<CODE>/usr/{X11R6/lib,share}/X11/xkb/compat/accessx</CODE>.
Unfortunately, the exact process is still undocumented.
<P>
<HR>
--- docs/doc/kbd.FAQ.txt.orig 2012-02-27 13:27:11.000000000 +0300
+++ docs/doc/kbd.FAQ.txt 2013-07-30 18:57:41.150000005 +0300
@@ -1253,7 +1253,7 @@
1. The Linux keyboard driver mechanism, used in conjunction with
loadkeys.
2. The X mechanism - see X386keybd(1), later XFree86kbd(1). Under
- X11R6: edit /usr/X11R6/lib/X11/locale/iso8859-1/Compose.
+ X11R6: edit /usr/{X11R6/lib,/usr/share}/X11/locale/iso8859-1/Compose.
See also Andrew D. Balsa's comments at
http://wauug.erols.com/~balsa/linux/deadkeys/index.html.
--- docs/doc/kbd.FAQ-8.html.orig 2012-02-27 13:27:11.000000000 +0300
+++ docs/doc/kbd.FAQ-8.html 2013-07-30 18:58:23.978000004 +0300
@@ -154,7 +154,7 @@
<OL>
<LI>The Linux keyboard driver mechanism, used in conjunction with loadkeys.</LI>
<LI>The X mechanism - see X386keybd(1), later XFree86kbd(1).
-Under X11R6: edit <CODE>/usr/X11R6/lib/X11/locale/iso8859-1/Compose</CODE>.<P>See also Andrew D. Balsa's comments at
+Under X11R6: edit <CODE>/usr/{X11R6/lib,share}/X11/locale/iso8859-1/Compose</CODE>.<P>See also Andrew D. Balsa's comments at
<A HREF="http://wauug.erols.com/~balsa/linux/deadkeys/index.html">http://wauug.erols.com/~balsa/linux/deadkeys/index.html</A>.
</LI>
<LI>The emacs mechanism obtained by loading "iso-insert.el" or

View file

@ -0,0 +1,25 @@
Index: docs/man/man1/dumpkeys.1.in
===================================================================
--- docs/man/man1/dumpkeys.1.in.orig
+++ docs/man/man1/dumpkeys.1.in
@@ -6,6 +6,7 @@ dumpkeys \- dump keyboard translation ta
.B dumpkeys
[
.\".B \-1Vdfhiklnstv
+.RI [ \-C\ '<vc>' | \-\-console='<vc>' ]
.B \-h \-\-help \-i \-\-short\-info \-l \-s \-\-long\-info
.B \-n \-\-numeric \-f \-\-full\-table \-1 \-\-separate-lines
.BI \-S shape
@@ -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
.TP
.I @DATADIR@/keymaps

View file

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

@ -0,0 +1,10 @@
--- kbd-1.12/data/keymaps/i386/qwerty/sv-latin1.map.orig 2007-07-17 12:33:52.000000000 +0200
+++ kbd-1.12/data/keymaps/i386/qwerty/sv-latin1.map 2007-07-17 12:36:34.855389000 +0200
@@ -42,6 +42,7 @@
alt keycode 9 = Meta_eight
keycode 10 = nine parenright bracketright
alt keycode 10 = Meta_nine
+ control altgr keycode 10 = Control_bracketright
keycode 11 = zero equal braceright
alt keycode 11 = Meta_zero
keycode 12 = plus question backslash

View file

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

@ -0,0 +1,26 @@
Index: kbd-2.3.0/src/loadkeys.c
===================================================================
--- kbd-2.3.0.orig/src/loadkeys.c
+++ kbd-2.3.0/src/loadkeys.c
@@ -27,6 +27,8 @@
static const char *const dirpath1[] = {
"",
+ DATADIR "/" XKBKEYMAPDIR "/",
+ DATADIR "/" LEGACYKEYMAPDIR "/**",
DATADIR "/" KEYMAPDIR "/**",
KERNDIR "/",
NULL
Index: kbd-2.3.0/src/paths.h
===================================================================
--- kbd-2.3.0.orig/src/paths.h
+++ kbd-2.3.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

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

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

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

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

71
kbd-unicode-fxxx.patch Normal file
View file

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

1090
kbd.changes Normal file

File diff suppressed because it is too large Load diff

530
kbd.spec Normal file
View file

@ -0,0 +1,530 @@
#
# spec file for package kbd
#
# Copyright (c) 2022-2023 ZhuningOS
#
#Compat macro for new _fillupdir macro introduced in Nov 2017
%if ! %{defined _fillupdir}
%define _fillupdir /var/adm/fillup-templates
%endif
%define legacy_folders amiga,atari,i386,include,mac,ppc,sun
Name: kbd
Version: 2.4.0
Release: 150400.5.3.1
Summary: Keyboard and Font Utilities
# git: git://git.altlinux.org/people/legion/packages/kbd.git
License: GPL-2.0-or-later
Group: System/Console
URL: http://kbd-project.org/
# repack_kbd.sh on https://www.kernel.org/pub/linux/utils/kbd/kbd-%%{version}.tar.xz
Source: %{name}-%{version}-repack.tar.xz
Source1: kbd_fonts.tar.bz2
Source2: suse-add.tar.bz2
Source3: README.SUSE
Source4: vlock.pamd
Source8: sysconfig.console
Source9: sysconfig.keyboard
Source11: fbtest.c
Source12: fbtest.8
Source15: cz-map.patch
Source20: kbdsettings
Source21: kbdsettings.service
Source22: numlockbios.c
Source42: convert-kbd-mac.sed
Source43: repack_kbd.sh
Source44: xml2lst.pl
Source45: genmap4systemd.sh
Patch0: kbd-1.15.2-prtscr_no_sigquit.patch
# PATCH-FIX-UPSTREAM
Patch1: 0001-libkfont-Initialize-kfont_context-options.patch
Patch2: kbd-1.15.2-unicode_scripts.patch
Patch3: kbd-1.15.2-docu-X11R6-xorg.patch
Patch4: kbd-1.15.2-sv-latin1-keycode10.patch
Patch6: kbd-1.15.2-dumpkeys-C-opt.patch
Patch9: kbd-2.0.2-comment-typo-qwerty.patch
Patch10: kbd-2.0.2-doshell-reference.patch
Patch11: kbd-2.0.2-euro-unicode.patch
Patch12: kbd-2.0.2-fix-bashisms.patch
# Patch13: adds xkb and legacy keymaps subdirs to loadkyes search path
# (openSUSE FATE#318355, sle FATE#318426)
Patch13: kbd-1.15.5-loadkeys-search-path.patch
# PATCH-FEATURE-OPENSUSE kbdsettings-nox86.patch sbrabec@suse.cz -- Disable "bios" option for NumLock settings on non x86 platforms.
Patch14: kbdsettings-nox86.patch
# PATCH-FIX-SLE kbd-unicode-fxxx.patch sbrabec@suse.com bsc1085432 -- Do not cause error on UNICODE characters >= 0xF000 (e. g. ligature fi)
Patch15: kbd-unicode-fxxx.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bison
BuildRequires: check-devel
BuildRequires: console-setup
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: gcc >= 4.6
BuildRequires: libtool
BuildRequires: pam-devel
BuildRequires: pkgconfig
BuildRequires: suse-module-tools
BuildRequires: xkeyboard-config
BuildRequires: xz
# Temporarily require -legacy
Requires: %{name}-legacy = %{version}-%{release}
Requires(post): coreutils
Requires(postun):coreutils
Requires(pre): %fillup_prereq
Provides: vlock = 2.2.3
Obsoletes: vlock <= 2.2.3
%description
Load and save keyboard mappings. This is needed if you are not using
the US keyboard map. This package also contains utilities for changing
your console fonts. If you install this package, YaST includes an extra
menu to allow you to choose between the different fonts. This package
also includes fonts from the kbd_fonts.tar.gz package (by Paul
Gortmaker) on Sunsite.
%package legacy
Summary: Legacy data for kbd package
Group: System/Console
BuildArch: noarch
%description legacy
The %{name}-legacy package contains original keymaps for kbd package.
Please note that %{name}-legacy is not helpful without kbd.
%define kbd %{_datadir}/kbd
%prep
%setup -q -a 1 -a 2 -n kbd-%{version}
cp -fp %{SOURCE8} .
cp -fp %{SOURCE9} .
cp -fp %{SOURCE44} .
cp -fp %{SOURCE45} .
cp -fp %{SOURCE20} .
cp -fp %{SOURCE21} .
cp -fp %{SOURCE22} .
%patch0 -p1
%patch1 -p1
%patch2
%patch3
%patch4 -p1
%patch6
%patch9
%patch10
%patch11
%patch12 -p1
%patch13 -p1
%ifnarch %{ix86} x86_64
%patch14 -p0
%endif
%patch15 -p1
%build
for i in `find data/keymaps/mac -type f` ; do
sed -i -f %{SOURCE42} $i
done
# workaround ambiguous keymap names
pushd data/keymaps/i386
# bnc#48301
test -f qwerty/se-latin1.map || cp qwerty/sv-latin1.map qwerty/se-latin1.map
# bnc#435121
test -f olpc/es-olpc.map || mv olpc/es.map olpc/es-olpc.map
# Rename conflicting keymaps, as Fedora do
#test -f dvorak/no.map || mv dvorak/no.map dvorak/no-dvorak.map
test -f fgGIod/trf.map || mv fgGIod/trf.map fgGIod/trf-fgGIod.map
test -f olpc/pt.map || mv olpc/pt.map olpc/pt-olpc.map
test -f qwerty/cz.map || mv qwerty/cz.map qwerty/cz-qwerty.map
popd
./autogen.sh
%configure \
--disable-silent-rules \
--datadir=%{kbd} \
--enable-nls \
--localedir=%{_datadir}/locale \
--enable-optional-progs \
--disable-static
make %{?_smp_mflags}
gcc %{optflags} -o fbtest $RPM_SOURCE_DIR/fbtest.c
%ifarch %{ix86} x86_64
gcc %{optflags} -o numlockbios $RPM_SOURCE_DIR/numlockbios.c
%endif
# fix lat2-16.psfu (bnc#340579)
font=data/consolefonts/lat2a-16.psfu
./src/psfxtable -i $font -it data/unimaps/lat2u.uni \
-o t.psfu
mv t.psfu $font
make %{?_smp_mflags}
%install
mkdir -p %{buildroot}%{_sbindir}
DOC=%{buildroot}%{_defaultdocdir}/kbd
KBD=%{kbd}
K=%{buildroot}$KBD
mkdir -p $K/consolefonts
# First install the fonts from the vfont package
# (allowing kbd to overwrite some of them)
mkdir -p $DOC/fonts
install -m 644 fonts/README $DOC/fonts/README.fonts
install -m 644 fonts/vfont-4.36/README $DOC/fonts/README.vfont-4.36
install -m 644 fonts/vfont-5.10/README $DOC/fonts/README.vfont-5.10
install -m 644 fonts/vfont-5.10/SCRIPT $DOC/fonts/SCRIPT.vfont-5.10
rm -f fonts/vfont-5.10/SCRIPT fonts/*/README
install -m 644 fonts/*/* $K/consolefonts/
# Now call kbd install
echo "# Now call kbd install DESTDIR=%{buildroot} DATA_DIR=%{kbd} MAN_DIR=%{_mandir}"
make DESTDIR=%{buildroot} DATA_DIR=%{kbd} MAN_DIR=%{_mandir} install
# ln -s iso01-12x22.psfu $K/consolefonts/suse12x22.psfu
install -m 644 data/consolefonts/README* $DOC/fonts/
mkdir -p $DOC/doc/
install -m 644 docs/doc/keysyms.h.info docs/doc/kbd.FAQ.txt docs/doc/kbd.FAQ*.html docs/doc/README* docs/doc/TODO $DOC/doc/
install -m 644 docs/doc/as400.kbd docs/doc/console.docs docs/doc/repeat/set_kbd_repeat-2 $DOC/doc/
echo "See %{_datadir}/i18/charmaps for a description of char maps" >$DOC/doc/README.charmaps
install -m 644 ChangeLog CREDITS README $DOC/
install -m 644 %{SOURCE3} $DOC/
rm -f $K/consolefonts/README* $K/consolefonts/ERRORS.gz
if ls $K/consolefonts/Agafari-* > /dev/null 2>&1; then
echo "";
echo "ERROR: Ethiopian Agafari fonts are for noncommercial distribution only."
echo "please run repack_kbd.sh";
echo "";
exit 1
fi
ln -sf us.map.gz $K/keymaps/i386/qwerty/khmer.map.gz
ln -sf us.map.gz $K/keymaps/i386/qwerty/korean.map.gz
ln -sf us.map.gz $K/keymaps/i386/qwerty/arabic.map.gz
ln -sf us.map.gz $K/keymaps/i386/qwerty/ir.map.gz
ln -sf us.map.gz $K/keymaps/i386/qwerty/chinese.map.gz
ln -sf us.map.gz $K/keymaps/i386/qwerty/taiwanese.map.gz
ln -sf sr-cy.map.gz $K/keymaps/i386/qwerty/sr-latin.map.gz
# Compatability links; don't know what the first three are good for.
# The others are for yast/langselection and should be removed as soon as
# yast knows about it.
#ln -sf de-latin1-nodeadkeys.map.gz \
# $K/keymaps/i386/qwertz/de-lat1-nd.map.gz
#ln -sf ru1.map.gz $K/keymaps/i386/qwerty/russian.map.gz
#ln -sf sg-latin1-lk450.map.gz \
# $K/keymaps/i386/qwertz/sg-l1-lk450.map.gz
# The next two links are for yast-language choise; should be obsolete
# with the next yast version (on 6.1)
#ln -sf lat1-16.psfu.gz $K/consolefonts/lat1u-16.psf.gz
#ln -sf lat2-16.psfu.gz $K/consolefonts/lat2u-16.psf.gz
#
# This is for stupid default font search
rm -f $K/consolefonts/default8x16.gz
ln -sf default8x16.psfu.gz $K/consolefonts/default8x16.gz
#
rm -f $K/keymaps/i386/qwerty/*~ $K/keymaps/i386/qwerty/*,v
#
# this is until the Cyr* font are not part of the package
rm -f $K/consolefonts/Cyr_a8x14.gz
ln -sf Cyr_a8x14.psfu.gz $K/consolefonts/Cyr_a8x14.gz
rm -f $K/consolefonts/Cyr_a8x16.gz
ln -sf Cyr_a8x16.psfu.gz $K/consolefonts/Cyr_a8x16.gz
rm -f $K/consolefonts/Cyr_a8x8.gz
ln -sf Cyr_a8x8.psfu.gz $K/consolefonts/Cyr_a8x8.gz
#
find $K -name \*.orig | xargs -r rm -vf
# add some missing maps to mac and remap french board
(
cd $K/keymaps/mac/all
pwd
#ln -s mac-fr-latin1.map.gz mac-fr_CH-latin1.map.gz
#ln -s mac-fr-latin1.map.gz mac-fr.map.gz
for i in \
mac-es.map.gz \
mac-it.map.gz \
mac-pt-latin1.map.gz \
mac-br-abnt2.map.gz \
mac-gr.map.gz \
mac-dk-latin1.map.gz \
mac-no-latin1.map.gz \
mac-fi-latin1.map.gz \
mac-cz-us-qwertz.map.gz \
mac-hu.map.gz \
mac-Pl02.map.gz \
mac-ru1.map.gz \
mac-jp106.map.gz
do test -f $i || ln -sv mac-us.map.gz $i
done
)
FILLUP_DIR=%{buildroot}%{_fillupdir}
mkdir -p $FILLUP_DIR
install -m 644 sysconfig.console $FILLUP_DIR/sysconfig.console
install -m 644 sysconfig.keyboard $FILLUP_DIR/sysconfig.keyboard
%ifnarch %{ix86} x86_64
rm -f %{buildroot}%{_mandir}/man8/resizecons.8*
%endif
%ifarch %{sparc} m68k
rm -f %{buildroot}%{_mandir}/man8/getkeycodes.8*
rm -f %{buildroot}%{_mandir}/man8/setkeycodes.8*
%endif
install -m 755 fbtest %{buildroot}%{_sbindir}
%ifarch %{ix86} x86_64
install -d %{buildroot}%{_libexecdir}/%{name}
install -m 755 numlockbios %{buildroot}%{_libexecdir}/%{name}
%endif
%if %{defined _distconfdir}
rm -rf %{buildroot}%{_sysconfdir}/pam.d
install -d %{buildroot}%{_distconfdir}/pam.d
install -m 644 %{SOURCE4} %{buildroot}%{_distconfdir}/pam.d/vlock
%else
install -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/pam.d/vlock
%endif
install -m 644 %{SOURCE12} %{buildroot}%{_mandir}/man8/
%if !0%{?usrmerged}
mkdir -p %{buildroot}/bin
mkdir -p %{buildroot}/sbin
ln -s %{_bindir}/chvt %{buildroot}/bin
ln -s %{_bindir}/clrunimap %{buildroot}/bin
ln -s %{_bindir}/deallocvt %{buildroot}/bin
ln -s %{_bindir}/dumpkeys %{buildroot}/bin
ln -s %{_bindir}/fgconsole %{buildroot}/bin
ln -s %{_bindir}/getunimap %{buildroot}/bin
ln -s %{_bindir}/kbd_mode %{buildroot}/bin
ln -s %{_bindir}/kbdinfo %{buildroot}/bin
ln -s %{_bindir}/kbdrate %{buildroot}/bin
ln -s %{_bindir}/loadkeys %{buildroot}/bin
ln -s %{_bindir}/loadunimap %{buildroot}/bin
ln -s %{_bindir}/mapscrn %{buildroot}/bin
ln -s %{_bindir}/openvt %{buildroot}/bin
ln -s %{_bindir}/outpsfheader %{buildroot}/bin
ln -s %{_bindir}/psfaddtable %{buildroot}/bin
ln -s %{_bindir}/psfgettable %{buildroot}/bin
ln -s %{_bindir}/psfstriptable %{buildroot}/bin
ln -s %{_bindir}/psfxtable %{buildroot}/bin
ln -s %{_bindir}/screendump %{buildroot}/bin
ln -s %{_bindir}/setfont %{buildroot}/bin
ln -s %{_bindir}/setleds %{buildroot}/bin
ln -s %{_bindir}/setlogcons %{buildroot}/bin
ln -s %{_bindir}/setmetamode %{buildroot}/bin
ln -s %{_bindir}/setpalette %{buildroot}/bin
ln -s %{_bindir}/setvesablank %{buildroot}/bin
ln -s %{_bindir}/setvtrgb %{buildroot}/bin
ln -s %{_bindir}/showconsolefont %{buildroot}/bin
ln -s %{_bindir}/showkey %{buildroot}/bin
ln -s %{_bindir}/spawn_console %{buildroot}/bin
ln -s %{_bindir}/spawn_login %{buildroot}/bin
ln -s %{_bindir}/unicode_start %{buildroot}/bin
ln -s %{_bindir}/unicode_stop %{buildroot}/bin
ln -s %{_sbindir}/fbtest %{buildroot}/sbin
%ifnarch %{sparc} m68k
ln -s %{_bindir}/getkeycodes %{buildroot}/bin
ln -s %{_bindir}/setkeycodes %{buildroot}/bin
%endif
%ifarch %{ix86} x86_64
ln -s %{_bindir}/resizecons %{buildroot}/bin
%endif
%endif
# Make sure Perl has a locale where uc/lc works for unicode codepoints
# see e.g. https://perldoc.perl.org/perldiag.html#Wide-character-(U%2b%25X)-in-%25s
export LC_ALL=C.utf-8
# Convert X keyboard layouts to console keymaps
mkdir -p %{buildroot}%{kbd}/keymaps/xkb
perl xml2lst.pl < %{_datadir}/X11/xkb/rules/base.xml > layouts-variants.lst
while read line; do
XKBLAYOUT=`echo "$line" | cut -d " " -f 1`
echo "$XKBLAYOUT" >> layouts-list.lst
XKBVARIANT=`echo "$line" | cut -d " " -f 2`
ckbcomp "$XKBLAYOUT" "$XKBVARIANT" > /tmp/"$XKBLAYOUT"-"$XKBVARIANT".map
# skip converted layouts which cannot input ASCII (rh#1031848)
grep -q "U+0041" /tmp/"$XKBLAYOUT"-"$XKBVARIANT".map && \
gzip -cn9 /tmp/"$XKBLAYOUT"-"$XKBVARIANT".map > %{buildroot}%{kbd}/keymaps/xkb/"$XKBLAYOUT"-"$XKBVARIANT".map.gz
rm /tmp/"$XKBLAYOUT"-"$XKBVARIANT".map
done < layouts-variants.lst
# Convert X keyboard layouts (plain, no variant)
cat layouts-list.lst | sort -u >> layouts-list-uniq.lst
while read line; do
ckbcomp "$line" > /tmp/"$line".map
grep -q "U+0041" /tmp/"$line".map && \
gzip -cn9 /tmp/"$line".map > %{buildroot}%{kbd}/keymaps/xkb/"$line".map.gz
rm /tmp/"$line".map
done < layouts-list-uniq.lst
# Rename the converted default fi (kotoistus) layout (rh#1117891)
mv %{buildroot}%{kbd}/keymaps/xkb/fi.map.gz %{buildroot}%{kbd}/keymaps/xkb/fi-kotoistus.map.gz
# Fix converted cz layout - add compose rules (rh#1181581)
gunzip %{buildroot}%{kbd}/keymaps/xkb/cz.map.gz
patch %{buildroot}%{kbd}/keymaps/xkb/cz.map < %{SOURCE15}
gzip -n9 %{buildroot}%{kbd}/keymaps/xkb/cz.map
# Generate entries for systemd's /usr/share/systemd/kbd-model-map
mkdir -p %{buildroot}%{_datadir}/systemd
sh ./genmap4systemd.sh %{buildroot}%{kbd}/keymaps/xkb \
> %{buildroot}%{_datadir}/systemd/kbd-model-map.xkb-generated
install -m0755 kbdsettings %{buildroot}%{_sbindir}/
install -d %{buildroot}%{_prefix}/lib/systemd/system
install -m0644 kbdsettings.service %{buildroot}%{_prefix}/lib/systemd/system
%fdupes -s %{buildroot}%{_datadir}
%find_lang %{name}
%pre
%{service_add_pre kbdsettings.service}
# move outdated pam.d/*.rpmsave files away
test -f /etc/pam.d/vlock.rpmsave && mv -v /etc/pam.d/vlock.rpmsave /etc/pam.d/vlock.rpmsave.old ||:
%post
%{fillup_only -n console}
%{fillup_only -n keyboard}
# Variables deleted before Leap 15 and SLE 15
%{remove_and_set -n keyboard KEYTABLE COMPOSETABLE}
%ifnarch %{ix86} x86_64
# "bios" was accepted but ingnored on non-x86 platforms up to Leap 42.* and SLE 12.*
sed -i 's/^KBD_NUMLOCK="bios"/KBD_NUMLOCK="no"/' /etc/sysconfig/keyboard
%endif
%{service_add_post kbdsettings.service}
%{?regenerate_initrd_post}
%preun
%{service_del_preun kbdsettings.service}
%postun
%{service_del_postun kbdsettings.service}
%{?regenerate_initrd_post}
%posttrans
%{?regenerate_initrd_posttrans}
# Migration to /usr/etc.
test -f /etc/pam.d/vlock.rpmsave && mv -v /etc/pam.d/vlock.rpmsave /etc/pam.d/vlock ||:
%files -f %{name}.lang
#config(noreplace) /etc/sysconfig/console
%license LICENSE
%doc %{_defaultdocdir}/kbd
#doc CHANGES README CREDITS
%{_fillupdir}/sysconfig.console
%{_fillupdir}/sysconfig.keyboard
%{kbd}
%exclude %{kbd}/keymaps/{%{legacy_folders}}
%if !0%{?usrmerged}
/sbin/fbtest
/bin/chvt
/bin/openvt
/bin/deallocvt
/bin/dumpkeys
%ifnarch %{sparc} m68k
/bin/getkeycodes
/bin/setkeycodes
%endif
/bin/fgconsole
/bin/kbd_mode
/bin/kbdinfo
/bin/loadkeys
/bin/loadunimap
/bin/mapscrn
/bin/psfaddtable
/bin/psfgettable
/bin/psfstriptable
/bin/psfxtable
%ifarch %{ix86} x86_64
/bin/resizecons
%endif
/bin/setfont
/bin/setleds
/bin/setmetamode
/bin/setvtrgb
/bin/showconsolefont
/bin/showkey
/bin/unicode_start
/bin/unicode_stop
/bin/kbdrate
/bin/clrunimap
/bin/getunimap
/bin/outpsfheader
/bin/screendump
/bin/setlogcons
/bin/setpalette
/bin/setvesablank
/bin/spawn_console
/bin/spawn_login
%endif
%{_sbindir}/fbtest
%{_bindir}/chvt
%{_bindir}/openvt
%{_bindir}/deallocvt
%{_bindir}/dumpkeys
%ifnarch %{sparc} m68k
%{_bindir}/getkeycodes
%{_bindir}/setkeycodes
%endif
%{_bindir}/fgconsole
%{_bindir}/kbd_mode
%{_bindir}/kbdinfo
%{_bindir}/loadkeys
%{_bindir}/loadunimap
%{_bindir}/mapscrn
%{_bindir}/psfaddtable
%{_bindir}/psfgettable
%{_bindir}/psfstriptable
%{_bindir}/psfxtable
%ifarch %{ix86} x86_64
%{_bindir}/resizecons
%endif
%{_bindir}/setfont
%{_bindir}/setleds
%{_bindir}/setmetamode
%{_bindir}/setvtrgb
%{_bindir}/showconsolefont
%{_bindir}/showkey
%{_bindir}/unicode_start
%{_bindir}/unicode_stop
%{_bindir}/kbdrate
%{_bindir}/clrunimap
%{_bindir}/getunimap
%{_bindir}/outpsfheader
%{_bindir}/screendump
%{_bindir}/setlogcons
%{_bindir}/setpalette
%{_bindir}/setvesablank
%{_bindir}/spawn_console
%{_bindir}/spawn_login
%{_bindir}/vlock
%ifarch %{ix86} x86_64
%dir %{_libexecdir}/%{name}
%{_libexecdir}/%{name}/numlockbios
%endif
%{_mandir}/man1/*
%{_mandir}/man5/keymaps.5%{ext_man}
%ifnarch %{sparc} m68k
%{_mandir}/man8/getkeycodes.8%{ext_man}
%{_mandir}/man8/setkeycodes.8%{ext_man}
%endif
%{_mandir}/man8/showconsolefont.8%{ext_man}
%{_mandir}/man8/loadunimap.8%{ext_man}
%{_mandir}/man8/mapscrn.8%{ext_man}
%ifarch %{ix86} x86_64
%{_mandir}/man8/resizecons.8%{ext_man}
%endif
%{_mandir}/man8/setfont.8%{ext_man}
%{_mandir}/man8/fbtest.8%{ext_man}
%{_mandir}/man8/kbdrate.8%{ext_man}
%{_mandir}/man8/clrunimap.8%{ext_man}
%{_mandir}/man8/getunimap.8%{ext_man}
%{_mandir}/man8/mk_modmap.8%{ext_man}
%{_mandir}/man8/setlogcons.8%{ext_man}
%{_mandir}/man8/setvesablank.8%{ext_man}
%{_mandir}/man8/setvtrgb.8%{ext_man}
%{_mandir}/man8/vcstime.8%{ext_man}
%if %{defined _distconfdir}
%{_distconfdir}/pam.d/vlock
%else
%config(noreplace) %{_sysconfdir}/pam.d/vlock
%endif
%dir %{_datadir}/systemd
%{_prefix}/lib/systemd/system/kbdsettings.service
%{_datadir}/systemd/kbd-model-map.xkb-generated
%{_sbindir}/kbdsettings
%files legacy
%{kbd}/keymaps/{%{legacy_folders}}
%changelog

51
kbdsettings Normal file
View file

@ -0,0 +1,51 @@
#! /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

42
kbdsettings-nox86.patch Normal file
View file

@ -0,0 +1,42 @@
--- 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 $confval invalid for $conf"
- fi
- ;;
*)
echo "error: unknown value $confval 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

15
kbdsettings.service Normal file
View file

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

52
numlockbios.c Normal file
View file

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

26
repack_kbd.sh Normal file
View file

@ -0,0 +1,26 @@
#!/bin/sh
#
# repackage kbd source tar ball,
# to remove fonts that forbid commercial distribution.
#
# 2005-07-11, jw@suse.de
tmpdir=`mktemp -d`
in="$1"
if [ -z $in ]; then
echo "usage: $0 <tarball>"
exit 1
fi
name="${in%.tar.*}"
# recent gnu tar can autodetect gzip / bzip2
if ! tar xf "$in" -C $tmpdir; then
rm -rf $tmpdir
exit 1
fi
echo removing files...
find $tmpdir -iname \*agafari\* | tee /dev/tty | xargs rm
tar Jcf $name-repack.tar.xz -C $tmpdir $name
rm -rf $tmpdir

49
sysconfig.console Normal file
View file

@ -0,0 +1,49 @@
## Path: Hardware/Console
## Description: Text console settings (see also Hardware/Keyboard)
#
## Type: string
## Default: ""
#
# Console settings.
# Note: The KBD_TTY setting from Hardware/Keyboard (sysconfig/keyboard)
# also applies for the settings here.
#
# Load this console font on bootup:
# (/usr/share/kbd/consolefonts/)
#
CONSOLE_FONT=""
## Type: string
## Default: ""
#
# Some fonts come without a unicode map.
# (.psfu fonts supposedly have it, others often not.)
# You can then specify the unicode mapping of your font
# explicitly. (/usr/share/kbd/unimaps/)
# Normally not needed.
#
CONSOLE_UNICODEMAP=""
## Type: string
## Default: ""
#
# Most programs output 8 bit characters, so you need a table to
# translate those characters into unicode. That one can be specified
# here. (/usr/share/kbd/consoletrans/)
# (Note: If your console is in utf-8 mode you don't need this.)
# If your code does not use a unicode mapping at all (because you
# e.g. explicitly specified UNICODEMAP="none") you may circumvent
# the translation via unicode, but load a map which directly maps
# 8 bit output of your program to a font position.
#
CONSOLE_SCREENMAP=""
## Type: string
## Default: ""
#
# for some fonts the console has to be initialized with CONSOLE_MAGIC.
# CONSOLE_MAGIC can be empty or have the values "(B", ")B", "(K" or ")K".
# Normally not needed (automatically handled by setfont).
#
CONSOLE_MAGIC=""

56
sysconfig.keyboard Normal file
View file

@ -0,0 +1,56 @@
## Path: Hardware/Keyboard
## Description: Keyboard settings for the text console
## ServiceRestart: kbdsettings
#
## Type: integer
## Default:
#
# Keyboard delay time in ms (250, 500, 750, 1000)
KBD_DELAY=""
## Type: string(2.0,2.1,2.3,2.5,2.7,3.0,3.3,3.7,4.0,4.3,4.6,5.0,5.5,6.0,6.7,7.5,8.0,8.6,9.2,10.0,10.9,12.0,13.3,15.0,16.0,17.1,18.5,20.0,21.8,24.0,26.7,30.0)
## Default:
#
# Keyboard repeat rate (2.0 - 30.0)
KBD_RATE=""
## Type: list(bios,yes,no)
## Default: bios
#
# NumLock on? ("yes" or "no" or "bios" for BIOS setting)
# This setting may interfere with GNOME /org/gnome/settings-daemon/peripherals/keyboard/remember-numlock-state DConf key.
KBD_NUMLOCK="bios"
## Type: yesno
## Default: no
#
# ScrollLock on? ("yes" or "no")
KBD_SCRLOCK="no"
## Type: yesno
## Default: no
#
# CapsLock on? ("yes" or "no")
KBD_CAPSLOCK="no"
## Type: yesno
## Default: no
#
# Disable CAPS LOCK and make it a normal Shift key?
# (Ctrl Caps Lock will still toggle Caps Lock functionality)
# Note that you need to tweak the xkb maps or use xmodmap
# if you want to do the same under X-Windows. In ~/.Xmodmap:
# keycode 0x42 = Shift_L Shift_L
#
KBD_DISABLE_CAPS_LOCK="no"
## Type: string
## Default:
#
# ttys for the above settings
# Example: "tty1 tty2"
# "" for tty's 1-6
#
KBD_TTY=""

5
vlock.pamd Normal file
View file

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

231
xml2lst.pl Normal file
View file

@ -0,0 +1,231 @@
#!/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};
}