SHA256
1
0
forked from pool/kbd
OBS User unknown 2006-12-18 23:16:50 +00:00 committed by Git OBS Bridge
commit 045bafa9e2
42 changed files with 6071 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

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>

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;

37
earlykbd.init Normal file
View File

@ -0,0 +1,37 @@
#! /bin/sh
# Copyright (c) 1995-2005 SUSE LINUX Products AG, Nuernberg, Germany.
#
# Author: Werner Fink <werner@suse.de>
#
# Please send feedback to http://www.suse.de/feedback
#
# /etc/init.d/earlykbd
#
### BEGIN INIT INFO
# Provides: earlykbd
# Required-Start:
# Required-Stop:
# X-SuSE-Should-Start: fbset setserial
# X-SuSE-Should-Stop:
# Default-Start: 5
# Default-Stop:
# Description: Keyboard settings (don't disable!)
### END INIT INFO
. /etc/rc.status
function check ()
{
# kbd can initialize if at least one of
# defkeymap or /usr/share is available.
test -s /etc/defkeymap.map && return 0
test -d /usr/share/ && return 0
return 1;
}
rc_reset
check || exit 0
exec /etc/init.d/kbd ${1+"$@"}

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

File diff suppressed because it is too large Load Diff

View File

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

@ -0,0 +1,33 @@
--- kbd-1.12/doc/kbd.FAQ-15.html.orig 2003-09-24 23:01:40.000000000 +0200
+++ kbd-1.12/doc/kbd.FAQ-15.html 2006-08-11 12:10:06.000000000 +0200
@@ -188,7 +188,7 @@
<P>XFree86 also supports Slow Keys, Repeat Keys, Bounce Keys and an
audible bell. <CODE>xkbcomp</CODE> can be used to generate a <CODE>.xkm</CODE> file
to enable these. The appropriate <CODE>xkbcomp</CODE> commands are listed in
-<CODE>/usr/X11R6/lib/X11/xkb/compat/accessx</CODE>.
+<CODE>/usr/{X11R6/lib,share}/X11/xkb/compat/accessx</CODE>.
Unfortunately, the exact process is still undocumented.
<P>
<HR>
--- kbd-1.12/doc/kbd.FAQ.txt.orig 1999-10-08 22:46:24.000000000 +0200
+++ kbd-1.12/doc/kbd.FAQ.txt 2006-08-11 12:10:16.000000000 +0200
@@ -1253,7 +1253,7 @@
1. The Linux keyboard driver mechanism, used in conjunction with
loadkeys.
2. The X mechanism - see X386keybd(1), later XFree86kbd(1). Under
- X11R6: edit /usr/X11R6/lib/X11/locale/iso8859-1/Compose.
+ X11R6: edit /usr/{X11R6/lib,/usr/share}/X11/locale/iso8859-1/Compose.
See also Andrew D. Balsa's comments at
http://wauug.erols.com/~balsa/linux/deadkeys/index.html.
--- kbd-1.12/doc/kbd.FAQ-8.html.orig 2003-09-24 23:01:40.000000000 +0200
+++ kbd-1.12/doc/kbd.FAQ-8.html 2006-08-11 12:09:53.000000000 +0200
@@ -154,7 +154,7 @@
<OL>
<LI>The Linux keyboard driver mechanism, used in conjunction with loadkeys.</LI>
<LI>The X mechanism - see X386keybd(1), later XFree86kbd(1).
-Under X11R6: edit <CODE>/usr/X11R6/lib/X11/locale/iso8859-1/Compose</CODE>.<P>See also Andrew D. Balsa's comments at
+Under X11R6: edit <CODE>/usr/{X11R6/lib,share}/X11/locale/iso8859-1/Compose</CODE>.<P>See also Andrew D. Balsa's comments at
<A HREF="http://wauug.erols.com/~balsa/linux/deadkeys/index.html">http://wauug.erols.com/~balsa/linux/deadkeys/index.html</A>.
</LI>
<LI>The emacs mechanism obtained by loading "iso-insert.el" or

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,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,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,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

1146
kbd.changes Normal file

File diff suppressed because it is too large Load Diff

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"

460
kbd.init Normal file
View File

@ -0,0 +1,460 @@
#! /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:
# X-SuSE-Should-Start: fbset setserial earlykbd
# X-SuSE-Should-Stop:
# Default-Start: 1 2 3 5 S
# Default-Stop:
# 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" ;;
*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
KBD_TTY="tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 tty9
tty10 tty11 tty12 tty13 tty14 tty15 tty16
tty17 tty18 tty19 tty20 tty21 tty22 tty23 tty24"
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
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
# 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

913
kbd.spec Normal file
View File

@ -0,0 +1,913 @@
#
# spec file for package kbd (Version 1.12)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: kbd
URL: ftp://ftp.win.tue.nl/pub/home/aeb/linux-local/utils/kbd
License: GNU General Public License (GPL) - all versions
Group: System/Console
Autoreqprov: on
Version: 1.12
Release: 80
Summary: Keyboard and Font Utilities
Source: ftp://ftp.win.tue.nl/pub/home/aeb/linux-local/utils/kbd/%{name}-%{version}.tar.bz2
Source1: kbd_fonts.tar.bz2
Source2: suse-add.tar.bz2
Source3: README.SuSE
Source4: kbd.init
Source5: kbd.fillup
Source6: kbd.fillup.nonpc
Source7: earlykbd.init
Source8: sysconfig.console
Source9: sysconfig.keyboard
Source10: testutf8.c
Source42: convert-kbd-mac.sed
Source43: repack_kbd.sh
Patch: kbd-%{version}.diff
Patch2: kbd-%{version}-prtscr_no_sigquit.diff
Patch3: kbd-%{version}-swiss.diff
Patch4: kbd-%{version}-Meta-Tab.diff
Patch5: kbd-%{version}-noclaudio.diff
Patch6: kbd-%{version}-nohang-kbdrate2.diff
Patch7: kbd-%{version}-loadkeys-repstdout.diff
Patch8: kbd-%{version}-mac-dk.diff
Patch9: kbd-%{version}-dumpkeys-full.diff
Patch10: kbd-%{version}-dumpkeys-ppc.diff
Patch11: kbd-%{version}-mac-de.diff
Patch12: kbd-%{version}-handle-small-table.diff
Patch13: kbd-%{version}-unicode_scripts.diff
Patch14: kbd-%{version}-cz-us-qwertz.diff
Patch15: kbd-%{version}-nounicode-nontty.diff
Patch16: kbd-%{version}-kbd_mode.diff
Patch17: piofont_debug.diff
Patch18: kbd-%{version}-be-nice-to-kdm.diff
Patch19: kbd-%{version}-happy-abuild.diff
Patch20: kbd-%{version}-strip.diff
Patch21: kbd-%{version}-setfont-fpclose.diff
Patch22: kbd-%{version}-showconsolefont-info.diff
Patch23: kbd-%{version}-docu-X11R6-xorg.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %suse_version > 800
PreReq: %fillup_prereq %insserv_prereq
%endif
%description
Load and save keyboard mappings. This is needed if you are not using
the US keyboard map. This package also contains utilities for changing
your console fonts. If you install this package, YaST includes an extra
menu to allow you to choose between the different fonts. This package
also includes fonts from the kbd_fonts.tar.gz package (by Paul
Gortmaker) on Sunsite.
Authors:
--------
Andries Brouwer <aeb@cwi.nl>
%define kbdrate_in_util %(rpm -ql util 2>/dev/null | grep -s /sbin/kbdrate && echo "1" || echo "0"; exit 0)
%define kbd /usr/share/kbd
%prep
%if %{kbdrate_in_util}
echo "kbdrate is in util"
%endif
echo $RPM_BUILD_ROOT
%setup -q -a 1 -a 2 -n kbd-%{version}
%patch -p1 -E
# choose-tty.diff went upstream, 27.2.2004, jw
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%build
for i in `find data/keymaps/mac -type f` ; do
sed -i -f %{S:42} $i
done
# bugzilla #33301, but noclobber.
(cd data/keymaps/i386/qwerty; test -f se-latin1.map || cp sv-latin1.map se-latin1.map)
./configure --prefix=/ --datadir=%{kbd} --mandir=%{_mandir}
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Os"
gcc $RPM_OPT_FLAGS -o testutf8 $RPM_SOURCE_DIR/testutf8.c
%install
mkdir -p $RPM_BUILD_ROOT/bin
mkdir -p $RPM_BUILD_ROOT/sbin
#mkdir -p $RPM_BUILD_ROOT/usr/bin
#mkdir -p $RPM_BUILD_ROOT/usr/sbin
mkdir -p $RPM_BUILD_ROOT/etc/init.d
DOC=${RPM_BUILD_ROOT}%{_defaultdocdir}/kbd
KBD=%{kbd}
K=$RPM_BUILD_ROOT$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=$RPM_BUILD_ROOT DATA_DIR=%{kbd} MAN_DIR=%{_mandir}"
make DESTDIR=$RPM_BUILD_ROOT DATA_DIR=%{kbd} MAN_DIR=%{_mandir} install
# ln -s iso01-12x22.psfu $K/consolefonts/suse12x22.psfu
install -m 644 data/consolefonts/README* $DOC/fonts/
install -m 644 data/consolefonts/ERRORS $DOC/fonts/
mkdir -p $DOC/doc/
install -m 644 doc/keysyms.h.info doc/kbd.FAQ.txt doc/kbd.FAQ*.html doc/README* doc/TODO $DOC/doc/
install -m 644 doc/as400.kbd doc/console.docs doc/repeat/set_kbd_repeat-2 $DOC/doc/
echo "See /usr/share/i18/charmaps for a description of char maps" >$DOC/doc/README.charmaps
install -m 644 COPYING CHANGES CREDITS README $DOC/
install %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
install -m 755 %SOURCE4 $RPM_BUILD_ROOT/etc/init.d/kbd
install -m 755 %SOURCE7 $RPM_BUILD_ROOT/etc/init.d/earlykbd
ln -sf ../etc/init.d/kbd $RPM_BUILD_ROOT/sbin/rckbd
ln -sf us.map.gz $K/keymaps/i386/qwerty/khmer.map.gz
ln -sf us.map.gz $K/keymaps/i386/qwerty/korean.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=$RPM_BUILD_ROOT/var/adm/fillup-templates
mkdir -p $FILLUP_DIR
install -o root -g root %SOURCE8 $FILLUP_DIR/sysconfig.console
install -o root -g root %SOURCE9 $FILLUP_DIR/sysconfig.keyboard
%ifarch %ix86 alpha ia64 x86_64
cat %SOURCE5 >> $FILLUP_DIR/sysconfig.keyboard
%else
cat %SOURCE6 >> $FILLUP_DIR/sysconfig.keyboard
%endif
#mkdir -p $RPM_BUILD_ROOT/etc/sysconfig
#touch $RPM_BUILD_ROOT/etc/sysconfig/console
%ifnarch %ix86
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/resizecons.8*
%endif
%ifarch sparc m68k
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/getkeycodes.8*
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/setkeycodes.8*
%endif
install -m 755 ./testutf8 $RPM_BUILD_ROOT/bin/
%post
%{fillup_and_insserv -npy console kbd}
%{fillup_and_insserv -npY keyboard earlykbd}
#echo "Please read the docu about the new COMPOSETABLE rc.config variable."
#echo "See /etc/sysconfig/console, /etc/sysconfig/keyboard"
#echo "and %{_docdir}/kbd/README.SuSE."
%postun
%{insserv_cleanup}
%files
#%config(noreplace) /etc/sysconfig/console
%doc %{_defaultdocdir}/kbd
#%doc COPYING CHANGES README CREDITS
%config /etc/init.d/kbd
%config /etc/init.d/earlykbd
/var/adm/fillup-templates/sysconfig.console
/var/adm/fillup-templates/sysconfig.keyboard
%dir %{kbd}
%{kbd}
/usr/share/locale/*/LC_MESSAGES/kbd.mo
/sbin/rckbd
/bin/chvt
/bin/openvt
/bin/deallocvt
/bin/dumpkeys
%ifnarch sparc m68k
/bin/getkeycodes
/bin/setkeycodes
%endif
/bin/fgconsole
/bin/kbd_mode
/bin/loadkeys
/bin/loadunimap
/bin/mapscrn
/bin/psfaddtable
/bin/psfgettable
/bin/psfstriptable
/bin/psfxtable
%ifarch %ix86
/bin/resizecons
%endif
/bin/setfont
/bin/setleds
/bin/setmetamode
/bin/showconsolefont
/bin/showkey
/bin/unicode_start
/bin/unicode_stop
%if ! %{kbdrate_in_util}
/bin/kbdrate
%doc %{_mandir}/man8/kbdrate.8.gz
%endif
/bin/testutf8
%doc %{_mandir}/man1/chvt.1.gz
%doc %{_mandir}/man1/deallocvt.1.gz
%doc %{_mandir}/man1/dumpkeys.1.gz
%doc %{_mandir}/man1/kbd_mode.1.gz
%doc %{_mandir}/man1/loadkeys.1.gz
%doc %{_mandir}/man1/psfaddtable.1.gz
%doc %{_mandir}/man1/psfgettable.1.gz
%doc %{_mandir}/man1/psfstriptable.1.gz
%doc %{_mandir}/man1/psfxtable.1.gz
%doc %{_mandir}/man1/setleds.1.gz
%doc %{_mandir}/man1/setmetamode.1.gz
%doc %{_mandir}/man1/showkey.1.gz
%doc %{_mandir}/man1/fgconsole.1.gz
%doc %{_mandir}/man5/keymaps.5.gz
%ifnarch sparc m68k
%doc %{_mandir}/man8/getkeycodes.8.gz
%doc %{_mandir}/man8/setkeycodes.8.gz
%endif
%doc %{_mandir}/man8/showconsolefont.8.gz
%doc %{_mandir}/man8/loadunimap.8.gz
%doc %{_mandir}/man8/mapscrn.8.gz
%ifarch %ix86
%doc %{_mandir}/man8/resizecons.8.gz
%endif
%doc %{_mandir}/man8/setfont.8.gz
%doc %{_mandir}/man1/openvt.1.gz
%doc %{_mandir}/man1/unicode_start.1.gz
%doc %{_mandir}/man1/unicode_stop.1.gz
%clean
rm -rf $RPM_BUILD_ROOT
#rm -rf $RPM_BUILD_DIR/kbd-%{version}
%changelog -n kbd
* Mon Oct 23 2006 - olh@suse.de
- update mac-de []|{} mapping to match the X11 and MacOS mapping
* Fri Aug 11 2006 - jw@suse.de
- mention both /usr/share/X11 and /usr/X11R6/lib/X11 in docu.
* Wed Jul 26 2006 - jw@suse.de
- added showconsolefont-info.diff,
partial fix for #164378
* Wed Jun 21 2006 - jw@suse.de
- added some pclose(), fixing (#88501)
* Tue Jun 06 2006 - jw@suse.de
- $MAGIC should have been $CONSOLE_MAGIC (#181612)
* Wed May 31 2006 - jw@suse.de
- added consolefonts/cp850-full-* (#179528)
derived from cp850 via setfont; loadunimap cp850; setfont -O
* Tue Apr 25 2006 - jw@suse.de
- added keymaps/i386/qwerty/cn-latin1.map (#158951)
* Sun Apr 02 2006 - olh@suse.de
- make Alt/Option key and Command/Apple key consistent with X11
in the mac-* keymaps: flip them
* Mon Mar 20 2006 - ms@suse.de
- added korean console keyboard link ( korean -> us ) (#87443)
* Tue Feb 07 2006 - ms@suse.de
- added khmer console keyboard link ( khmer -> us )
* Wed Jan 25 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
* Fri Jan 13 2006 - schwab@suse.de
- Don't strip binaries.
* Sun Oct 02 2005 - schwab@suse.de
- Remove useless distinction between different machines when finding the
keymap.
* Mon Aug 15 2005 - jw@suse.de
- mac: fixed support for pc style keymaps
bugzilla#98363
* Thu Aug 04 2005 - jw@suse.de
- sourcing /etc/profile.d/lang.sh for new dynamic language config
* Tue Jul 12 2005 - jw@suse.de
- removed Agafari fonts from source tar ball.
bugzilla#95915
* Thu Jul 07 2005 - jw@suse.de
- revamped uninitialized.diff into happy-abuild.diff
added declarations, added RPM_OPT_FLAGS where it was still missing.
* Mon May 23 2005 - jw@suse.de
- removing noncommercial Agafari fonts during install.
* Tue May 17 2005 - jw@suse.de
- used uninitialized fixed.
* Fri May 13 2005 - jw@suse.de
- convert-kbd-mac.sed: changed 58 from 100 to 125, to enable altgr
thanks to olh.
* Thu Mar 31 2005 - jw@suse.de
- avoid probing of all /dev/$tty on *iseries*, as it causes
-ENODEV errors. #74394
* Mon Mar 14 2005 - jw@suse.de
- new init script logic: earlykbd + kbd should now behave
as werner designed it (using /var/run/keymap as lock).
Fixes #65246, #71722, #72409 and possibly #65970
* Tue Mar 08 2005 - jw@suse.de
- magic printing second try.
Better diagnostics to tackle #65246
* Fri Mar 04 2005 - jw@suse.de
- less obstrusive magic printing from kbd.init [fixes #65119]
- loadkeys, setfont: neither annoy X-Servers nor print
bogus error messages [fixes #63713, and possibly #65246]
* Tue Dec 14 2004 - coolo@suse.de
- adding an early boot script to load the cache created by last
boot.
* Mon Oct 25 2004 - jw@suse.de
- new cz-lat2-us.map added, fixing #46829
* Thu Sep 30 2004 - jw@suse.de
- #45972 fixed: missing usbhid module added.
- #46113 workaround: wrong write to /proc/sys/kernel/hotplug removed.
- debug printf for unreproducable PIO_FONT error added.
* Wed Sep 08 2004 - werner@suse.de
- Faster boot: skip setleds if nothing is switched on and skip
not needed virtual consoles
* Mon Sep 06 2004 - werner@suse.de
- More speed for the boot script by checking the vt's only once
* Wed Mar 31 2004 - jw@suse.de
- Bugzilla #37619: force-reload was missing in kbd.init
* Tue Mar 30 2004 - mfabian@suse.de, werner@suse.de
- Bugzilla #37367: add option "-C device" to kbd_mode and
change /etc/init.d/kbd script to be able to set the mode for
all console. Previously it worked only on the first console
(/dev/tty1).
* Tue Mar 30 2004 - jw@suse.de
- iso09.f16n.psf from toganm@dinamizm.com added.
That fixes bugzilla #37247
* Wed Mar 03 2004 - ro@suse.de
- fix typo in kbd rcscript
* Fri Feb 27 2004 - jw@suse.de
- upgrade to 1.12
* updated getkeycodes, showkey for Linux 2.6 (fixing #33978)
* maps updated: is-latin1.map, is-latin1-us.map, bg-cp1251.map,
bg_bds-cp1251.map, bg_pho-cp1251.map, bg_bds-utf8.map,
bg_pho-utf8.map, nl.map
* renamed bg.map to bg-cp855.map
* fonts: greek-polytonic.psfu
* translations updated: pl.po, ro.po, cs.po, es.po, gr.po, es.po,
nl.po, el.po, pl.po
* new options: -C, openvt -e,
* docu updates.
- fixed #33301, swedish map renamed
* Sat Nov 08 2003 - olh@suse.de
- add convert-kbd-mac.sed to convert mac maps to 2.6 linuxkeycodes
load usb drivers unconditionally in runlevel S
* Thu Oct 30 2003 - schwab@suse.de
- /etc/init.d/kbd: usbdevfs has been renamed to usbfs, use /proc/bus/usb
instead.
* Fri Oct 17 2003 - kukuk@suse.de
- Really delete wrong manual pages
* Fri Oct 17 2003 - kukuk@suse.de
- Fix filelist for SPARC
* Wed Oct 01 2003 - garloff@suse.de
- #31927: kbdrate was not called due to wrong path. Fixed.
- unicode_start: Collapse to one setfont call (as in initscript).
* Fri Sep 19 2003 - garloff@suse.de
- #31153: kbd_mode -a/-u is not good under X11. Skip unicode_start/
stop dir non-tty devices.
- Collapse setfont calls for font, unimap and screenmap into one.
Otherwise the font is overridden with default8x16 again.
* Tue Sep 16 2003 - garloff@suse.de
- Fix bug #30097: When switching from cz-us-qwertz to us, y and
z could be confused.
* Tue Sep 16 2003 - garloff@suse.de
- Add compose table compose.utf8 that uses symbolic names and thus
works regardless of encoding. Most useful for UTF-8.
- Fix bug #28481: We were writing the activation string to a read-
only fd.
* Thu Sep 11 2003 - mfabian@suse.de
- Bugzilla #30411: redirect "plus before udiaeresis ignored" and
similar warnings of "loadkeys --unicode" in Unicode_start
to /dev/null.
- Bugzilla #30496: don't write file to remember the keyboard
map to /.kbd/.keymap_sv.
- add program "testutf8" by Gerd Knorr <kraxel@suse.de> to be able
to check whether a terminal is in UTF-8 mode or not.
* Tue Sep 09 2003 - mfabian@suse.de
- Bugzilla #28720: "kbd_mode", "setfont", and "fgconsole" have
moved from /usr/bin/ -> /bin. Therefore, /etc/init.d/kbd
stopped working correctly (I thought I had fixed #28720 before
but because these binaries moved it broke again).
* Sun Sep 07 2003 - mfabian@suse.de
- save the old keymap in "unicode_start" and reload it in
"unicode_stop" because "dumpkeys | loadkeys --unicode" cannot
be reverted.
* Tue Sep 02 2003 - mmj@suse.de
- Add sysconfig metadata [#28855]
* Thu Jul 31 2003 - kukuk@suse.de
- serial was renamed to setserial [Bug #28353]
* Thu Jul 31 2003 - garloff@suse.de
- Fix dumpkeys fix [#28339].
* Thu Jul 31 2003 - garloff@suse.de
- Fix various DESTDIR ... related Makefile headaches
- Port patches to 1.08, all binaries have been moved to /bin
- Tentative fix for dumpkeys, using the large NR_KEYS from 2.6
kernel but running on 2.4 [#28339]
- Use RPM_OPT_FLAGS (with -Os appended)
* Wed Jul 30 2003 - garloff@suse.de
- Update to kbd-1.08:
* loadkeys: fix for bison 1.50
* Makefile cleanups
* Patch to not map PrtScr to Ctrl-\ (but only Ctrl-PrtScr) merged
* fi-latin1/9.map changed
* bg-cp1251.map, il-heb.map, sr-cy.map, fr-latin9.map
- Update to kbd-1.07:
* showfont -> showconsolefont rename (clash with X)
* loadkeys fixes: addfunc(), relative symlinks
* getfd: Try devfs names as well
* manpgae for fgconsole
* cyr-sun16.psfu
* swedish: rename to se-latin1.map to sv-latin1.map
* cp1251_to_uni, koi8-r_to_uni, koi8-u_to_uni.trans
* se-fi-* for Northern Sami
* nl3.map -> nl.map
* Fri Jun 06 2003 - mfabian@suse.de
- fix Bugzilla #27141: add the necessary commands to setup the
Linux consoles for Unicode or non-Unicode respectively
to /etc/init.d/kbd, similar to what is done in
/usr/sbin/{unicode_start,unicode_stop}.
- remove installed but unpackaged file resizecons.8.gz
* Tue Mar 11 2003 - garloff@suse.de
- Add sysconfig metadata to sysconfig/console as well [Bug #22625]
* Sat Mar 08 2003 - kukuk@suse.de
- Don't reset the status, so that final result does not only
report the status of the last command [Bug #19823]
* Thu Feb 20 2003 - mmj@suse.de
- Add sysconfig metadata [#22625]
* Tue Feb 18 2003 - kukuk@suse.de
- Don't set KBD_RATE and KBD_DELAY per default
* Sat Dec 07 2002 - garloff@suse.de
- Add compose.latin1.cedilla which is a variant which maps accented
c to cedilla. [Bug #21008]
- Use alarm(5) to limit waiting for (potentially non-existing) kbd
controller instead of loop (with machine-dependent timeout).
[Bug #22167]
* Fri Nov 08 2002 - schwab@suse.de
- Fix mac-de-latin1 keymap.
- Fix misaligned columns in full table dump.
- Don't clobber keycode 0 where it is valid.
* Mon Oct 07 2002 - garloff@suse.de
- Don't write "Loading <file>" to stdout when --mktable is used.
[Bug #19952]
- Use larger timeout waiting for keyboard controller.
* Wed Sep 18 2002 - fehr@suse.de
- add updated keymaps us-acentos.map and br-abnt2.map provided
by miura@conectiva.com.br to suse-add.tar.bz2 (Bug #19791)
* Mon Aug 26 2002 - sndirsch@suse.de
- remember NumLock BIOS state in /var/run/numlock-on; required
later for $HOME/.xinitrc (Bug #18248)
* Sat Aug 24 2002 - olh@suse.de
- do the symlinks really in mac/all
* Mon Aug 19 2002 - garloff@suse.de
- Add %%insserv_prereq and %%fillup_prereq (bug #17892)
* Thu Aug 15 2002 - olh@suse.de
- fix some keys with kbd-1.06-mac-dk.diff
do the symlinks in mac/all instead of mac/
* Mon Aug 05 2002 - olh@suse.de
- merge boot.setup into rckbd (#16476)
* Fri Jul 26 2002 - garloff@suse.de
- Don't wait infinitely long for bit 1 of port 0x64 being 0.
Blocker #17248.
- Make loadkeys report successful keytable load to stdout instead
of stderr. Bug #17168.
* Wed Jul 24 2002 - olh@suse.de
- do not run boot.setup on iSeries by accident, kbdrate is bad
* Fri Jul 19 2002 - olh@suse.de
- kbdrate does only work on PC style hardware, hangs on USB and ADB
* Thu Jul 11 2002 - garloff@suse.de
- Removed dangling link to www.claudio.ch (bug #16933)
* Fri Jul 05 2002 - kukuk@suse.de
- Use %%ix86 macro
* Thu Jul 04 2002 - uli@suse.de
- search for x86-64 keymaps in i386
* Mon Jun 17 2002 - sndirsch@suse.de
- sysconfig.keyboard: set KBD_NUMLOCK to "bios" (Bug #16594)
* Fri Jun 14 2002 - olh@suse.de
- no loadkezs, sane systems have <TAB>
* Fri Jun 14 2002 - sndirsch@suse.de
- boot.setup: handle Numlock depending on BIOS setting
if KBD_NUMLOCK is set to "bios"
- sysconfig.keyboard: added "bios" to KBD_NUMLOCK description
* Mon Jun 10 2002 - garloff@suse.de
- Convert some missing maps.
* Fri Jun 07 2002 - garloff@suse.de
- Convert Shift Tab to Meta_Tab. (#16512)
* Thu Jun 06 2002 - garloff@suse.de
- Add KBD_DISABLE_CAPS_LOCK feature.
* Thu Jun 06 2002 - garloff@suse.de
- Add kbd rate and delay report (#16050).
- Move fbset to X-SuSE-Should-Start.
* Sun Mar 17 2002 - garloff@suse.de
- Fixed all i386 keymaps with 99(PtrScr) = Control_backslash
to VoidSymbol (but keeping the old meaning with Control)
Fixes bug #8380.
* Sun Mar 17 2002 - garloff@suse.de
- Changed init script to accept a keymap that is specified by
absolute path. (Bug #14997)
* Sun Mar 17 2002 - garloff@suse.de
- Add some missing third (AltGr) functions to the number keys
for fr_CH/de_CH-latin and sg-latin1. (Adresses bug #9368)
* Tue Mar 12 2002 - olh@suse.de
- load usb keyboard in runlevel s and 1 (#14253)
* Mon Mar 04 2002 - garloff@suse.de
- Add Rumanian keyboard layout (ro-latin2.map) donated by
Manfred Pohler. (#13008)
* Fri Mar 01 2002 - ro@suse.de
- force activation of boot.setup using "Y"
* Mon Feb 18 2002 - ro@suse.de
- don't clobber return code with test
* Thu Feb 14 2002 - garloff@suse.de
- Revert chvt change by default, as it causes too much flickering
of the screen. It can be manually enabled though. (#12151)
* Tue Feb 12 2002 - ro@suse.de
- added missing "fi" in boot.setup
* Tue Feb 12 2002 - schwab@suse.de
- Fix uses of chvt in init script.
* Fri Feb 08 2002 - ro@suse.de
- return (not implemented) for stop and (unknown) for status
in boot.setup
* Fri Feb 08 2002 - garloff@suse.de
- Split /etc/sysconfig/console into keyboard and console.
* Fri Feb 08 2002 - garloff@suse.de
- Move keyboard data to /usr/share (it's not arch dependant)
- Try to make setting console fonts work with non-SuSE kernels
by using chvt. (bug #12151)
* Fri Feb 08 2002 - garloff@suse.de
- Remove duplicated data, rename conflicting
- Don't map PrtScr to Control_backslash (SIGQUIT) by default,
Control PrtScr will still produce it. (bug #8380)
- Remove test for "none" ifr unicode and screenmaps ("none" can be
different from not calling setfont)
- Handle empty KEYTABLE (fixes bug #12976)
- Clarified comments for the various CONSOLE settings
* Fri Feb 08 2002 - garloff@suse.de
- kbd-1.06:
* Lots of our patches got merged :-)
* Fonts added
* lat7u.uni -> iso07u.uni, added lat7.uni
* Scancode docs removed, see
http://www.win.tue.nl/~aeb/linux/kbd/scancodes.html
* various minor corrections
* Wed Feb 06 2002 - werner@suse.de
- Add KBD_SCRLOCK variable to make it possible to enable this
- Move setleds from /usr/bin to /sbin and set compatiblity symlink
(mainly for infra red keyboards)
* Sat Jan 12 2002 - garloff@suse.de
- Move COMPOSETASBLE to /etc/sysconfig/console, where all the other
console and keyboard related settings are.
* Wed Jan 09 2002 - ro@suse.de
- fixed typo in boot.setup
* Tue Jan 08 2002 - ro@suse.de
- moved COMPOSETABLE to /etc/sysconfig/keyboard (#12736)
* Thu Dec 13 2001 - ro@suse.de
- moved rc.config.d -> sysconfig
* Tue Dec 11 2001 - schwab@suse.de
- Fix boot script for last change.
* Thu Dec 06 2001 - ro@suse.de
- renamed rc.config.d.kbd to rc.config.d.console
- fixed bug for ppc
* Wed Dec 05 2001 - ro@suse.de
- moved KBD related variables from aaa_base to here
- moved boot.setup from aaa_base to here
- use fillup_and_insserv macro
* Fri Nov 30 2001 - olh@suse.de
- handle the ppc64 in machine detection
* Mon Sep 17 2001 - garloff@suse.de
- Add loadkezs->loadkeys symlink (#10752)
* Sat Sep 01 2001 - olh@suse.de
- no keyboard on iSeries available
* Wed Aug 29 2001 - olh@suse.de
- allow querty/us.map.gz as KEYTABLE, fix mac-dk map
* Wed Aug 08 2001 - olh@suse.de
- handle ppc64 in KBDLIB path as i386
* Mon Aug 06 2001 - kukuk@suse.de
- Fix comment about init script location [Bug #9494]
* Sat Jul 21 2001 - olh@suse.de
- update search path for mac keymaps
* Tue Jul 17 2001 - garloff@suse.de
- changed return value of status to 3 if not running. Fixes
bug #9052.
* Wed Jul 11 2001 - bjacke@suse.de
- switch , to . on number block for {de,fr}_CH keymaps
* Sun Jun 17 2001 - schwab@suse.de
- setfont: output activation string on selected console, not stdout.
* Fri May 11 2001 - garloff@suse.de
- Remove compose combinations from compose.latin1.add that have
been merged into the official compose.latin1.
* Fri May 11 2001 - garloff@suse.de
- bzip2 sources.
* Fri May 11 2001 - garloff@suse.de
- Apply fixes to kbd iint script from Werner Fink:
* Dump keymap to /etc/defkeymap after the compose table has been
loaded. Do it whenever it changed.
* In runlevels N, S, 1, we might not have /usr available.
Don't issue tons of "failed" messages but be happy with
defkeymap.
* Tue May 08 2001 - garloff@suse.de
- Remove redundant sun keymaps from suse-add.
- Especially remove sunkeymap which reintroduces a fixed bug to kbd
- Remove second .map from sunt4-no-latin1.map.map
* Tue May 08 2001 - garloff@suse.de
- On request of Andries (aeb): Removed the Shift-Ctrl mapping
of Compose but instead put it on Ctrl-.
- Added compose.ctrlperiod to achieve this.
* Mon May 07 2001 - garloff@suse.de
- Remove double fontwidth assignment (cosmetical)
- Add fbset to init script prerequisites
* Wed May 02 2001 - garloff@suse.de
- Fix bug #7474: (defkeymap)
keycode 97 = Control Compose is wrong. Use shift keycode ...
- Make Shift-Ctrl and Ctrl-Shift behave the same
- bzip2 the suse_add sources instead of gzip
* Wed Apr 25 2001 - garloff@suse.de
- Corrections to the file list:
* Install fg_console
* Install unicode_start/stop plus manpages
* Don't install resizecons/manpage on non-i386 archs
* Tue Apr 24 2001 - garloff@suse.de
- correct y <-> z in mac-de_CH has erroneously been removed from
last patch. Corrected.
* Tue Apr 24 2001 - garloff@suse.de
- Use KBD_TTY to determine which consoles need to be manipulated,
not non-functional /dev/tty[1-24].
* Tue Apr 24 2001 - garloff@suse.de
- Add some sun keymaps from console-data to suse_add. (#6109)
- Add original sun12x22.psfu and suse12x22 under its true name.
* Mon Apr 23 2001 - garloff@suse.de
- Finalized merging with 1.05: SuSE patch shrinked from 116k to
9k :-)
- fillup now defaults to clear the compose table in case one is
loaded and gives some more examples.
- Set font on all consoles /dev/tty[1-24] (bugzilla #5812)
- install kbd_fonts before kbd, so the latter has the possibility
to overwrite/update the fonts from the kbd_fonts pack
* Sun Apr 22 2001 - bjacke@suse.de
- correct y <-> z in mac-de_CH
- add mac_dvorak keymap
- move de_CH from qwerty to qwertz
* Fri Apr 20 2001 - garloff@suse.de
- Update to kbd-1.0.5 which incorporates the patches from olh and
me.
* Fri Mar 16 2001 - ro@suse.de
- create directory sbin in buildroot
* Sun Dec 17 2000 - garloff@suse.de
- Fix lat5 fonts
- ShiftCtrl now leaves the Ctrl scancodes untouched and just
changes the ShiftCtrl meaning to Compose.
* Wed Dec 13 2000 - olh@suse.de
- use runlevel S and mount proc with -n
* Fri Dec 08 2000 - schwab@suse.de
- Use extended compose table also on ia64.
- Fix typos.
* Thu Dec 07 2000 - werner@suse.de
- Add begin and end mark of LSB header
- Move chvt, openvt, deallocvt to /bin and set link bak to /usr/bin
* Wed Dec 06 2000 - garloff@suse.de
- Argh: loadkeys does not merge the compose table; just the key
definitions. Make compose.latin1.add include compose.latin1 and
update docu accordingly to account for this.
* Wed Dec 06 2000 - garloff@suse.de
- Also include the mapping of the compose key in the COMPOSEMAP
variable and offer winkeys and shiftctrl. Default on i386 and
alpha.
- Update README.SuSE to document this.
- This together with the changes from Dec 4 should address the
problems with some keytables (bug #4275).
* Tue Dec 05 2000 - olh@suse.de
- add mac-fr_CH.map
* Mon Dec 04 2000 - garloff@suse.de
- New startup script: Separate KEYMAP from COMPOSE maps. Add new
rc.config variable COMPOSEMAP to allow setting of compose combi-
nations defaulting to "latin1 latin1.add"
- Disable the formerly patched in inclusion of compose maps in
the keymaps, as we have a proper separation now.
* Mon Dec 04 2000 - garloff@suse.de
- Add de_CH ("schwyzerdütsch") keymap.
- Initialize consoles 1-24 (instead of 1-6) with CONSOLE_MAGIC
(Bugzilla #4468)
* Tue Nov 28 2000 - kukuk@suse.de
- New initscript in /etc/init.d
* Fri Oct 20 2000 - kukuk@suse.de
- Fix filelist on SPARC
* Thu Oct 05 2000 - olh@suse.de
- remove mac-de2-ext.map, obsolete
* Thu Oct 05 2000 - olh@suse.de
- check for /proc/cpuinfo before mounting proc
* Tue Sep 12 2000 - olh@suse.de
- mount proc on ppc, needed for runlevel S
* Tue Aug 22 2000 - olh@suse.de
- update spec file and use only one dif, add mac-pt map, fix maps
* Sat Aug 05 2000 - garloff@suse.de
- Only include kbdrate in kbd package, if it's not already in util
If not, install it in /sbin, just like util did before.
- Remove the README files and ERRORS from /usr/lib/kbd/consolefonts
* Fri Aug 04 2000 - kukuk@suse.de
- Add support for PS/2 keyboards and serial console on SPARC
* Tue Aug 01 2000 - garloff@suse.de
- Update to version 1.03wip adding support for a PSF format and
UTF8, including sequences.
- Apply old patches; split in mac keytables and general patch
- Add support for fonts wider than 8 pixels
- Map compose key (W*n95 Menu Key and Shift-RightCtrl) and include
additional compose combinations for i386 us and de keymaps
- Add suse12x22.psf font to suse-add.tar.gz and remove fonts, map,
transtables that are already included in 1.03wip.
- Add %%clean section to spec file
- Install more docu and move font specific docu to a subdir
- Add README.SuSE
* Mon Jul 03 2000 - olh@suse.de
- merge keymaps from 6.4 for mac, be,it,de_CH,fi,dk
* Tue Jun 06 2000 - olh@suse.de
- fix mac specific links to nonexistant maps,
add mac/include to search path
* Wed May 31 2000 - werner@suse.de
- Import script code from boot.setup which is kbd specific
- User new rc.status shell functions
- Move S20kbd to S10kbd (after nfs import init)
* Thu May 25 2000 - olh@suse.de
- update us-map, get rid of misnamed maps
use includes for mac-*
* Mon May 08 2000 - wede@suse.de
- suse-add: Lithuanian console fonts and mappings added:
/usr/lib/kbd/consolefonts/lat7.psf.gz
/usr/lib/kbd/consolefonts/lt-brim-8x14.psfu.gz
/usr/lib/kbd/consoletrans/lt-brim.uni
- kbd.spec: use of %%{_defaultdocdir}
* Sun Apr 30 2000 - olh@suse.de
- update mac-fr.map
* Wed Apr 05 2000 - olh@suse.de
- fix link to french mac map
* Tue Mar 28 2000 - olh@suse.de
- use Buildroot
add some dummy maps for mac
* Mon Mar 20 2000 - kukuk@suse.de
- suse-add: Add more sun keymaps
* Thu Mar 16 2000 - schwab@suse.de
- kbd.rc: Use i386 keymaps also on ia64 and alpha.
* Tue Feb 29 2000 - werner@suse.de
- Close first part of bug #592
* Search with shell tools not with find
* Dump /etc/defkeymap.map if not exists
* Use /etc/defkeymap.map as a fallback if no keymap is found
- Move loadkeys from /usr/bin/ to /bin/ and set a symbolic link
for backward compatibility
- Add openvt to the file list
* Sun Feb 27 2000 - kukuk@suse.de
- Move /usr/man -> /usr/share/man
* Thu Dec 09 1999 - olh@suse.de
- Added i386 keys to mac-de.map, @|\~
make Symlink mac -> ppc relative
* Thu Nov 11 1999 - kukuk@suse.de
- kbd.rc: Add support for SPARC.
* Tue Sep 28 1999 - ml@suse.de
- Added symlink keymaps/ppc -> keymaps/mac in specfile.
Added lat9-[12,14,16].psfu consolefonts to suse_add.tar.gz
* Mon Sep 13 1999 - bs@suse.de
- ran old prepare_spec on spec file to switch to new prepare_spec.
* Thu Jul 01 1999 - ro@suse.de
- don't try to write /var/run/keymap if mounted ro (closing bug 20)
* Fri Jun 18 1999 - uli@suse.de
- cleaned up patch
* Wed Jun 16 1999 - uli@suse.de
- patched de-latin1.map to allow usage of Euro symbol with
lat0-* console fonts
* Mon Jun 07 1999 - uli@suse.de
- added br-abnt.map and us-acentos.map to suse-addon
* Tue Apr 13 1999 - ml@suse.de
- added lt.baltic.map to suse-addon
* Sun Apr 11 1999 - ml@suse.de
- added a patch for correct KOI8-U (Ukrainian) support
- added screenmap for baltic to suse-addon
* Tue Apr 06 1999 - ml@suse.de
- added a patch harald könig for us.map
* Mon Apr 05 1999 - ml@suse.de
-switch to version 0.99; main change of package: gettext for nls-support
-changes for us: removes the patches for sk-qwertz and sk-qwerty map
and the map br-abnt2.map (included now)
-added /usr/share/locale/*/LC_MESSAGES/kbd.mo to the %%files-section
of the specfile for nls-support
* Thu Mar 11 1999 - ml@suse.de
- Changed to kbd-0.97
- lat2u.uni -> now included -> removed from suse-diff
- Pl02.map included into suse-addons and removed from diff
- Same for br-abnt2.map
- added ru3/4 map to suse-addon
- renamed the suse-iso07-extensions to lat7u.*
- removed #mkdir -p $DOC; #mv $K/consolefonts/README* $DOC/ "
from specfile; now already included in kbd-0.97-makefile
- added ./configure --datadir (which will be best?)
- european default now lat1-16.psfu -> mantel & fehr
- added Cyr_a*.psf* to suse-addons, removed old Cyr-files and set links
- added cyralt.uni
- patched sk-qwertz and sk-qwerty map
* Mon Feb 01 1999 - ro@suse.de
- resizecons is not built on alpha
* Mon Jan 18 1999 - ml@suse.de
- added finally iso07.uni (missed it on Fri Jan 8 10:28:24 MET 1999)
To do this, two mv-commands in the spec-file have been added, that move
iso.07.uni to iso07.uni.old and the new one to iso07.uni
* Wed Jan 13 1999 - ml@suse.de
- added latin2u.scrnmap
- added sk-qwertz.map
* Fri Jan 08 1999 - ml@suse.de
- added lat2u-16.psf and lat2u.uni
* Fri Jan 08 1999 - rolf@suse.de
- added the following keymaps: br-abnt2, Pl02, sk-qwerty
- added the new version of iso07 fonts with SuSE extensions including
unicode map file
* Sun Dec 13 1998 - bs@suse.de
- removed /var/adm/setup/setup.fontconfig
* Sat Dec 05 1998 - bs@suse.de
- let start script say, that a "keymap" is loaded.
* Thu Nov 26 1998 - bs@suse.de
- made startup script a little bit smoother (let loadkeys not print
a long path).
* Thu Nov 19 1998 - bs@suse.de
- fixed second find call.
* Tue Nov 17 1998 - bs@suse.de
- moved loadkeys to /usr/bin again (the kbd package does not work without
a mounted /usr)
- created /sbin/init.d/kbd
- removed Makefile.Linux - was not used anymore :(
* Thu Oct 29 1998 - ro@suse.de
- output "Loading $KEYMAP" to stdout (not stderr)
* Tue Sep 22 1998 - ro@suse.de
- update to 0.96a
- for glibc define _GNU_SOURCE where getopt is used
* Mon Oct 20 1997 - ro@suse.de
- ready for autobuild
* Tue Jun 03 1997 - bs@suse.de
- removed man page console.4.gz (included in ldpman)
* Sun Apr 13 1997 - florian@suse.de
- update to new version 0.93
- mv documentation to /usr/doc

3
kbd_fonts.tar.bz2 Normal file
View File

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

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

35
repack_kbd.sh Normal file
View File

@ -0,0 +1,35 @@
#! /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
case "$in" in
*.tar.gz)
tar zxf $in -C $tmpdir
;;
*.tgz)
tar zxf $in -C $tmpdir
;;
*.tar.bz2)
tar jxf $in -C $tmpdir
;;
*.tar)
tar xf $in -C $tmpdir
;;
*)
echo "hmm, '$in' is not a tar ball?"
rmdir $tmpdir
exit 1
esac
echo removing files...
find $tmpdir -iname \*agafari\* | tee /dev/tty | xargs rm
tar jcf $in-repack.tar.bz2 -C $tmpdir .
rm -rf $tmpdir

3
suse-add.tar.bz2 Normal file
View File

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

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

64
sysconfig.keyboard Normal file
View File

@ -0,0 +1,64 @@
## Path: Hardware/Keyboard
## Description: Keyboard settings
## Type: string
## Default: ""
## ServiceRestart: kbd
#
# Keyboard settings for the text console
#
# Keyboard mapping
# (/usr/share/kbd/keymaps/)
# e.g. KEYTABLE="de-latin1-nodeadkeys", "us" or empty for US settings
#
KEYTABLE=""
## Type: integer
## Default:
#
# Keyboard delay time in ms (250, 500, 750, 1000)
KBD_DELAY=""
## Type: string(2.0,2.1,2.3,2.5,2.7,3.0,3.3,3.7,4.0,4.3,4.6,5.0,5.5,6.0,6.7,7.5,8.0,8.6,9.2,10.0,10.9,12.0,13.3,15.0,16.0,17.1,18.5,20.0,21.8,24.0,26.7,30.0)
## Default:
#
# Keyboard repeat rate (2.0 - 30.0)
KBD_RATE=""
## Type: list(bios,yes,no)
## Default: bios
#
# NumLock on? ("yes" or "no" or empty or "bios" for BIOS setting)
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: "tty1 tty2 tty3 tty4 tty5 tty6"
#
# ttys for the above settings
# Example: "tty1 tty2"
# "" for all tty's
#
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);
}
}