Changes for 0.98 (aeb):
o Added internationalization and Dutch texts (nl.po)
+
+Changes for 1.00 (aeb):
+
+o Introduced psf2 fonts, allowing one to describe a font position
+ with a Unicode sequence (base character with combining accents).
+o Reorganized fonts; added Unicode table to most of them.
+ The consolefonts directory got a subdirectory partialfonts.
+ The Unicode maps got a directory of their own.
+o Moved kbdrate from util-linux to here.
+o Added -s (sort) option to getunimap.c.
+o Setfont now accepts several psf2 fonts, each of arbitrary length.
+ Setfont now accepts certain codepage fonts.
+ Setfont now accepts a text file containing a list of fonts to load.
+o Made distinction between koi8-r and koi8-u.
+o spawn_console and spawn_login invoke openvt, not open.
+The file
+ kbdrate.c
+is Copyright (C) 1992 Rickard E. Faith.
+
The files
dumpkeys.c loadkeys.y analyze.l ksyms.c ksyms.h
showkey.c keymaps.5 loadkeys.1 dumpkeys.1 showkey.1
are Copyright (C) 1993 Eugene G. Crosser.
The files
- psfaddtable.c psfgettable.c psfstriptable.c
psfaddtable.1 psfgettable.1 psfstriptable.1
are Copyright (C) 1994 H. Peter Anvin.
The files
chvt.c clrunimap.c deallocvt.c fgconsole.c findfile.c
getfd.c getkeycodes.c getunimap.c kbd_mode.c loadunimap.c
- resizecons.c screendump.c setkeycodes.c setleds.c
- setmetamode.c setvesablank.c showfont.c spawn_console.c
+ psffontop.c psfxtable.c resizecons.c screendump.c setkeycodes.c
+ setleds.c setmetamode.c setvesablank.c showfont.c spawn_console.c
spawn_login.c
chvt.1 deallocvt.1 kbd_mode.1 setleds.1 setmetamode.1
getkeycodes.8 loadunimap.8 resizecons.8 setkeycodes.8
kbd.FAQ.*
(and changes to earlier mentioned programs)
-are Copyright (C) 1994-1998 Andries E. Brouwer.
+are Copyright (C) 1994-1999 Andries E. Brouwer.
All files in this package may be freely copied under the terms
of the GNU General Public License (GPL), version 2, or at your
# also change paths.h.
OLDKEYMAPDIR = keytables
KEYMAPDIR = keymaps
+UNIMAPDIR = unimaps
FONTDIR = consolefonts
+PARTIALDIR= partialfonts
TRANSDIR = consoletrans
KEYMAPSUBDIRS = include sun amiga atari mac i386/azerty i386/dvorak i386/fgGIod i386/qwerty i386/qwertz i386/include
# Do not use GZIP - it is interpreted by gzip
MYGZIP = gzip -f -9
-DIR = kbd-0.99
+DIR = kbd-1.01wip
-SUBDIRS = src openvt
-
-include ./make_include
-ifeq "$(ENABLE_NLS)" "yes"
-SUBDIRS := $(SUBDIRS) po
-endif
+SUBDIRS = src openvt po
.EXPORT_ALL_VARIABLES:
all:
for i in $(SUBDIRS); do (cd $$i && $(MAKE) all); done
- case `arch` in *86*) \
- cd src && $(MAKE) i386 ;; \
- esac
@echo "Done. You can now do make install"
-# compress data files - do not touch the distribution but copy first
-$(KEYMAPDIR)_Z:
- cp -r $(KEYMAPDIR) $(KEYMAPDIR)_Z
- cd $(KEYMAPDIR)_Z && $(MYGZIP) */*.map */*/*.map
-
-$(FONTDIR)_Z:
- cp -r $(FONTDIR) $(FONTDIR)_Z
- cd $(FONTDIR)_Z && $(MYGZIP) * && gunzip README*
-# (not yet screenmaps - some other time)
+install: install-progs install-data install-man
-install: $(KEYMAPDIR)_Z $(FONTDIR)_Z
+install-progs:
for i in $(SUBDIRS); do (cd $$i && $(MAKE) install); done
- case `arch` in *86*) \
- cd src && $(MAKE) install386 ;; \
- esac
- for i in man?; do \
- install -d -m 755 $(MANDIR)/$$i; \
- install -m 644 $$i/*.[0-9] $(MANDIR)/$$i; \
- done
- rm -f $(MANDIR)/man5/keytables.5
- install -d -m 755 $(DATADIR)
- install -d -m 755 $(DATADIR)/$(FONTDIR)
- install -m 644 $(FONTDIR)_Z/* $(DATADIR)/$(FONTDIR)
- install -d -m 755 $(DATADIR)/$(TRANSDIR)
- install -m 644 $(TRANSDIR)/* $(DATADIR)/$(TRANSDIR)
- install -d -m 755 $(DATADIR)/$(KEYMAPDIR)
- install -d -m 755 $(DATADIR)/$(KEYMAPDIR)/i386
- for i in $(KEYMAPSUBDIRS); do \
- install -d -m 755 $(DATADIR)/$(KEYMAPDIR)/$$i ;\
- install -m 644 $(KEYMAPDIR)_Z/$$i/* $(DATADIR)/$(KEYMAPDIR)/$$i ;\
- done
- @echo "Done. You may want to remove old keymaps with"
- @echo " rm -rf $(DATADIR)/$(OLDKEYMAPDIR)"
- @echo "But be careful to preserve your default map if it is"
- @echo "nonstandard, and to adapt any scripts in rc.local or so."
+
+install-man:
+ cd man && $(MAKE) install
+
+install-data:
+ cd data && $(MAKE) install
tar: reallyclean # analyze.c loadkeys.c
cd ..; tar cvfz $(DIR).tar.gz ./$(DIR)
clean:
for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean); done
- rm -rf $(KEYMAPDIR)_Z $(FONTDIR)_Z
+ cd man && $(MAKE) clean
+ cd data && $(MAKE) clean
reallyclean distclean spotless: clean
find . -name "*~" -exec rm {} ";"
for i in $(SUBDIRS); do (cd $$i && $(MAKE) distclean); done
rm -f Makefile src/Makefile make_include defines.h
- rm -f man1/dumpkeys.1 man1/loadkeys.1 man8/setfont.8
-This is kbd-0.98.tar.gz
+This is kbd-1.00.tar.gz
This package contains keytable files and keyboard utilities compatible
with kernel version 1.1.54 and later. Setfont requires 1.1.92 or later.
To install this package, unpack it somewhere and issue the commands
"./configure", "make" and "make install". This copies the utilities
to /usr/bin, man pages to /usr/man/man{1,4,5,8} and data files to the
-subdirectories keymaps, consolefonts, consoletrans and videomodes of
-the datadirectory chosen during configure, probably /usr/lib/kbd.
+subdirectories keymaps, unimaps, consolefonts, consoletrans and videomodes
+of the datadirectory chosen during configure, probably /usr/lib/kbd.
Older versions of kbd used /usr/lib/kbd/keytables (instead of .../keymaps).
This directory can now be removed. (Just to be sure, preserve a copy
Report problems with this package to Andries Brouwer <aeb@cwi.nl>.
-March 1999
+September 1999
#!/bin/sh
#
-# Very simple configure: only DATADIR is variable.
-#
# Call:
# ./configure
# or
;;
esac
-for i in Makefile src/Makefile man1/dumpkeys.1 man1/loadkeys.1 man8/setfont.8; do
+for i in Makefile src/Makefile man/man1/dumpkeys.1 man/man1/loadkeys.1 man/man8/setfont.8; do
sed -e "
s,@datadir@,$datadir,
" $i.in > $i
compile="$CC $CFLAGS $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1"
static_compile="$CC -static $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1"
-rm -f make_include conftest.c conftest
+rm -f conftest.c conftest
+
+#
+# 0. Figure out architecture (one of i386, alpha, sparc, arm, m68k, mips)
+#
+ARCH=`uname -m | sed s/i.86/i386/`
+echo "ARCH=$ARCH" >> make_include
#
# 1. Do we have <locale.h>?
rm -f conftest conftest.c
#
-# 2. Do we have <libintl.h>?
+# 2. For lib/nls.h: do we have <libintl.h> and gettext() ?
#
-echo "
+echo '
#include <libintl.h>
-main(){ exit(0); }
-" > conftest.c
+main(int a, char **v){
+ if (a == -1) /* false */
+ gettext("There is no gettext man page\n");
+ exit(0);
+}
+' > conftest.c
eval $compile
if [ $nls = 1 ]; then
if test -s conftest && ./conftest 2>/dev/null; then
- echo '#define HAVE_libintl_h' >> defines.h
- echo "You have <libintl.h>"
- echo '#define ENABLE_NLS' >> defines.h
- echo 'ENABLE_NLS=yes' >> make_include
- echo "Assuming that you want to enable NLS support."
- echo "(Otherwise, edit defines.h)"
+ echo '#define HAVE_libintl_h' >> defines.h
+ echo "You have <libintl.h> and gettext()"
+ echo '#define ENABLE_NLS' >> defines.h
+ echo "Assuming that you want to enable NLS support."
+ echo "(Otherwise, edit defines.h and delete the line with ENABLE_NLS)"
+ ENABLE_NLS=yes
else
echo "You don't have <libintl.h>"
- echo 'ENABLE_NLS=no' >> make_include
+ ENABLE_NLS=no
fi
else
echo "NLS disabled"
- echo 'ENABLE_NLS=no' >> make_include
+ ENABLE_NLS=no
fi
rm -f conftest conftest.c
+
+
+#
+# 3. Does xgettext exist and take the option --foreign-user?
+#
+if (test $ENABLE_NLS = yes && type xgettext > /dev/null 2>&1); then
+ msg=`xgettext --foreign-user 2>&1 | grep unrecognized`
+ if test -n "$msg"; then
+ echo "FOREIGN = " >> make_include
+ else
+ echo "FOREIGN = --foreign-user" >> make_include
+ fi
+ echo "HAVE_XGETTEXT=yes" >> make_include
+else
+ echo "HAVE_XGETTEXT=no" >> make_include
+fi
+++ /dev/null
-Fragment of the "readme" file in Joel Hoffman's codepage.tar.Z
-==============================================================
-
-File readme. June 14, 1992.
-
-...
-I have included two sample fonts, one written by myself and the other
-by Dimitri Vulis (dlv@cunyvms1.BITNET). Both are in the public
-domain. My font, 972.cp, is a Hebrew font. The other is 880.cp, a
-Cyrilic font (Russian etc.).
-
-The Hebrew font uses the same encoding scheme as the VT-100's in
-Israel, so any software that works on those will now run on Linux
-(e.g., my hebrew.el package for GNU Emacs).
-
-I'm told 880.cp follows the relevent Russian standard, so I suppose it
-does.
-
-This package, while (c) 1992 by Joel M. Hoffman, can be used as freely
-as any other part of Linux.
-
-Files:
- 972.cp Font data for 25-line Hebrew font.
- 880.cp Font data for Cyrilic font.
-
-===========================================================
-
-Elsewhere I found fonts 880-14.psf, 880-16.psf, 972-14.psf, 972-16.psf,
-but these turn out to come from 880.cp and 972.cp, and since setfont
-now also understands *.cp files I deleted the four abovementioned fonts.
-
-===========================================================
-
-H. Peter Anvin writes:
-...
-I developed the Latin-1 *.psf fonts; Pavel Zaboj did the Latin-2
-ones. SLS took them directly from Pavel's national package.
-A DOS-hosted PSF font editor is available on eecs.nwu.edu.
-
-Daniel Quinlan sent a new version of lat1-16.psf due to hpa and him.
-
-Primoz Peterlin <peterlin@biofiz.mf.uni-lj.si> corrected lat2-??.psf.
-
-===========================================================
-
-The font default8x16 is from my hardware.
-Bruno Haible contributed def2_8x16.
-
-The fonts iso*.* are due to Kosta Kostis (kosta@blues.sub.de)
-and were obtained from
-ftp.uni-erlangen.de:pub/doc/ISO/charset/isofont101.tar.gz
-
-The fonts gr.* are due to Sarantos Kapidakis (sarantos@ics.forth.gr).
-He writes: "I am sending you the greek fonts, for 8x14 and 8x16.
-They follow the ELOT928 standard."
-
-Paul Gortmaker (paul@rasty.anu.edu.au) contributed ugly_l
-(which I removed again because now it can be found as 8x16alt
-in his collection of fonts kbd_fonts.tar.gz obtainable from
-sunsite.unc.edu:/pub/Linux/system/Keyboards/ and from
-tsx-11.mit.edu:/pub/linux/sources/system/ ).
-
-Some more fonts can be found in
-sunsite.unc.edu:/pub/Linux/system/Keyboards/fontpack.tgz
-
-Raul D. Miller (rockwell@nova.umd.edu) made aply16.psf.
-Angelos Karageorgiou (angelos@netaxis.com) contributed gr*.psf.
-Ahmed Naas (ahmed@oea.xs4all.nl) contributed 16[1-5].cp.
-Daniel Yacob contributed the Ethiopic fonts (see README.Ethiopic).
-Ricardas Cepas (rch@pub.osf.lt) contributed LatArCyrHeb-*.psf
-and the lat4* fonts.
-==============================================================
-
-Since kbd-0.96, setfont will load compressed fonts.
-When I tried gzip and bzip2, the former was superior:
-uncompressed 543332 bytes, bzip2: 225285 bytes, gzip: 204039 bytes.
-
-aeb@cwi.nl
-
+++ /dev/null
-Greek fonts:
-
-iso07.* follows ISO 8859-7.
-
-737.cp - the MS/DOS code page 737.
-
-greek.psf and the files gr8x*.psf are very similar, but replace
- I-diaeresis, Y-diaeresis by integral (upper and lower half).
-
-Sotiris Tsimbonis <tsimbonis@rosehill-1.irc.gr> contributed
-gr737-8x11, gr737-8x8, gr737-8x8-2
-gr737-9x14, gr737-9x14-2, gr737-9x16, gr737-9x16-2
-gr737-9x16-medieval, gr928-9x14, gr928-9x16
-grcourier, grfixed
-(Too many similar fonts. Please tell me which I should delete.)
+++ /dev/null
-The format of a .PSF file is as follows:
-
-Byte Size of field Contents
-0 Word File ID, always 0436h
-2 Byte File mode
-
-=== FILE MODE 0: 256 character byte-aligned monofont (as used by EGA/VGA)
-
-3 Byte Height of characters in scan lines
-4... 256x[byte 3] bytes Font data; each character contains one byte
- per scan line, characters continuous
-
-=== FILE MODE 1: 512 character byte-aligned monofont
-
-3 Byte Height of characters in scan lines
-4... 512x[byte 3] bytes Font data; each character contains one byte
- per scan line, characters continuous
+++ /dev/null
-# This corresponds to KOI-8R except control characters (00-1F, 7F).
-# count=260
-0x000 U+0000 #
-0x001 U+263a # ☺
-0x002 U+263b # ☻
-0x003 U+2665 # ♥
-0x004 U+2666 # ♦
-0x005 U+2663 # ♣
-0x006 U+2660 # ♠
-0x007 U+2022 # •
-0x008 U+25d8 # ◘
-0x009 U+25cb # ○
-0x00a U+25d9 # ◙
-0x00b U+2642 # ♂
-0x00c U+2640 # ♀
-0x00d U+266a # ♪
-0x00e U+266b # ♫
-0x00e U+266c # ♬
-0x00f U+263c # ☼
-0x010 U+25b6 # ▶
-0x010 U+25ba # ►
-0x011 U+25c0 # ◀
-0x011 U+25c4 # ◄
-0x012 U+2195 # ↕
-0x013 U+203c # ‼
-0x014 U+00b6 # ¶
-0x015 U+00a7 # §
-0x016 U+25ac # ▬
-0x017 U+21a8 # ↨
-0x018 U+2191 # ↑
-0x019 U+2193 # ↓
-0x01a U+2192 # →
-0x01b U+2190 # ←
-0x01c U+221f # ∟
-0x01c U+2319 # ⌙
-0x01d U+2194 # ↔
-0x01e U+25b2 # ▲
-0x01f U+25bc # ▼
-0x020 U+0020 #
-0x021 U+0021 # !
-0x022 U+0022 # "
-0x023 U+0023 # #
-0x024 U+0024 # $
-0x025 U+0025 # %
-0x026 U+0026 # &
-0x027 U+0027 # '
-0x028 U+0028 # (
-0x029 U+0029 # )
-0x02a U+002a # *
-0x02b U+002b # +
-0x02c U+002c # ,
-0x02d U+002d # -
-0x02e U+002e # .
-0x02f U+002f # /
-0x030 U+0030 # 0
-0x031 U+0031 # 1
-0x032 U+0032 # 2
-0x033 U+0033 # 3
-0x034 U+0034 # 4
-0x035 U+0035 # 5
-0x036 U+0036 # 6
-0x037 U+0037 # 7
-0x038 U+0038 # 8
-0x039 U+0039 # 9
-0x03a U+003a # :
-0x03b U+003b # ;
-0x03c U+003c # <
-0x03d U+003d # =
-0x03e U+003e # >
-0x03f U+003f # ?
-0x040 U+0040 # @
-0x041 U+0041 # A
-0x042 U+0042 # B
-0x043 U+0043 # C
-0x044 U+0044 # D
-0x045 U+0045 # E
-0x046 U+0046 # F
-0x047 U+0047 # G
-0x048 U+0048 # H
-0x049 U+0049 # I
-0x04a U+004a # J
-0x04b U+004b # K
-0x04c U+004c # L
-0x04d U+004d # M
-0x04e U+004e # N
-0x04f U+004f # O
-0x050 U+0050 # P
-0x051 U+0051 # Q
-0x052 U+0052 # R
-0x053 U+0053 # S
-0x054 U+0054 # T
-0x055 U+0055 # U
-0x056 U+0056 # V
-0x057 U+0057 # W
-0x058 U+0058 # X
-0x059 U+0059 # Y
-0x05a U+005a # Z
-0x05b U+005b # [
-0x05c U+005c # \
-0x05d U+005d # ]
-0x05e U+005e # ^
-0x05f U+005f # _
-0x060 U+0060 # `
-0x061 U+0061 # a
-0x062 U+0062 # b
-0x063 U+0063 # c
-0x064 U+0064 # d
-0x065 U+0065 # e
-0x066 U+0066 # f
-0x067 U+0067 # g
-0x068 U+0068 # h
-0x069 U+0069 # i
-0x06a U+006a # j
-0x06b U+006b # k
-0x06c U+006c # l
-0x06d U+006d # m
-0x06e U+006e # n
-0x06f U+006f # o
-0x070 U+0070 # p
-0x071 U+0071 # q
-0x072 U+0072 # r
-0x073 U+0073 # s
-0x074 U+0074 # t
-0x075 U+0075 # u
-0x076 U+0076 # v
-0x077 U+0077 # w
-0x078 U+0078 # x
-0x079 U+0079 # y
-0x07a U+007a # z
-0x07b U+007b # {
-0x07c U+007c # |
-0x07d U+007d # }
-0x07e U+007e # ~
-0x07f U+2302 # ⌂
-0x080 U+2500 # ─
-0x081 U+2502 # │
-0x082 U+250c # ┌
-0x083 U+2510 # ┐
-0x084 U+2514 # └
-0x085 U+2518 # ┘
-0x086 U+251c # ├
-0x087 U+2524 # ┤
-0x088 U+252c # ┬
-0x089 U+2534 # ┴
-0x08a U+253c # ┼
-0x08b U+2580 # ▀
-0x08c U+2584 # ▄
-0x08d U+2588 # █
-0x08e U+258c # ▌
-0x08f U+2590 # ▐
-0x090 U+2591 # ░
-0x091 U+2592 # ▒
-0x092 U+2593 # ▓
-0x093 U+2320 # ⌠
-0x094 U+25a0 # ■
-0x095 U+2219 # ∙
-0x096 U+221a # √
-0x097 U+2248 # ≈
-0x098 U+2264 # ≤
-0x099 U+2265 # ≥
-0x09a U+00a0 #
-0x09b U+2321 # ⌡
-0x09c U+00b0 # °
-0x09d U+00b2 # ²
-0x09e U+00b7 # ·
-0x09f U+00f7 # ÷
-0x0a0 U+2550 # ═
-0x0a1 U+2551 # ║
-0x0a2 U+2552 # ╒
-0x0a3 U+0451 # ё
-0x0a4 U+2553 # ╓
-0x0a5 U+2554 # ╔
-0x0a6 U+2555 # ╕
-0x0a7 U+2556 # ╖
-0x0a8 U+2557 # ╗
-0x0a9 U+2558 # ╘
-0x0aa U+2559 # ╙
-0x0ab U+255a # ╚
-0x0ac U+255b # ╛
-0x0ad U+255c # ╜
-0x0ae U+255d # ╝
-0x0af U+255e # ╞
-0x0b0 U+255f # ╟
-0x0b1 U+2560 # ╠
-0x0b2 U+2561 # ╡
-0x0b3 U+0401 # Ё
-0x0b4 U+2562 # ╢
-0x0b5 U+2563 # ╣
-0x0b6 U+2564 # ╤
-0x0b7 U+2565 # ╥
-0x0b8 U+2566 # ╦
-0x0b9 U+2567 # ╧
-0x0ba U+2568 # ╨
-0x0bb U+2569 # ╩
-0x0bc U+256a # ╪
-0x0bd U+256b # ╫
-0x0be U+256c # ╬
-0x0bf U+00a9 # ©
-0x0c0 U+044e # ю
-0x0c1 U+0430 # а
-0x0c2 U+0431 # б
-0x0c3 U+0446 # ц
-0x0c4 U+0434 # д
-0x0c5 U+0435 # е
-0x0c6 U+0444 # ф
-0x0c7 U+0433 # г
-0x0c8 U+0445 # х
-0x0c9 U+0438 # и
-0x0ca U+0439 # й
-0x0cb U+043a # к
-0x0cc U+043b # л
-0x0cd U+043c # м
-0x0ce U+043d # н
-0x0cf U+043e # о
-0x0d0 U+043f # п
-0x0d1 U+044f # я
-0x0d2 U+0440 # р
-0x0d3 U+0441 # с
-0x0d4 U+0442 # т
-0x0d5 U+0443 # у
-0x0d6 U+0436 # ж
-0x0d7 U+0432 # в
-0x0d8 U+044c # ь
-0x0d9 U+044b # ы
-0x0da U+0437 # з
-0x0db U+0448 # ш
-0x0dc U+044d # э
-0x0dd U+0449 # щ
-0x0de U+0447 # ч
-0x0df U+044a # ъ
-0x0e0 U+042e # Ю
-0x0e1 U+0410 # А
-0x0e2 U+0411 # Б
-0x0e3 U+0426 # Ц
-0x0e4 U+0414 # Д
-0x0e5 U+0415 # Е
-0x0e6 U+0424 # Ф
-0x0e7 U+0413 # Г
-0x0e8 U+0425 # Х
-0x0e9 U+0418 # И
-0x0ea U+0419 # Й
-0x0eb U+041a # К
-0x0ec U+041b # Л
-0x0ed U+041c # М
-0x0ee U+041d # Н
-0x0ef U+041e # О
-0x0f0 U+041f # П
-0x0f1 U+042f # Я
-0x0f2 U+0420 # Р
-0x0f3 U+0421 # С
-0x0f4 U+0422 # Т
-0x0f5 U+0423 # У
-0x0f6 U+0416 # Ж
-0x0f7 U+0412 # В
-0x0f8 U+042c # Ь
-0x0f9 U+042b # Ы
-0x0fa U+0417 # З
-0x0fb U+0428 # Ш
-0x0fc U+042d # Э
-0x0fd U+0429 # Щ
-0x0fe U+0427 # Ч
-0x0ff U+042a # Ъ
* Compiles under Linux & DOS (using BC++ 3.1).
*
* Compile: gcc -o cpi cpi.c
- * Call: codepage file.cpi [-a|-l|nnn]
+ * Call: codepage [-a|-l|nnn] file.cpi
*
* Author: Ahmed M. Naas (ahmed@oea.xs4all.nl)
* Many changes: aeb@cwi.nl [changed until it would handle all
unsigned short codepage;
-int main (int argc, char *argv[])
-{
+int main (int argc, char *argv[]) {
if (argc < 2)
usage();
- if ((in = fopen(argv[1], "r")) == NULL) {
- printf("\nUnable to open file %s.\n", argv[1]);
- exit(0);
- }
-
opta = optc = optl = optL = optx = 0;
- optind = 2;
+
if (argc == 2)
optl = 1;
else
}
break;
}
+
+ if (optind < argc) {
+ if ((in = fopen(argv[optind], "r")) == NULL) {
+ printf("\nUnable to open file %s.\n", argv[optind]);
+ exit(0);
+ }
+ optind++;
+ } else
+ usage();
+
if (optind != argc) {
if (optind != argc-1 || opta)
usage();
--- /dev/null
+install: $(KEYMAPDIR)_Z $(FONTDIR)_Z
+ install -d -m 755 $(DATADIR)
+ install -d -m 755 $(DATADIR)/$(FONTDIR)
+ install -m 644 $(FONTDIR)_Z/* $(DATADIR)/$(FONTDIR)
+ install -d -m 755 $(DATADIR)/$(FONTDIR)/$(PARTIALDIR)
+ install -m 644 $(PARTIALDIR)_Z/* $(DATADIR)/$(FONTDIR)/$(PARTIALDIR)
+ install -d -m 755 $(DATADIR)/$(TRANSDIR)
+ install -m 644 $(TRANSDIR)/* $(DATADIR)/$(TRANSDIR)
+ install -d -m 755 $(DATADIR)/$(UNIMAPDIR)
+ install -m 644 $(TRANSDIR)/* $(DATADIR)/$(UNIMAPDIR)
+ install -d -m 755 $(DATADIR)/$(KEYMAPDIR)
+ install -d -m 755 $(DATADIR)/$(KEYMAPDIR)/i386
+ for i in $(KEYMAPSUBDIRS); do \
+ install -d -m 755 $(DATADIR)/$(KEYMAPDIR)/$$i ;\
+ install -m 644 $(KEYMAPDIR)_Z/$$i/* $(DATADIR)/$(KEYMAPDIR)/$$i ;\
+ done
+ rm -f $(DATADIR)/$(KEYMAPDIR)/ppc; ln -s mac $(DATADIR)/$(KEYMAPDIR)/ppc
+ @if [ -f $(DATADIR)/$(OLDKEYMAPDIR) ]; then \
+ echo "Done. You may want to remove old keymaps with" ; \
+ echo " rm -rf $(DATADIR)/$(OLDKEYMAPDIR)" ; \
+ echo "But be careful to preserve your default map if it is" ; \
+ echo "nonstandard, and to adapt any scripts in rc.local or so." ; \
+ fi
+
+
+# compress data files - do not touch the distribution but copy first
+$(KEYMAPDIR)_Z:
+ cp -r $(KEYMAPDIR) $(KEYMAPDIR)_Z
+ cd $(KEYMAPDIR)_Z && $(MYGZIP) */*.map */*/*.map
+
+$(FONTDIR)_Z:
+ cp -r $(FONTDIR) $(FONTDIR)_Z
+ cp -r $(PARTIALDIR) $(PARTIALDIR)_Z
+ cd $(FONTDIR)_Z && $(MYGZIP) * && gunzip README*
+ cd $(PARTIALDIR)_Z && $(MYGZIP) *
+# (not yet screenmaps - some other time)
+
+clean:
+ rm -rf $(KEYMAPDIR)_Z $(FONTDIR)_Z $(PARTIALDIR)_Z
Type B. Koi8
-[Reference: RFC 1489]
+[Reference: RFC 1489 for koi8-r, RFC 2319 for koi8-u]
-The koi8* fonts are the koi8 equivalents of the alt*
-fonts above; in particular, koi8c-8x16 also has
-additional slavic characters.
+The koi8-r and koi8-u character sets are almost identical.
+For the 8 letters in koi8-u, not in koi8-r, see src/koi8.syms.h.
-koi8-14.psf follows koi8 in the positions 0300-0377
+The koi8* fonts here are the koi8 equivalents of the alt*
+fonts above; in particular, koi8c-8x16 includes koi8u but
+has additional slavic characters.
+
+koi8-14.psf follows koi8r in the positions 0300-0377
(and has some iso-8859-5 symbols in 0240-0277,
and yat, fita, izhitsa in 0200-0202, 0220-0222).
In particular, it does not have the io and IO at
--- /dev/null
+Greek fonts found in kbd-1.00.tar.gz:
+
+iso07.* follows ISO 8859-7.
+
+gr737* somewhat follow cp737.
+(gr737a* is cp737 with cp437 control chars;
+ gr737b* is gr737a with end replaced by cp865;
+ gr737c* is gr737a with I-diaeresis, Y-diaeresis replaced by integral)
+
+Some of these are derived from fonts contributed by
+Sotiris Tsimbonis <tsimbonis@rosehill-1.irc.gr>.
--- /dev/null
+
+GERMAN -- ENGLISH BELOW
+
+Im iso07-Zeichensatz sind die Zeichen 0x80-0x9f, 0xa0, 0xa4,
+0xa5, 0xaa, 0xae, 0xd2 und 0xff unbelegt.
+Die SuSE-Erweiterung lat7u.psfu belegt diese Stellen mit Grafikzeichen, damit
+YaST aussieht wie gewohnt. Die integrierte Unicodebelegungstabelle wurde
+ entsprechend erweitert.
+Belegungsplan:
+0x80-0x9f wie in lat1u-16.psf 0xc0-0xdf
+0xa0 wie in lat1u-16.psf 0x08
+0xa4 wie in lat1u-16.psf 0x09
+0xa5 wie in lat1u-16.psf 0x0a
+0xaa wie in lat1u-16.psf 0x0b
+0xae wie in lat1u-16.psf 0x0c
+0xff wie in lat1u-16.psf 0x0e
+0xd2 wie in lat1u-16.psf 0xca (Unicode U+2500)
+
+ENGLISH
+The iso07-codepage has some unused characters. ( 0x80-0x9f, 0xa0, 0xa4,
+0xa5, 0xaa, 0xae, 0xd2 and 0xff ) The SuSE-extension lat7u.psfu uses
+this formerly unused places for graphical symbols to make yast look
+similar to the way it looks when used with lat1-fonts.
+
+What we did:
+0x80-0x9f as in lat1u-16.psf 0xc0-0xdf
+0xa0 as in lat1u-16.psf 0x08
+0xa4 as in lat1u-16.psf 0x09
+0xa5 as in lat1u-16.psf 0x0a
+0xaa as in lat1u-16.psf 0x0b
+0xae as in lat1u-16.psf 0x0c
+0xff as in lat1u-16.psf 0x0e
+0xd2 as in lat1u-16.psf 0xca (U+2500)
+
+Martin Lohner, ml@suse.de
--- /dev/null
+From: Guylhem AZNAR <guylhem@oeil.qc.ca>, GPL
+
+Basically, lat is psf, latu is psfu (currency is replaced by EURO), latv
+is pure unicode (currency will not be replaced by EURO symbol, only
+unicode EURO are replaced) and latw replaces unicode EURO and currency
+by EURO.
+
+Here's a chart, please tell me if it isn't clear enough (I wanted font
+support to become exhaustive since many people asked for special
+replacement of currency or instead non replacement since they already
+use UNICODE, etcetera......)
+
+ | Iso encoding | Unicode map | Single | Cross
+ | within font | included | compatibility | compatibility
+-------------------------------------------------------------------
+lat9 | y | n | n | lat1 + lat9
+-------------------------------------------------------------------
+lat9u | n | y | n | lat1 + lat9
+-------------------------------------------------------------------
+lat9v | y | y | unicode | n
+-------------------------------------------------------------------
+lat9w | y | y | n | lat1 + lat9
+ | | | | + unicode
+-------------------------------------------------------------------
+
+ * lat9 fonts do not include any unicode translation map,
+therefore each currency sign will look like euro, what could cause
+compatibility problems for files coming from windows computers (cp1252 or
+latin1 are "incompatible" with latin9) but the huge advantage is it works
+right now with linux.
+
+ * lat9u fonts are encoded in a non standard sequence (but
+identical to latXu fonts from kbd) compared to the latter, therefore it
+brings the same problems with cp1252 and latin1 but the unicode translation
+map allows nice chars. for semi graphical applications like Yast, mc or
+other ncurses or dialog based programs.
+
+ * lat9v encoded in iso official sequence just like lat9 but
+with a full fledged unicode translation map, so no currency sign will be
+replaced by euro
+This avoids export problems if you use pure unicode and a unicode keymap :
+each latin9 char. is replaced by the adequate unicode char. and then
+displayed what is not only technically elegant but also useless with
+"standard" linux console. Very few systems are unicode ready !
+
+Therefore only use lat9, lat9u or lat9v fonts if you know what you are
+doing, else you can go with lat9w, the best compromise : you can
+be latin9 compatible immediately.
+There is no obligation of unicode or whatever, semi graphical chars. are
+not messed up and if you feel like trying unicode, latin9 chars are
+displayed correctly (only the 0.3% latin9 incompatible chars. from latin1
+lack)
+
+You do not need to understand anything to use euro in everyday life, and if
+you still hesitate, trust my choice : lat9w.
+
+In order to use lat9-16.psf (or another lat9 .psf), you must supply a
+unicode map :
+
+ loadunimap lat9.uni
+ setfont lat9-16.psf
+
+To use lat9w-16.psf (or another lat9u, lat9v or lat9w) :
+
+ setfont lat9w-16.psf
--- /dev/null
+# combine partial fonts
+none.00-17.08
+ascii.20-7f.08
+none.00-17.08
+8859-1.a0-ff.08
--- /dev/null
+# combine partial fonts
+none.00-17.14
+ascii.20-7f.14
+none.00-17.14
+8859-1.a0-ff.14
--- /dev/null
+# combine partial fonts
+none.00-17.16
+ascii.20-7f.16
+none.00-17.16
+8859-1.a0-ff.16
--- /dev/null
+# combine partial fonts
+none.00-17.08
+ascii.20-7f.08
+none.00-17.08
+8859-2.a0-ff.08
--- /dev/null
+# combine partial fonts
+none.00-17.14
+ascii.20-7f.14
+none.00-17.14
+8859-2.a0-ff.14
--- /dev/null
+# combine partial fonts
+none.00-17.16
+ascii.20-7f.16
+none.00-17.16
+8859-2.a0-ff.16
--- /dev/null
+# combine partial fonts
+none.00-17.08
+ascii.20-7f.08
+none.00-17.08
+8859-3.a0-ff.08
--- /dev/null
+# combine partial fonts
+none.00-17.14
+ascii.20-7f.14
+none.00-17.14
+8859-3.a0-ff.14
--- /dev/null
+# combine partial fonts
+none.00-17.16
+ascii.20-7f.16
+none.00-17.16
+8859-3.a0-ff.16
--- /dev/null
+# combine partial fonts
+none.00-17.08
+ascii.20-7f.08
+none.00-17.08
+8859-4.a0-ff.08
--- /dev/null
+# combine partial fonts
+none.00-17.14
+ascii.20-7f.14
+none.00-17.14
+8859-4.a0-ff.14
--- /dev/null
+# combine partial fonts
+none.00-17.16
+ascii.20-7f.16
+none.00-17.16
+8859-4.a0-ff.16
--- /dev/null
+# combine partial fonts
+none.00-17.08
+ascii.20-7f.08
+none.00-17.08
+8859-5.a0-ff.08
--- /dev/null
+# combine partial fonts
+none.00-17.14
+ascii.20-7f.14
+none.00-17.14
+8859-5.a0-ff.14
--- /dev/null
+# combine partial fonts
+none.00-17.16
+ascii.20-7f.16
+none.00-17.16
+8859-5.a0-ff.16
--- /dev/null
+# combine partial fonts
+none.00-17.08
+ascii.20-7f.08
+none.00-17.08
+8859-6.a0-ff.08
--- /dev/null
+# combine partial fonts
+none.00-17.14
+ascii.20-7f.14
+none.00-17.14
+8859-6.a0-ff.14
--- /dev/null
+# combine partial fonts
+none.00-17.16
+ascii.20-7f.16
+none.00-17.16
+8859-6.a0-ff.16
--- /dev/null
+# combine partial fonts
+none.00-17.08
+ascii.20-7f.08
+none.00-17.08
+8859-7.a0-ff.08
--- /dev/null
+# combine partial fonts
+none.00-17.14
+ascii.20-7f.14
+none.00-17.14
+8859-7.a0-ff.14
--- /dev/null
+# combine partial fonts
+none.00-17.16
+ascii.20-7f.16
+none.00-17.16
+8859-7.a0-ff.16
--- /dev/null
+# combine partial fonts
+none.00-17.08
+ascii.20-7f.08
+none.00-17.08
+8859-8.a0-ff.08
--- /dev/null
+# combine partial fonts
+none.00-17.14
+ascii.20-7f.14
+none.00-17.14
+8859-8.a0-ff.14
--- /dev/null
+# combine partial fonts
+none.00-17.16
+ascii.20-7f.16
+none.00-17.16
+8859-8.a0-ff.16
--- /dev/null
+# combine partial fonts
+none.00-17.08
+ascii.20-7f.08
+none.00-17.08
+8859-9.a0-ff.08
--- /dev/null
+# combine partial fonts
+none.00-17.14
+ascii.20-7f.14
+none.00-17.14
+8859-9.a0-ff.14
--- /dev/null
+# combine partial fonts
+none.00-17.16
+ascii.20-7f.16
+none.00-17.16
+8859-9.a0-ff.16
--- /dev/null
+# combine partial fonts
+none.00-17.08
+ascii.20-7f.08
+none.00-17.08
+8859-10.a0-ff.08
--- /dev/null
+# combine partial fonts
+none.00-17.14
+ascii.20-7f.14
+none.00-17.14
+8859-10.a0-ff.14
--- /dev/null
+# combine partial fonts
+none.00-17.16
+ascii.20-7f.16
+none.00-17.16
+8859-10.a0-ff.16
--- /dev/null
+# Internal value Output character\r
+0x80 0xC0\r
+0x81 0xC1\r
+0x82 0xC2\r
+0x83 0xC3\r
+0x84 0xC4\r
+0x85 0xC5\r
+0x86 0xC6\r
+0x87 0xC7\r
+0x88 0xC8\r
+0x89 0xC9\r
+0x8A 0xCA\r
+0x8B 0xCB\r
+0x8C 0xCC\r
+0x8D 0xCD\r
+0x8E 0xCE\r
+0x8F 0xCF\r
+0x90 0xD0\r
+0x91 0xD1\r
+0x92 0xD2\r
+0x93 0xD3\r
+0x94 0xD4\r
+0x95 0xD5\r
+0x96 0xD6\r
+0x97 0xD7\r
+0x98 0xD8\r
+0x99 0xD9\r
+0x9A 0xDA\r
+0x9B 0xDB\r
+0x9C 0xDC\r
+0x9D 0xDD\r
+0x9E 0xDE\r
+0x9F 0xDF\r
+0xA0 0xA0\r
+0xA1 0xA1\r
+0xA2 0xA2\r
+0xA3 0xA3\r
+0xA4 0xA4\r
+0xA5 0xA5\r
+0xA6 0xA6\r
+0xA7 0xA7\r
+0xA8 0xA8\r
+0xA9 0xA9\r
+0xAA 0xAA\r
+0xAB 0xAB\r
+0xAC 0xAC\r
+0xAD 0xAD\r
+0xAE 0xAE\r
+0xAF 0xAF\r
+0xB0 0xB0\r
+0xB1 0xB1\r
+0xB2 0xB2\r
+0xB3 0xB3\r
+0xB4 0xB4\r
+0xB5 0xB5\r
+0xB6 0xB6\r
+0xB7 0xB7\r
+0xB8 0xB8\r
+0xB9 0xB9\r
+0xBA 0xBA\r
+0xBB 0xBB\r
+0xBC 0xBC\r
+0xBD 0xBD\r
+0xBE 0xBE\r
+0xBF 0xBF\r
+0xC0 0xA1\r
+0xC1 0x87\r
+0xC2 0x82\r
+0xC3 0x83\r
+0xC4 0x84\r
+0xC5 0x85\r
+0xC6 0x8A\r
+0xC7 0x87\r
+0xC8 0x88\r
+0xC9 0x89\r
+0xCA 0x8A\r
+0xCB 0x8C\r
+0xCC 0x8C\r
+0xCD 0x8D\r
+0xCE 0x8E\r
+0xCF 0x8F\r
+0xD0 0xA9\r
+0xD1 0x91\r
+0xD2 0x92\r
+0xD3 0x93\r
+0xD4 0x94\r
+0xD5 0x95\r
+0xD6 0x96\r
+0xD7 0x97\r
+0xD8 0x99\r
+0xD9 0x99\r
+0xDA 0x9A\r
+0xDB 0x9E\r
+0xDC 0x9C\r
+0xDD 0x9D\r
+0xDE 0xAE\r
+0xDF 0x9F\r
+0xE0 0xB1\r
+0xE1 0xE7\r
+0xE2 0xE2\r
+0xE3 0xE3\r
+0xE4 0xE4\r
+0xE5 0xE5\r
+0xE6 0xEA\r
+0xE7 0xE7\r
+0xE8 0xE8\r
+0xE9 0xE9\r
+0xEA 0xEA\r
+0xEB 0xEC\r
+0xEC 0xEC\r
+0xED 0xED\r
+0xEE 0xEE\r
+0xEF 0xEF\r
+0xF0 0xB9\r
+0xF1 0xF1\r
+0xF2 0xF2\r
+0xF3 0xF3\r
+0xF4 0xF4\r
+0xF5 0xF5\r
+0xF6 0xF6\r
+0xF7 0xF7\r
+0xF8 0xF9\r
+0xF9 0xF9\r
+0xFA 0xFA\r
+0xFB 0xFE\r
+0xFC 0xFC\r
+0xFD 0xFD\r
+0xFE 0xBE\r
+0xFF 0xFF\r
Note that only files *.map are candidate keymaps.
Andries
+
+
+
+Added in kbd-1.00: symlink ppc -> mac.
--- /dev/null
+# This describes the key engravings on an AZERTY keyboard (brand Tandon)
+# that I just got. It might be useful in French-speaking countries.
+# aeb - April 1994.
+# This is the modified version for an azerty Wang belguim keyboard,
+# model 724 serial 725-3771-EA/REV1. The numeric key assignments are extended:
+# 7 8 9 < > ^
+# 4 5 6 +AltGr [ ] $
+# 1 2 3 -----> & @ #
+# 0 . r ' , r
+# Servaas Vandenberghe, vdb128@tele.kotnet.org, 1999.
+# For compatibility with X windows and Emacs one should try to do the following
+# 1 shift
+# 2 right alt --> other character set, add 64 ?
+# 4 control --> subract 64 of the ascii code
+# 8 left alt --> meta of the symbol
+
+keymaps 0-2,4-6,8-10,12
+include "azerty-layout"
+ AltGr keycode 19 = registered
+ AltGr keycode 21 = yen
+ AltGr keycode 25 = paragraph
+ AltGr keycode 31 = section
+ AltGr keycode 39 = mu
+ AltGr keycode 45 = multiply
+ AltGr keycode 46 = copyright
+include "linux-with-alt-and-altgr.inc"
+ AltGr keycode 71 = less
+ AltGr keycode 72 = greater
+ AltGr keycode 73 = asciicircum
+ AltGr keycode 75 = bracketleft
+ AltGr keycode 76 = bracketright
+ AltGr keycode 77 = dollar
+ AltGr keycode 79 = ampersand
+ AltGr keycode 80 = at
+ AltGr keycode 81 = numbersign
+ AltGr keycode 82 = apostrophe
+ AltGr keycode 83 = KP_Comma
+ Control AltGr keycode 71 = bar
+ Control AltGr keycode 72 = asciitilde
+ Control AltGr keycode 75 = Escape
+ Control AltGr keycode 76 = Control_bracketright
+ Control AltGr keycode 80 = nul
+strings as usual
+compose as usual for "iso-8859-1"
+keycode 1 = Escape Escape
+ alt keycode 1 = Meta_Escape
+keycode 2 = ampersand one bar less
+ Control AltGr keycode 2 = less
+ alt keycode 2 = Meta_one
+ AltGr alt keycode 2 = Meta_bar
+keycode 3 = eacute two at
+ alt keycode 3 = Meta_two
+ AltGr alt keycode 3 = Meta_at
+keycode 4 = quotedbl three numbersign Escape
+ alt keycode 4 = Meta_three
+keycode 5 = apostrophe four dollar Control_backslash
+ alt keycode 5 = Meta_four
+keycode 6 = parenleft five bracketleft Escape
+ Control AltGr keycode 6 = Escape
+ alt keycode 6 = Meta_five
+keycode 7 = section six asciicircum Control_asciicircum
+ Control AltGr keycode 7 = Control_asciicircum
+ alt keycode 7 = Meta_six
+keycode 8 = egrave seven underscore Control_underscore
+ Control AltGr keycode 8 = Control_underscore
+ alt keycode 8 = Meta_seven
+keycode 9 = exclam eight question Delete
+ Control AltGr keycode 9 = Delete
+ alt keycode 9 = Meta_eight
+keycode 10 = ccedilla nine braceleft semicolon
+ Control AltGr keycode 10 = semicolon
+ alt keycode 10 = Meta_nine
+keycode 11 = agrave zero braceright equal
+ Control AltGr keycode 11 = equal
+ alt keycode 11 = Meta_zero
+keycode 12 = parenright degree bracketright Control_bracketright
+ Control AltGr keycode 12 = Control_bracketright
+ alt keycode 12 = bracketright
+keycode 13 = minus underscore backslash \
+ Control_underscore Control_underscore Control_backslash \
+ Meta_minus Meta_underscore Meta_backslash
+keycode 14 = Delete Delete
+ alt keycode 14 = Meta_Delete
+keycode 15 = Tab Tab
+ alt keycode 15 = Meta_Tab
+keycode 26 = dead_circumflex dead_diaeresis bracketleft Escape
+ Control AltGr keycode 26 = Escape
+ alt keycode 26 = Meta_bracketleft
+keycode 27 = dollar asterisk bracketright Control_bracketright
+ Control AltGr keycode 27 = Control_bracketright
+ alt keycode 27 = Meta_bracketright
+keycode 28 = Return
+ alt keycode 28 = Meta_Control_m
+ #alt keycode 28 = 0x080d
+keycode 29 = Control
+keycode 40 = ugrave percent acute dead_acute
+ alt keycode 40 = dead_acute
+ alt shift keycode 40 = Meta_percent
+keycode 41 = twosuperior threesuperior dead_grave
+ alt keycode 41 = Meta_grave
+keycode 42 = Shift
+keycode 43 = mu sterling grave dead_grave
+ alt keycode 43 = dead_grave
+keycode 50 = comma question questiondown
+ Control Shift keycode 50 = Delete
+ alt keycode 50 = Meta_comma
+ alt Shift keycode 50 = Meta_question
+keycode 51 = semicolon period guillemotleft
+ alt keycode 51 = Meta_semicolon
+ alt shift keycode 51 = Meta_period
+keycode 52 = colon slash guillemotright
+ alt keycode 52 = Meta_colon
+ alt shift keycode 52 = Meta_slash
+keycode 53 = equal plus asciitilde dead_tilde
+ Control AltGr keycode 53 = dead_tilde
+ alt keycode 53 = Meta_equal
+ alt shift keycode 53 = Meta_plus
+ alt AltGr keycode 53 = Meta_asciitilde
+keycode 54 = Shift
+keycode 56 = Alt
+keycode 57 = space space
+ control keycode 57 = nul
+ alt keycode 57 = Meta_space
+keycode 58 = Caps_Lock
+keycode 86 = less greater backslash \
+ bar asciitilde Control_backslash \
+ Meta_less Meta_greater Meta_backslash
+ alt Control keycode 86 = Meta_bar
+keycode 97 = Control
+keycode 99 = Control_backslash
+ control keycode 99 = Control_backslash
+ alt keycode 99 = Control_backslash
+keycode 118 = KP_MinPlus
+
-keymaps 0-2,4,6,8,12
+keymaps 0-2,4-6,8-9,12
alt_is_meta
include "linux-with-alt-and-altgr.inc"
strings as usual
-keycode 1 = Escape Escape
+keycode 1 = Escape
keycode 2 = one exclam
-keycode 3 = two at at
- control keycode 3 = nul
+keycode 3 = two at at nul nul
keycode 4 = three numbersign
control keycode 4 = Escape
-keycode 5 = four dollar dollar
- control keycode 5 = Control_backslash
+keycode 5 = four dollar dollar Control_backslash
keycode 6 = five percent
control keycode 6 = Control_bracketright
keycode 7 = six asciicircum
control keycode 7 = Control_asciicircum
-keycode 8 = seven ampersand braceleft
- control keycode 8 = Control_underscore
-keycode 9 = eight asterisk bracketleft
- control keycode 9 = Delete
+keycode 8 = seven ampersand braceleft Control_underscore
+keycode 9 = eight asterisk bracketleft Delete
keycode 10 = nine parenleft bracketright
keycode 11 = zero parenright braceright
keycode 12 = bracketleft braceleft
control keycode 12 = Escape
-keycode 13 = bracketright braceright asciitilde
- control keycode 13 = Control_bracketright
-keycode 14 = Delete Delete
-keycode 15 = Tab Tab
+keycode 13 = bracketright braceright asciitilde Control_bracketright
+keycode 14 = Delete
+keycode 15 = Tab
keycode 16 = apostrophe quotedbl
control keycode 16 = Control_g
keycode 17 = comma less
keycode 37 = t
keycode 38 = n
keycode 39 = s
-keycode 40 = minus underscore backslash
- control keycode 40 = Control_underscore
+keycode 40 = minus underscore backslash Control_underscore Control_underscore
keycode 41 = grave asciitilde
control keycode 41 = nul
keycode 42 = Shift
keycode 53 = z
keycode 54 = Shift
keycode 56 = Alt
-keycode 57 = space space
+keycode 57 = space
control keycode 57 = nul
keycode 58 = Caps_Lock
keycode 86 = less greater bar
- alt keycode 86 = Meta_less
keycode 97 = Control
--- /dev/null
+charset "iso-8859-9"
+keymaps 0-6,8-9,12
+include "linux-with-alt-and-altgr"
+strings as usual
+
+keycode 1 = Escape Escape
+ alt keycode 1 = Meta_Escape
+keycode 2 = one exclam asciitilde
+ alt keycode 2 = Meta_one
+ alt shift keycode 2 = Meta_exclam
+keycode 3 = two at ampersand
+ control keycode 3 = nul
+ control shift keycode 3 = nul
+ alt keycode 3 = Meta_two
+ alt shift keycode 3 = Meta_at
+keycode 4 = three quotedbl numbersign
+ control keycode 4 = Escape
+ alt keycode 4 = Meta_three
+ alt shift keycode 4 = Meta_quotedbl
+keycode 5 = four apostrophe dollar
+ control keycode 5 = Control_backslash
+ alt keycode 5 = Meta_four
+ alt shift keycode 5 = Meta_apostrophe
+keycode 6 = five parenleft less
+ control keycode 6 = Control_bracketright
+ alt keycode 6 = Meta_five
+ alt shift keycode 6 = Meta_parenleft
+keycode 7 = six slash greater
+ control keycode 7 = Control_asciicircum
+ alt keycode 7 = Meta_six
+ alt shift keycode 7 = Meta_slash
+keycode 8 = seven parenright braceleft
+ control keycode 8 = Control_underscore
+ alt keycode 8 = Meta_seven
+ alt shift keycode 8 = Meta_parenright
+keycode 9 = eight underscore braceright
+ control keycode 9 = Delete
+ alt keycode 9 = Meta_eight
+ alt shift keycode 9 = Meta_underscore
+keycode 10 = nine percent bracketleft
+ alt keycode 10 = Meta_nine
+ alt shift keycode 10 = Meta_percent
+keycode 11 = zero colon bracketright
+ alt keycode 11 = Meta_zero
+ alt shift keycode 11 = Meta_colon
+keycode 12 = x
+keycode 13 = q
+keycode 14 = Delete Delete
+ alt keycode 14 = Meta_Delete
+keycode 15 = Tab
+ alt keycode 15 = Meta_Tab
+keycode 16 = f
+keycode 17 = g
+keycode 18 = +0360 +0320
+keycode 19 = +0375 +I
+ altgr keycode 19 = +0356
+ altgr shift keycode 19 = +0316
+keycode 20 = o
+ altgr keycode 20 = +0364
+ altgr shift keycode 20 = +0324
+keycode 21 = d
+keycode 22 = r
+keycode 23 = n
+keycode 24 = h
+keycode 25 = p
+keycode 26 = semicolon asterisk
+ control keycode 26 = Escape
+ alt keycode 26 = Meta_semicolon
+ alt shift keycode 26 = Meta_asterisk
+keycode 27 = asciicircum grave
+ control keycode 27 = Control_bracketright
+ alt keycode 27 = Meta_asciicircum
+ alt shift keycode 27 = Meta_grave
+keycode 28 = Return
+ alt keycode 28 = 0x080d
+keycode 29 = Control
+keycode 30 = u
+ altgr keycode 30 = +0373
+ altgr shift keycode 30 = +0333
+keycode 31 = +i +0335
+keycode 32 = e
+keycode 33 = a
+ altgr keycode 33 = +0342
+ altgr shift keycode 33 = +0302
+keycode 34 = +0374 +0334
+keycode 35 = t
+keycode 36 = k
+keycode 37 = m
+keycode 38 = l
+keycode 39 = y
+keycode 40 = +0376 +0336
+ control keycode 40 = Control_g
+keycode 41 = w
+ control keycode 41 = nul
+keycode 42 = Shift
+keycode 43 = equal plus
+ control keycode 43 = Control_backslash
+ alt keycode 43 = Meta_equal
+ alt shift keycode 43 = Meta_plus
+keycode 44 = j
+keycode 45 = +0366 +0326
+keycode 46 = v
+keycode 47 = c
+keycode 48 = +0347 +0307
+keycode 49 = z
+keycode 50 = s
+keycode 51 = b
+keycode 52 = period question
+ control keycode 52 = Delete
+ alt keycode 52 = Meta_period
+ alt shift keycode 52 = Meta_question
+keycode 53 = comma minus slash
+ alt keycode 53 = Meta_comma
+ alt shift keycode 53 = Meta_minus
+keycode 54 = Shift
+keycode 56 = Alt
+keycode 57 = space
+ control keycode 57 = nul
+ alt keycode 57 = Meta_space
+keycode 58 = Caps_Lock
+keycode 86 = backslash bar
+ alt keycode 86 = Meta_backslash
+ alt shift keycode 86 = Meta_bar
+keycode 97 = Control
--- /dev/null
+# VT220 auxiliary keypad in application mode
+# Use 4 auxiliary strings.
+
+# Num Lock key
+keycode 69 = F21
+# Divide key
+keycode 98 = F22
+# Multiply key
+keycode 55 = F23
+# Subtract key
+keycode 74 = F24
+
+string F21 = "\033OP"
+string F22 = "\033OQ"
+string F23 = "\033OR"
+string F24 = "\033OS"
+
+# This is also what one gets after sending Esc = to the console.
--- /dev/null
+# Most people will prefer the default Unicode hex input
+# sequences (that use the keypad, with A-F represented
+# by the keys around the digits in natural order).
+# However, ISO-14755 suggests to use Ctrl-Shift and
+# the ordinary letters and digits. That is also possible
+# (but then Ctrl-Shift-2 will no longer be Ctrl-@).
+control shift keycode 11 = Hex_0
+control shift keycode 2 = Hex_1
+control shift keycode 3 = Hex_2
+control shift keycode 4 = Hex_3
+control shift keycode 5 = Hex_4
+control shift keycode 6 = Hex_5
+control shift keycode 7 = Hex_6
+control shift keycode 8 = Hex_7
+control shift keycode 9 = Hex_8
+control shift keycode 10 = Hex_9
+control shift keycode 30 = Hex_A
+control shift keycode 48 = Hex_B
+control shift keycode 46 = Hex_C
+control shift keycode 32 = Hex_D
+control shift keycode 18 = Hex_E
+control shift keycode 33 = Hex_F
+#
+# If the keyboard is in Unicode mode, then pressing
+# Ctrl-Shift, typing 4 hex digits and releasing Ctrl-Shift
+# will produce the unicode character with the given code.
+#
--- /dev/null
+# br-abnt.map
+# Mapa para teclados ABNT
+# João Luiz Barbosa <jl@conectiva.com.br>
+#
+keymaps 0-2,4-6,8-9,12
+strings as usual
+compose as usual for "iso-8859-1"
+keycode 1 = Escape Escape
+ alt keycode 1 = Meta_Escape
+keycode 2 = one exclam
+ alt keycode 2 = Meta_one
+ shift alt keycode 2 = Meta_exclam
+keycode 3 = two at at nul nul
+ alt keycode 3 = Meta_two
+ shift alt keycode 3 = Meta_at
+keycode 4 = three numbersign
+ control keycode 4 = Escape
+ alt keycode 4 = Meta_three
+ shift alt keycode 4 = Meta_numbersign
+keycode 5 = four dollar dollar Control_backslash
+ alt keycode 5 = Meta_four
+ shift alt keycode 5 = Meta_dollar
+keycode 6 = five percent
+ control keycode 6 = Control_bracketright
+ alt keycode 6 = Meta_five
+ shift alt keycode 6 = Meta_percent
+keycode 7 = six dead_circumflex
+ control keycode 7 = Control_asciicircum
+ alt keycode 7 = Meta_six
+ shift alt keycode 7 = Meta_asciicircum
+keycode 8 = seven ampersand braceleft Control_underscore
+ alt keycode 8 = Meta_seven
+keycode 9 = eight asterisk bracketleft Delete
+ alt keycode 9 = Meta_eight
+keycode 10 = nine parenleft bracketright
+ alt keycode 10 = Meta_nine
+keycode 11 = zero parenright braceright
+ alt keycode 11 = Meta_zero
+keycode 12 = minus underscore backslash Control_underscore Control_underscore
+ alt keycode 12 = Meta_minus
+keycode 13 = equal plus
+ alt keycode 13 = Meta_equal
+keycode 14 = Delete Delete
+ control keycode 14 = BackSpace
+ alt keycode 14 = Meta_Delete
+keycode 15 = Tab Tab
+ alt keycode 15 = Meta_Tab
+keycode 16 = q
+keycode 17 = w
+keycode 18 = e
+keycode 19 = r
+keycode 20 = t
+keycode 21 = y
+keycode 22 = u
+keycode 23 = i
+keycode 24 = o
+keycode 25 = p
+keycode 26 = dead_acute dead_grave
+ control keycode 26 = nul
+ alt keycode 26 = Meta_grave
+keycode 27 = bracketleft braceleft
+ control keycode 27 = Escape
+ alt keycode 27 = Meta_bracketleft
+ shift alt keycode 26 = Meta_braceleft
+keycode 28 = Return
+ alt keycode 28 = Meta_Control_m
+keycode 29 = Control
+keycode 30 = a
+keycode 31 = s
+keycode 32 = d
+keycode 33 = f
+keycode 34 = g
+keycode 35 = h
+keycode 36 = j
+keycode 37 = k
+keycode 38 = l
+keycode 39 = ccedilla Ccedilla
+ alt keycode 39 = Meta_semicolon
+keycode 40 = dead_tilde dead_circumflex
+ control keycode 40 = nul
+ alt keycode 40 = Control_asciicircum
+ shift alt keycode 40 = Meta_asciicircum
+keycode 41 = dead_acute dead_diaeresis
+ control keycode 41 = Control_g
+ alt keycode 41 = Meta_apostrophe
+keycode 42 = Shift
+keycode 43 = bracketright braceright asciitilde Control_bracketright
+ alt keycode 43 = Meta_bracketright
+ shift alt keycode 43 = Meta_braceright
+keycode 44 = z
+keycode 45 = x
+keycode 46 = c
+keycode 47 = v
+keycode 48 = b
+keycode 49 = n
+keycode 50 = m
+keycode 51 = comma less
+ alt keycode 51 = Meta_comma
+ shift alt keycode 51 = Meta_less
+keycode 52 = period greater
+ control keycode 52 = Compose
+ alt keycode 52 = Meta_period
+ shift alt keycode 52 = Meta_greater
+keycode 53 = semicolon colon
+ alt keycode 53 = Meta_semicolon
+keycode 54 = Shift
+keycode 55 = KP_Multiply
+keycode 56 = Alt
+keycode 57 = space space
+ control keycode 57 = nul
+ alt keycode 57 = Meta_space
+keycode 58 = Caps_Lock
+keycode 59 = F1 F11 Console_13 F1
+ alt keycode 59 = Console_1
+ control alt keycode 59 = Console_1
+keycode 60 = F2 F12 Console_14 F2
+ alt keycode 60 = Console_2
+ control alt keycode 60 = Console_2
+keycode 61 = F3 F13 Console_15 F3
+ alt keycode 61 = Console_3
+ control alt keycode 61 = Console_3
+keycode 62 = F4 F14 Console_16 F4
+ alt keycode 62 = Console_4
+ control alt keycode 62 = Console_4
+keycode 63 = F5 F15 Console_17 F5
+ alt keycode 63 = Console_5
+ control alt keycode 63 = Console_5
+keycode 64 = F6 F16 Console_18 F6
+ alt keycode 64 = Console_6
+ control alt keycode 64 = Console_6
+keycode 65 = F7 F17 Console_19 F7
+ alt keycode 65 = Console_7
+ control alt keycode 65 = Console_7
+keycode 66 = F8 F18 Console_20 F8
+ alt keycode 66 = Console_8
+ control alt keycode 66 = Console_8
+keycode 67 = F9 F19 Console_21 F9
+ alt keycode 67 = Console_9
+ control alt keycode 67 = Console_9
+keycode 68 = F10 F20 Console_22 F10
+ alt keycode 68 = Console_10
+ control alt keycode 68 = Console_10
+keycode 69 = Num_Lock
+keycode 70 = Scroll_Lock Show_Memory Show_Registers Show_State
+ alt keycode 70 = Scroll_Lock
+keycode 71 = KP_7
+ alt keycode 71 = Ascii_7
+keycode 72 = KP_8
+ alt keycode 72 = Ascii_8
+keycode 73 = KP_9
+ alt keycode 73 = Ascii_9
+keycode 74 = KP_Subtract
+keycode 75 = KP_4
+ alt keycode 75 = Ascii_4
+keycode 76 = KP_5
+ alt keycode 76 = Ascii_5
+keycode 77 = KP_6
+ alt keycode 77 = Ascii_6
+keycode 78 = KP_Add
+keycode 79 = KP_1
+ alt keycode 79 = Ascii_1
+keycode 80 = KP_2
+ alt keycode 80 = Ascii_2
+keycode 81 = KP_3
+ alt keycode 81 = Ascii_3
+keycode 82 = KP_0
+ alt keycode 82 = Ascii_0
+keycode 83 = comma
+ altgr control keycode 83 = Boot
+ control alt keycode 83 = Boot
+keycode 84 = Last_Console
+keycode 85 =
+keycode 86 = backslash bar
+ control keycode 86 = Control_backslash
+ alt keycode 86 = Meta_backslash
+ shift alt keycode 43 = Meta_bar
+keycode 87 = F11 F11 Console_23 F11
+ alt keycode 87 = Console_11
+ control alt keycode 87 = Console_11
+keycode 88 = F12 F12 Console_24 F12
+ alt keycode 88 = Console_12
+ control alt keycode 88 = Console_12
+keycode 89 = slash question
+ control keycode 89 = Delete
+ alt keycode 89 = Meta_slash
+keycode 90 =
+keycode 91 =
+keycode 92 =
+keycode 93 =
+keycode 94 =
+keycode 95 =
+keycode 96 = KP_Enter
+keycode 97 = Control
+keycode 98 = KP_Divide
+keycode 99 = Control_backslash
+ control keycode 99 = Control_backslash
+ alt keycode 99 = Control_backslash
+keycode 100 = AltGr
+keycode 101 = Break
+keycode 102 = Find
+keycode 103 = Up
+keycode 104 = Prior
+ shift keycode 104 = Scroll_Backward
+keycode 105 = Left
+ alt keycode 105 = Decr_Console
+keycode 106 = Right
+ alt keycode 106 = Incr_Console
+keycode 107 = Select
+keycode 108 = Down
+keycode 109 = Next
+ shift keycode 109 = Scroll_Forward
+keycode 110 = Insert
+keycode 111 = Remove
+ altgr control keycode 111 = Boot
+ control alt keycode 111 = Boot
+keycode 112 = Macro
+ altgr control keycode 112 = VoidSymbol
+ shift alt keycode 112 = VoidSymbol
+keycode 113 = F13
+ altgr control keycode 113 = VoidSymbol
+ shift alt keycode 113 = VoidSymbol
+keycode 114 = F14
+ altgr control keycode 114 = VoidSymbol
+ shift alt keycode 114 = VoidSymbol
+keycode 115 = Help
+ altgr control keycode 115 = VoidSymbol
+ shift alt keycode 115 = VoidSymbol
+keycode 116 = Do
+ altgr control keycode 116 = VoidSymbol
+ shift alt keycode 116 = VoidSymbol
+keycode 117 = F17
+ altgr control keycode 117 = VoidSymbol
+ shift alt keycode 117 = VoidSymbol
+keycode 118 = KP_MinPlus
+ altgr control keycode 118 = VoidSymbol
+ shift alt keycode 118 = VoidSymbol
+keycode 119 = Pause
+ altgr control keycode 119 = VoidSymbol
+ shift alt keycode 119 = VoidSymbol
+keycode 120 =
+keycode 121 = period
+ altgr control keycode 119 = VoidSymbol
+ shift alt keycode 119 = VoidSymbol
+keycode 122 =
+keycode 123 =
+keycode 124 =
+keycode 125 =
+keycode 126 =
+keycode 127 =
# Antonio Dias <accdias@sst.com.br>
#
# (slightly adapted, aeb)
+#
+# Ruda Moura <ruda@conectiva.com.br>
+# Added keycode 89 (slash/question)
+# Keypad fix
+# WinL/WinR is Scroll_*
+# Menu is Compose
alt_is_meta
keymaps 0-2,4-6,8,12
include "qwerty-layout"
keycode 70 = Scroll_Lock Show_Memory Show_Registers Show_State
alt keycode 70 = Scroll_Lock
+keycode 83 = KP_Comma
+ shift keycode 83 = comma
+ control alt keycode 83 = Boot
+
keycode 86 = backslash bar
- alt keycode 86 = Meta_less
+ alt keycode 86 = Meta_less
+
+keycode 89 = slash question degree
+ control keycode 89 = Delete
+ alt keycode 89 = Meta_slash
+
+keycode 121 = KP_Period
+ shift keycode 121 = period
+
+# Do whatever you want...
+keycode 125 = Scroll_Backward
+keycode 126 = Scroll_Forward
+keycode 127 = Compose
keycode 101 = Break
keycode 102 = Find
keycode 103 = Up
-keycode 104 = Prior
-shift keycode 104 = Scroll_Backward
+keycode 104 = Prior Scroll_Backward Prior Scroll_Backward VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 105 = Left
alt keycode 105 = Decr_Console
alt altgr keycode 105 = Decr_Console
alt altgr keycode 106 = Incr_Console
keycode 107 = Select
keycode 108 = Down
-keycode 109 = Next
-shift keycode 109 = Scroll_Forward
+keycode 109 = Next Scroll_Forward Next Scroll_Forward VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 110 = Insert
keycode 111 = Remove
control alt keycode 111 = Boot
keycode 101 = Break
keycode 102 = Find
keycode 103 = Up
-keycode 104 = Prior
-shift keycode 104 = Scroll_Backward
+keycode 104 = Prior Scroll_Backward Prior Scroll_Backward VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 105 = Left
alt keycode 105 = Decr_Console
alt altgr keycode 105 = Decr_Console
alt altgr keycode 106 = Incr_Console
keycode 107 = Select
keycode 108 = Down
-keycode 109 = Next
-shift keycode 109 = Scroll_Forward
+keycode 109 = Next Scroll_Forward Next Scroll_Forward VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 110 = Insert
keycode 111 = Remove
control alt keycode 111 = Boot
include "qwerty-layout"
include "linux-with-alt-and-altgr"
strings as usual
-compose as usual for "iso-8859-1"
keycode 1 = Escape
keycode 2 = one exclam bar
keycode 58 = Caps_Lock
keycode 86 = less greater
shift alt keycode 86 = Meta_bar
+! compose for cp 850
+compose '`' 'A' to '·'
+compose '`' 'a' to '\85'
+compose '\'' 'A' to 'µ'
+compose '\'' 'a' to ' '
+compose '^' 'A' to '¶'
+compose '^' 'a' to '\83'
+compose '~' 'A' to 'Ç'
+compose '~' 'a' to 'Æ'
+compose '"' 'A' to '\8e'
+compose '"' 'a' to '\84'
+compose 'O' 'A' to '\8f'
+compose 'o' 'a' to '\86'
+compose '0' 'A' to '\8f'
+compose '0' 'a' to '\86'
+compose 'A' 'A' to '\8f'
+compose 'a' 'a' to '\86'
+compose 'A' 'E' to '\92'
+compose 'a' 'e' to '\91'
+compose ',' 'C' to '\80'
+compose ',' 'c' to '\87'
+compose '`' 'E' to 'Ô'
+compose '`' 'e' to '\8a'
+compose '\'' 'E' to '\90'
+compose '\'' 'e' to '\82'
+compose '^' 'E' to 'Ò'
+compose '^' 'e' to '\88'
+compose '"' 'E' to 'Ó'
+compose '"' 'e' to '\89'
+compose '`' 'I' to 'Þ'
+compose '`' 'i' to '\8d'
+compose '\'' 'I' to 'Ö'
+compose '\'' 'i' to '¡'
+compose '^' 'I' to '×'
+compose '^' 'i' to '\8c'
+compose '"' 'I' to 'Ø'
+compose '"' 'i' to '\8b'
+compose '-' 'D' to 'Ñ'
+compose '-' 'd' to 'Ð'
+compose '~' 'N' to '¥'
+compose '~' 'n' to '¤'
+compose '`' 'O' to 'ã'
+compose '`' 'o' to '\95'
+compose '\'' 'O' to 'à'
+compose '\'' 'o' to '¢'
+compose '^' 'O' to 'â'
+compose '^' 'o' to '\93'
+compose '~' 'O' to 'å'
+compose '~' 'o' to 'ä'
+compose '"' 'O' to '\99'
+compose '"' 'o' to '\94'
+compose '/' 'O' to '\9d'
+compose '/' 'o' to '\9b'
+compose '`' 'U' to 'ë'
+compose '`' 'u' to '\97'
+compose '\'' 'U' to 'é'
+compose '\'' 'u' to '£'
+compose '^' 'U' to 'ê'
+compose '^' 'u' to '\96'
+compose '"' 'U' to '\9a'
+compose '"' 'u' to '\81'
+compose '\'' 'Y' to 'í'
+compose '\'' 'y' to 'ì'
+compose 'T' 'H' to 'è'
+compose 't' 'h' to 'ç'
+compose 's' 's' to 'á'
+compose '"' 'y' to '\98'
+compose 's' 'z' to 'á'
+compose 'i' 'j' to '\98'
--- /dev/null
+# Estonian keymap with no dead keys
+# Ville Hallik <Ville.Hallik@mail.ee>
+
+include "et.map"
+
+keycode 13 = apostrophe grave dead_acute dead_grave
+keycode 41 = dead_caron tilde dead_caron dead_tilde
--- /dev/null
+# Estonian keymap
+# Ville Hallik <Ville.Hallik@mail.ee>
+#
+# Please note that there are two characters on estonian keyboard that
+# are'nt available in ISO-8859-15 charset: "currency" and "one_half". These
+# are provided here as hexadecimal codes 0xa4 and 0xbd as a convenience for
+# people who want to use this keymap with ISO-8859-1.
+
+charset "iso-8859-15"
+alt_is_meta
+keymaps 0-15
+strings as usual
+
+include "qwerty-layout"
+include "linux-with-alt-and-altgr"
+
+keycode 1 = Escape Escape
+keycode 2 = one exclam
+keycode 3 = two quotedbl at at nul nul nul nul
+keycode 4 = three numbersign sterling sterling
+keycode 5 = four 0xa4 dollar dollar
+keycode 6 = five percent
+keycode 7 = six ampersand VoidSymbol VoidSymbol \
+ Control_asciicircum Control_asciicircum \
+ Control_asciicircum Control_asciicircum
+keycode 8 = seven slash braceleft braceleft
+keycode 9 = eight parenleft bracketleft bracketleft \
+ Escape Escape Escape Escape
+keycode 10 = nine parenright bracketright bracketright \
+ Control_bracketright Control_bracketright \
+ Control_bracketright Control_bracketright
+keycode 11 = zero equal braceright braceright
+keycode 12 = plus question backslash backslash \
+ Control_underscore Control_underscore \
+ Control_backslash Control_backslash
+keycode 13 = dead_acute dead_grave dead_acute dead_grave
+keycode 14 = Delete Delete
+ control keycode 14 = BackSpace
+keycode 15 = Tab Tab
+keycode 18 = +e +E euro euro Control_e Control_e
+keycode 26 = +udiaeresis +Udiaeresis +udiaeresis +Udiaeresis Escape
+keycode 27 = +otilde +Otilde section section Control_bracketright
+keycode 28 = Return
+ alt keycode 28 = Meta_Control_m
+keycode 29 = Control
+keycode 31 = +s +S +scaron +Scaron Control_s Control_s
+keycode 39 = +odiaeresis +Odiaeresis +odiaeresis +Odiaeresis
+keycode 40 = +adiaeresis +Adiaeresis asciicircum asciicircum \
+ Control_asciicircum Control_asciicircum \
+ Control_asciicircum Control_asciicircum
+keycode 41 = dead_caron dead_tilde dead_caron dead_tilde
+ control keycode 41 = dead_diaeresis
+keycode 42 = Shift
+keycode 43 = apostrophe asterisk 0xbd 0xbd \
+ Control_backslash Control_backslash
+keycode 44 = +z +Z +zcaron +Zcaron Control_z Control_z
+keycode 51 = comma semicolon
+keycode 52 = period colon
+ control keycode 52 = Compose
+keycode 53 = minus underscore VoidSymbol VoidSymbol \
+ Control_underscore Control_underscore
+keycode 54 = Shift
+keycode 56 = Alt
+keycode 57 = space space
+ control keycode 57 = nul
+keycode 58 = Caps_Lock
+keycode 83 = KP_Comma
+keycode 86 = less greater bar bar
+keycode 97 = Control
+
+# These are the three extra keys found on Win95 keyboards:
+keycode 125 =
+keycode 126 =
+keycode 127 = Compose
+
+# Most compose definitions are same as for iso-8859-1
+compose as usual for "iso-8859-1"
+
+# Add some ISO-8859-15 specific compose definitions:
+compose '^' 's' to scaron
+compose '^' 'S' to Scaron
+compose '^' 'z' to zcaron
+compose '^' 'Z' to Zcaron
+compose 'o' 'e' to oe
+compose 'O' 'E' to OE
+compose '"' 'Y' to Ydiaeresis
+compose 'I' 'J' to Ydiaeresis
+compose '=' 'c' to euro
+compose '=' 'C' to euro
--- /dev/null
+# lt.map
+# KeyMap table for Lithuanian users (Baltic character set)
+# was written in 1999.04.01 by Gediminas Bukauskas:
+# Lithuania, Kaunas 3000
+# Raudonikiu 3 - 1
+# phone: (827) 793622
+# Email: bukagedi@takas.lt
+# Lithuanian characters are placed on first row:
+# 1 - A ogonek 4 - E aboveDot 7 - U ogonek
+# 2 - C coron 5 - I ogonek 8 - U macron
+# 3 - E ogonek 6 - S caron = - Z caron
+# Original signes are achieved by shifting Alt keys:
+# left Alt (Alt) -> 1 2 3 4 5 6 7 8 =
+# right Alt (AltGr) -> ! @ # $ % ^ & * +
+# Loading this keymap table makes Linux data files readable by Windows 95/98
+# panEuropean edition. The same keys mapping in the Xmodmap.baltic table
+# makes it possible to use your favorite True Type fonts from Windows.
+# Usage:
+# loadkeys lt.baltic.map; setfont lat4u-16.psf -m baltic
+# You can use a font from the set lat4u-*.psf
+charset "iso-8859-4"
+keymaps 0-2,4-6,8-9,12
+#alt_is_meta
+keycode 1 = Escape Escape
+keycode 2 = +0xE0 +0xC0 exclam nul nul nul one
+keycode 3 = +0xE8 +0xC8 at nul nul nul two
+keycode 4 = +0xE6 +0xC6 numbersign nul nul nul three
+# control keycode 4 = Escape
+keycode 5 = +0xEB +0xCB dollar nul nul nul four
+keycode 6 = +0xE1 +0xC1 percent nul nul nul five
+# control keycode 6 = Control_bracketright
+keycode 7 = +0xF0 +0xD0 asciicircum nul nul nul six
+# control keycode 7 = Control_asciicircum
+keycode 8 = +0xF8 +0xD8 ampersand nul nul nul seven
+keycode 9 = +0xFB +0xDB asterisk nul nul nul eight
+keycode 10 = nine parenleft parenleft nul nul nul nine
+keycode 11 = zero parenright parenright nul nul nul zero
+keycode 12 = minus underscore underscore nul nul nul minus
+keycode 13 = +0xFE +0xDE plus nul nul nul equal
+keycode 14 = Delete Delete
+keycode 15 = Tab Tab
+keycode 16 = q
+keycode 17 = w
+keycode 18 = e
+keycode 19 = r
+keycode 20 = t
+keycode 21 = y
+keycode 22 = u
+keycode 23 = i
+keycode 24 = o
+keycode 25 = p
+keycode 26 = bracketleft braceleft
+ control keycode 26 = Escape
+keycode 27 = bracketright braceright asciitilde Control_bracketright
+keycode 28 = Return
+ alt keycode 28 = Meta_Control_m
+keycode 29 = Control
+keycode 30 = a
+keycode 31 = s
+keycode 32 = d
+keycode 33 = f
+keycode 34 = g
+keycode 35 = h
+keycode 36 = j
+keycode 37 = k
+keycode 38 = l
+keycode 39 = semicolon colon
+keycode 40 = apostrophe quotedbl
+ control keycode 40 = Control_g
+keycode 41 = grave asciitilde asciitilde nul nul nul grave
+ control keycode 41 = nul
+keycode 42 = Shift
+keycode 43 = backslash bar bar nul nul nul backslash
+ control keycode 43 = Control_backslash
+keycode 44 = z
+keycode 45 = x
+keycode 46 = c
+keycode 47 = v
+keycode 48 = b
+keycode 49 = n
+keycode 50 = m
+keycode 51 = comma less
+keycode 52 = period greater
+keycode 53 = slash question
+ control keycode 53 = Delete
+keycode 54 = Shift
+keycode 55 = KP_Multiply
+keycode 56 = Alt
+keycode 57 = space space
+ control keycode 57 = nul
+keycode 58 = Caps_Lock
+keycode 59 = F1 F11 Console_13 F1
+ alt keycode 59 = Console_1
+ control alt keycode 59 = Console_1
+keycode 60 = F2 F12 Console_14 F2
+ alt keycode 60 = Console_2
+ control alt keycode 60 = Console_2
+keycode 61 = F3 F13 Console_15 F3
+ alt keycode 61 = Console_3
+ control alt keycode 61 = Console_3
+keycode 62 = F4 F14 Console_16 F4
+ alt keycode 62 = Console_4
+ control alt keycode 62 = Console_4
+keycode 63 = F5 F15 Console_17 F5
+ alt keycode 63 = Console_5
+ control alt keycode 63 = Console_5
+keycode 64 = F6 F16 Console_18 F6
+ alt keycode 64 = Console_6
+ control alt keycode 64 = Console_6
+keycode 65 = F7 F17 Console_19 F7
+ alt keycode 65 = Console_7
+ control alt keycode 65 = Console_7
+keycode 66 = F8 F18 Console_20 F8
+ alt keycode 66 = Console_8
+ control alt keycode 66 = Console_8
+keycode 67 = F9 F19 Console_21 F9
+ alt keycode 67 = Console_9
+ control alt keycode 67 = Console_9
+keycode 68 = F10 F20 Console_22 F10
+ alt keycode 68 = Console_10
+ control alt keycode 68 = Console_10
+keycode 69 = Num_Lock
+keycode 70 = Scroll_Lock Show_Memory Show_Registers Show_State
+ alt keycode 70 = Scroll_Lock
+keycode 71 = KP_7
+ alt keycode 71 = Ascii_7
+keycode 72 = KP_8
+ alt keycode 72 = Ascii_8
+keycode 73 = KP_9
+ alt keycode 73 = Ascii_9
+keycode 74 = KP_Subtract
+keycode 75 = KP_4
+ alt keycode 75 = Ascii_4
+keycode 76 = KP_5
+ alt keycode 76 = Ascii_5
+keycode 77 = KP_6
+ alt keycode 77 = Ascii_6
+keycode 78 = KP_Add
+keycode 79 = KP_1
+ alt keycode 79 = Ascii_1
+keycode 80 = KP_2
+ alt keycode 80 = Ascii_2
+keycode 81 = KP_3
+ alt keycode 81 = Ascii_3
+keycode 82 = KP_0
+ alt keycode 82 = Ascii_0
+keycode 83 = KP_Period
+ altgr control keycode 83 = Boot
+ control alt keycode 83 = Boot
+keycode 84 = Last_Console
+keycode 85 =
+keycode 86 = less greater bar
+keycode 87 = F11 F11 Console_23 F11
+ alt keycode 87 = Console_11
+ control alt keycode 87 = Console_11
+keycode 88 = F12 F12 Console_24 F12
+ alt keycode 88 = Console_12
+ control alt keycode 88 = Console_12
+keycode 89 =
+keycode 90 =
+keycode 91 =
+keycode 92 =
+keycode 93 =
+keycode 94 =
+keycode 95 =
+keycode 96 = KP_Enter
+keycode 97 = Control
+keycode 98 = KP_Divide
+keycode 99 = Control_backslash
+ control keycode 99 = Control_backslash
+keycode 100 = AltGr
+keycode 101 = Break
+keycode 102 = Find
+keycode 103 = Up
+keycode 104 = Prior
+ shift keycode 104 = Scroll_Backward
+keycode 105 = Left
+ alt keycode 105 = Decr_Console
+keycode 106 = Right
+ alt keycode 106 = Incr_Console
+keycode 107 = Select
+keycode 108 = Down
+keycode 109 = Next
+ shift keycode 109 = Scroll_Forward
+keycode 110 = Insert
+keycode 111 = Remove
+ altgr control keycode 111 = Boot
+ control alt keycode 111 = Boot
+keycode 112 =
+keycode 113 =
+keycode 114 =
+keycode 115 =
+keycode 116 =
+keycode 117 =
+keycode 118 =
+keycode 119 =
+keycode 120 =
+keycode 121 =
+keycode 122 =
+keycode 123 =
+keycode 124 =
+keycode 125 =
+keycode 126 =
+keycode 127 =
+string F1 = "\033[[A"
+string F2 = "\033[[B"
+string F3 = "\033[[C"
+string F4 = "\033[[D"
+string F5 = "\033[[E"
+string F6 = "\033[17~"
+string F7 = "\033[18~"
+string F8 = "\033[19~"
+string F9 = "\033[20~"
+string F10 = "\033[21~"
+string F11 = "\033[23~"
+string F12 = "\033[24~"
+string F13 = "\033[25~"
+string F14 = "\033[26~"
+string F15 = "\033[28~"
+string F16 = "\033[29~"
+string F17 = "\033[31~"
+string F18 = "\033[32~"
+string F19 = "\033[33~"
+string F20 = "\033[34~"
+string Find = "\033[1~"
+string Insert = "\033[2~"
+string Remove = "\033[3~"
+string Select = "\033[4~"
+string Prior = "\033[5~"
+string Next = "\033[6~"
--- /dev/null
+charset "iso-8859-4"
+#
+# version 1.12.
+# Lithuanian key-map for PC 101/102 keyboard.
+# Comments & bug reports to: Rièardas Èepas <rch@WriteMe.Com>
+# http://www.angelfire.com/me/rch/ll.html
+#
+# Usage:
+# kbd_mode -a; loadkeys lt.l4.map; setfont lat4u* -m vga2iso
+# and press Ctrl+Alt+4
+# Or:
+# kbd_mode -u; loadkeys lt.map; setfont LatArCyrHeb* -m vga2iso
+# and press Ctrl+Alt+8
+#
+# `vga2iso' screen-map is for non-Unicode mode to get proper ISO 8859-4
+# font maping.
+#
+#
+# BUGS: Caps-Lock doesn't work properly for Unicode characters. Use
+# Shift-Lock (Control+Caps-Lock) instead if you really need that.
+# Differences between this and default Linux 2.0.29 key-map:
+# AltGr is used for Lithuanian mode and AltGr+key combinations are
+# changed to Alt+Shift+key. Hex codes can be entered using keypad while
+# Control+Shift or Alt+Shift is pressed. Keypad layout for hex digits:
+# A B C D
+# 7 8 9 E
+# 4 5 6 E
+# 1 2 3 F
+# 00 F
+# Latin <-> Lithuanian modes are toggled by Alt+Enter or
+# Alt+Control+Enter or Alt+Caps-Lock. AltGr (right Alt) can be used to
+# shift the mode. Key between left Control and Alt on German keyboard is
+# another AltGr.
+# Keyboard layout (upper row of number keys) :
+# 1!¡ 2@È 3#Ê 4$Ì 5 %Ç 6^© 7&Ù 8*Þ 9(" 0)" -_ +=®Z
+# Aogonek Ccaron Eogonek Edot Iogonek Scaron Uogonek Umacron ,, " -_ Zcaron
+# All other keys are the same in both modes.
+# Control+Alt+u or Control+Alt+8 generates command line for
+# switching *current* (only) virtual console to Unicode mode.
+# Control+Alt+1 - default ISO 8859-1 charset mapping and non-Unicode
+# mode.
+# Control+Alt+4 - ISO 8859-4 charset mapping if you have loaded
+# LatArCyrHeb* (or lat4u-*) font with `vga2iso' screen map. Or lat4-*
+# font with `trivial' screen map.
+#
+# Backspace key (above Return/Enter) generates BackSpace (^H, octal
+# 010) and should delete a character before cursor. Delete key generates
+# Delete (^?, octal 177) and should delete a character above cursor. If
+# that doesn't happen you should:
+# 1) Edit /etc/login.defs - ERASE_CHAR 010
+# or run `reset' - should set stty erase character to ^H
+# or run `stty erase ^H'
+#
+# 2) Add to /etc/profile commands:
+# kbd_mode -u if you want input characters in Unicode.
+#
+# 3) [You don't need 3) if you use linux+utf8 or linux+k terminfo entry.]
+# Fix terminfo entry: infocmp -L linux >/tmp/linux
+# Edit file /tmp/linux It should have key_backspace and key_dc entries:
+# key_backspace=^H, key_btab=\E[Z, key_dc=\177,
+# key_sdc=\E[3$, key_send=\E[8$, key_shome=\E[7$, key_sic=\E[2$,
+# key_sleft=\E[d, key_sright=\E[c,
+# Compile entry (as root): tic /tmp/linux
+# 4) For bash and other programs using readline library create
+# ~/.inputrc or file pointed by INPUTRC variable, or /etc/inputrc
+# for newer versions:
+# set meta-flag On
+# set convert-meta Off
+# set input-meta On
+# set output-meta On
+# "\C-h": backward-delete-char
+# "\e\C-h": backward-kill-word
+# "\e[1~": beginning-of-line
+# "\e[H": beginning-of-line
+# "\e[7~": beginning-of-line
+# "\eOH": beginning-of-line
+# "\e[d": backward-word
+# "\C-?": delete-char
+# "\e[3~": delete-char
+# "\e[4~": end-of-line
+# "\e[F": end-of-line
+# "\e[8~": end-of-line
+# "\eOF": end-of-line
+# "\e[c": forward-word
+# "\e\C-?": kill-word
+# 4) Add to /etc/init.d/boot ( this startup file may be other for you system):
+# kbd_mode -u; loadkeys lt.map
+# or kbd_mode -a; loadkeys lt.l4.map
+# loadkeys affects all virtual consoles.
+#
+# Control+BackSpace is Delete and Control+Delete is Remove
+# (VT100 key). Most Meta_ and Control_Meta_ combinations are
+# enabled.
+# Control+Space gives nul, Shift+Control+Space - non-break space.
+# Shift+Control+minus gives discretionary (soft) hyphen,
+# Shift+Alt+minus - quotation dash (long) and Shift+Control+Alt+minus -
+# non-breaking hyphen.
+# Control+Alt+double_quote gives double turned comma quotation
+# mark, Shift+Control+Alt+double_quote gives double comma quotation
+# mark.
+# Shift+Function gives functions F11..22, Control+F. - F21..32,
+# Shift+Control+F. - F31..42. Shift+[Control+]Alt+F. - virtual consoles
+# 13..24.
+# Added Back_Tab as Shift+Tab, shifted arrows, Insert, Delete,
+# Home, End as in rxvt terminal.
+# Added F1 as Shift+Control+H (Emacs "feature").
+#
+# See kbd.FAQ for more info on Linux key-map.
+
+
+keymaps 0-15
+# Plain +Shift +Shift
+# +AltGr +AltGr
+# Plain 0 1 2 3
+# +Control 4 5 6 7
+# +Alt 8 9 10 11
+# +Control+Alt 12 13 14 15
+
+# AltGr = right Alt
+
+
+keycode 1 = Escape Escape Escape Escape \
+ VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
+ Meta_Escape Meta_Escape Meta_Escape Meta_Escape
+
+# +aogonek ± +Aogonek ¡
+keycode 2 = one exclam +aogonek +Aogonek \
+ VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
+ Meta_one Meta_exclam Meta_one Meta_exclam \
+ F202 F202 F202 F202
+# ISO 8859-1 - default Linux map
+string F202 = "kbd_mode -a; echo -ne '\\033\\045@\\033(B'\015"
+
+# +ccaron è +Ccaron È
+keycode 3 = two at +ccaron +Ccaron \
+ nul nul nul nul \
+ Meta_two Meta_at Meta_two Meta_at \
+ nul nul nul nul
+
+# +eogonek ê +Eogonek Ê
+keycode 4 = three numbersign +eogonek +Eogonek \
+ Escape Escape Escape Escape \
+ Meta_three Meta_numbersign Meta_three Meta_numbersign
+
+# +eabovedot ì +Eabovedot Ì
+keycode 5 = four dollar +eabovedot +Eabovedot \
+ Control_backslash Control_backslash Control_backslash Control_backslash \
+ Meta_four Meta_dollar Meta_four Meta_dollar \
+ F201 F201 F201 F201
+# ISO 8859-4 or other user map
+string F201 = "kbd_mode -a; echo -ne '\\033\\045@\\033(K'\015"
+
+# +iogonek ç +Iogonek Ç
+keycode 6 = five percent +iogonek +Iogonek \
+ Control_bracketright Control_bracketright Control_bracketright \
+ Control_bracketright \
+ Meta_five Meta_percent Meta_five Meta_percent
+
+# +scaron ¹ +Scaron ©
+keycode 7 = six asciicircum +scaron +Scaron \
+ Control_asciicircum Control_asciicircum Control_asciicircum \
+ Control_asciicircum \
+ Meta_six Meta_asciicircum Meta_six Meta_asciicircum \
+ Meta_Control_asciicircum Meta_Control_asciicircum Meta_Control_asciicircum \
+ Meta_Control_asciicircum
+
+# +uogonek ù +Uogonek Ù
+keycode 8 = seven ampersand +uogonek +Uogonek \
+ Control_underscore Control_underscore Control_underscore \
+ Control_underscore \
+ Meta_seven Meta_ampersand Meta_seven Meta_ampersand
+
+# +umacron þ +Umacron Þ
+keycode 9 = eight asterisk +umacron +Umacron \
+ Delete Delete Delete Delete \
+ Meta_eight Meta_asterisk Meta_eight Meta_asterisk \
+ F200 F200 F200 F200
+# UTF-8
+string F200 = "kbd_mode -u; echo -ne '\\033\\045G\\033(K'\015"
+
+
+# 201E not available in ISO 8859-4 low_double_comma_quotation_mark "
+keycode 10 = nine parenleft 0x90 parenleft \
+ VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
+ Meta_nine Meta_parenleft Meta_nine Meta_parenleft
+
+# 201C not available in ISO 8859-4 double_turned_comma_quotation_mark "
+keycode 11 = zero parenright 0x91 parenright \
+ VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
+ Meta_zero Meta_parenright Meta_zero Meta_parenright
+
+# 00AD soft hyphen = discretionary hyphen
+# 2015 horizontal bar = quotation dash * long dash introducing quoted text
+# 2011 non-breaking hyphen
+keycode 12 = minus underscore minus underscore \
+ Control_underscore hyphen Control_underscore hyphen \
+ Meta_minus minus Meta_minus minus \
+ Meta_Control_underscore minus Meta_Control_underscore minus
+
+# +zcaron ¾ +Zcaron ®
+keycode 13 = equal plus +zcaron +Zcaron \
+ VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
+ Meta_equal Meta_plus Meta_equal Meta_plus
+
+# edit this if you want the key above <Enter> to delete symbols above
+# cursor, not before.
+keycode 14 = \
+ BackSpace BackSpace BackSpace BackSpace \
+ Delete Delete Delete Delete \
+ Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace \
+ Meta_Delete Meta_Delete Meta_Delete Meta_Delete
+
+string F215 = "\033[Z"
+keycode 15 = Tab F215 Tab F215 \
+ VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
+ Meta_Tab Meta_Tab Meta_Tab Meta_Tab
+
+# Single characters are defined by default.
+keycode 16 = +q
+keycode 17 = +w
+keycode 18 = +e
+keycode 19 = +r
+keycode 20 = +t
+keycode 21 = +y
+keycode 22 = +u
+ control alt keycode 22 = F200
+ shift control alt keycode 22 = F200
+ altgr control alt keycode 22 = F200
+ shift altgr control alt keycode 22 = F200
+# UTF-8
+#string F200 = "kbd_mode -u; echo -ne '\\033\\045G\\033(K'\015"
+
+keycode 23 = +i
+keycode 24 = +o
+keycode 25 = +p
+keycode 26 = bracketleft braceleft bracketleft braceleft \
+ Escape Escape Escape Escape \
+ Meta_bracketleft Meta_braceleft Meta_bracketleft Meta_braceleft
+
+keycode 27 = bracketright braceright bracketright braceright \
+ Control_bracketright Control_bracketright \
+ Control_bracketright Control_bracketright \
+ Meta_bracketright Meta_braceright Meta_bracketright Meta_braceright \
+ Meta_Control_bracketright Meta_Control_bracketright \
+ Meta_Control_bracketright Meta_Control_bracketright
+
+keycode 28 = Return Return Return Return \
+ Return Return Return Return \
+ AltGr_Lock AltGr_Lock AltGr_Lock AltGr_Lock \
+ AltGr_Lock AltGr_Lock AltGr_Lock AltGr_Lock
+
+keycode 29 = Control
+keycode 30 = +a
+keycode 31 = +s
+keycode 32 = +d
+keycode 33 = +f
+keycode 34 = +g
+keycode 35 = +h
+ shift control keycode 35 = F1
+ shift AltGr control keycode 35 = F1
+
+keycode 36 = +j
+keycode 37 = +k
+keycode 38 = +l
+keycode 39 = semicolon colon semicolon colon \
+ VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
+ Meta_semicolon Meta_colon Meta_semicolon Meta_colon
+
+# 201C left double quotation mark = double turned comma quotation mark "
+# 201D right double quotation mark = double comma quotation mark "
+keycode 40 = apostrophe quotedbl apostrophe quotedbl \
+ Control_g Control_g Control_g Control_g \
+ Meta_apostrophe Meta_quotedbl Meta_apostrophe Meta_quotedbl \
+ 0x91 quotedbl 0x91 quotedbl
+
+keycode 41 = grave asciitilde grave asciitilde \
+ nul nul nul nul \
+ Meta_grave Meta_asciitilde Meta_grave Meta_asciitilde
+
+keycode 42 = Shift
+
+keycode 43 = backslash bar backslash bar \
+ Control_backslash Control_backslash Control_backslash Control_backslash \
+ Meta_backslash Meta_bar Meta_backslash Meta_bar \
+ Meta_Control_backslash Meta_Control_backslash \
+ Meta_Control_backslash Meta_Control_backslash
+keycode 44 = +z
+keycode 45 = +x
+keycode 46 = +c
+keycode 47 = +v
+keycode 48 = +b
+keycode 49 = +n
+keycode 50 = +m
+keycode 51 = comma less comma less \
+ VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
+ Meta_comma Meta_less Meta_comma Meta_less
+
+keycode 52 = period greater period greater \
+ Compose Compose Compose Compose \
+ Meta_period Meta_greater Meta_period Meta_greater
+
+keycode 53 = slash question slash question \
+ Delete Delete Delete Delete \
+ Meta_slash Meta_question Meta_slash Meta_question
+
+keycode 54 = Shift
+
+keycode 55 = KP_Multiply KP_Multiply KP_Multiply KP_Multiply \
+ KP_Multiply Hex_C KP_Multiply Hex_C \
+ KP_Multiply Hex_C KP_Multiply Hex_C \
+ KP_Multiply KP_Multiply KP_Multiply KP_Multiply
+
+keycode 56 = Alt
+
+# 0xA0 no-break space
+keycode 57 = space space space space \
+ nul nobreakspace nul nobreakspace \
+ Meta_space Meta_space Meta_space Meta_space \
+ VoidSymbol nobreakspace VoidSymbol nobreakspace
+
+keycode 58 = Caps_Lock Caps_Lock Caps_Lock Caps_Lock \
+ Shift_Lock Shift_Lock Shift_Lock Shift_Lock \
+ AltGr_Lock AltGr_Lock AltGr_Lock AltGr_Lock \
+ Caps_Lock Caps_Lock Caps_Lock Caps_Lock
+
+keycode 59 = F1 F11 F1 F11 \
+ F21 F31 F21 F31 \
+ Console_1 Console_13 Console_1 Console_13 \
+ Console_1 Console_13 Console_1 Console_13
+keycode 60 = F2 F12 F2 F12 \
+ F22 F32 F22 F32 \
+ Console_2 Console_14 Console_2 Console_14 \
+ Console_2 Console_14 Console_2 Console_14
+keycode 61 = F3 F13 F3 F13 \
+ F23 F33 F23 F33 \
+ Console_3 Console_15 Console_3 Console_15 \
+ Console_3 Console_15 Console_3 Console_15
+keycode 62 = F4 F14 F4 F14 \
+ F24 F34 F24 F34 \
+ Console_4 Console_16 Console_4 Console_16 \
+ Console_4 Console_16 Console_4 Console_16
+keycode 63 = F5 F15 F5 F15 \
+ F25 F35 F25 F35 \
+ Console_5 Console_17 Console_5 Console_17 \
+ Console_5 Console_17 Console_5 Console_17
+keycode 64 = F6 F16 F6 F16 \
+ F26 F36 F26 F36 \
+ Console_6 Console_18 Console_6 Console_18 \
+ Console_6 Console_18 Console_6 Console_18
+keycode 65 = F7 F17 F7 F17 \
+ F27 F37 F27 F37 \
+ Console_7 Console_19 Console_7 Console_19 \
+ Console_7 Console_19 Console_7 Console_19
+keycode 66 = F8 F18 F8 F18 \
+ F28 F38 F28 F38 \
+ Console_8 Console_20 Console_8 Console_20 \
+ Console_8 Console_20 Console_8 Console_20
+keycode 67 = F9 F19 F9 F19 \
+ F29 F39 F29 F39 \
+ Console_9 Console_21 Console_9 Console_21 \
+ Console_9 Console_21 Console_9 Console_21
+keycode 68 = F10 F20 F10 F20 \
+ F30 F40 F30 F40 \
+ Console_10 Console_22 Console_10 Console_22 \
+ Console_10 Console_22 Console_10 Console_22
+keycode 69 = Num_Lock Bare_Num_Lock Num_Lock Bare_Num_Lock \
+ Num_Lock Hex_A Num_Lock Hex_A \
+ Num_Lock Hex_A Num_Lock Hex_A \
+ Num_Lock Num_Lock Num_Lock Num_Lock
+keycode 70 = Scroll_Lock Show_Memory Scroll_Lock Show_Memory \
+ Show_State VoidSymbol Show_State VoidSymbol \
+ Scroll_Lock Show_Registers Scroll_Lock Show_Registers
+keycode 71 = KP_7 KP_7 KP_7 KP_7 \
+ KP_7 Hex_7 KP_7 Hex_7 \
+ Ascii_7 Hex_7 Ascii_7 Hex_7 \
+ KP_7 KP_7 KP_7 KP_7
+keycode 72 = KP_8 KP_8 KP_8 KP_8 \
+ KP_8 Hex_8 KP_8 Hex_8 \
+ Ascii_8 Hex_8 Ascii_8 Hex_8 \
+ KP_8 KP_8 KP_8 KP_8
+keycode 73 = KP_9 KP_9 KP_9 KP_9 \
+ KP_9 Hex_9 KP_9 Hex_9 \
+ Ascii_9 Hex_9 Ascii_9 Hex_9 \
+ KP_9 KP_9 KP_9 KP_9
+keycode 74 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract \
+ KP_Subtract Hex_D KP_Subtract Hex_D \
+ KP_Subtract Hex_D KP_Subtract Hex_D \
+ KP_Subtract KP_Subtract KP_Subtract KP_Subtract
+keycode 75 = KP_4 KP_4 KP_4 KP_4 \
+ KP_4 Hex_4 KP_4 Hex_4 \
+ Ascii_4 Hex_4 Ascii_4 Hex_4 \
+ KP_4 KP_4 KP_4 KP_4
+keycode 76 = KP_5 KP_5 KP_5 KP_5 \
+ KP_5 Hex_5 KP_5 Hex_5 \
+ Ascii_5 Hex_5 Ascii_5 Hex_5 \
+ KP_5 KP_5 KP_5 KP_5
+keycode 77 = KP_6 KP_6 KP_6 KP_6 \
+ KP_6 Hex_6 KP_6 Hex_6 \
+ Ascii_6 Hex_6 Ascii_6 Hex_6 \
+ KP_6 KP_6 KP_6 KP_6
+keycode 78 = KP_Add KP_Add KP_Add KP_Add \
+ KP_Add Hex_E KP_Add Hex_E \
+ KP_Add Hex_E KP_Add Hex_E \
+ KP_Add KP_Add KP_Add KP_Add
+keycode 79 = KP_1 KP_1 KP_1 KP_1 \
+ KP_1 Hex_1 KP_1 Hex_1 \
+ Ascii_1 Hex_1 Ascii_1 Hex_1 \
+ KP_1 KP_1 KP_1 KP_1
+keycode 80 = KP_2 KP_2 KP_2 KP_2 \
+ KP_2 Hex_2 KP_2 Hex_2 \
+ Ascii_2 Hex_2 Ascii_2 Hex_2 \
+ KP_2 KP_2 KP_2 KP_2
+keycode 81 = KP_3 KP_3 KP_3 KP_3 \
+ KP_3 Hex_3 KP_3 Hex_3 \
+ Ascii_3 Hex_3 Ascii_3 Hex_3 \
+ KP_3 KP_3 KP_3 KP_3
+keycode 82 = KP_0 KP_0 KP_0 KP_0 \
+ KP_0 Hex_0 KP_0 Hex_0 \
+ Ascii_0 Hex_0 Ascii_0 Hex_0 \
+ KP_0 KP_0 KP_0 KP_0
+keycode 83 = KP_Period
+ control alt keycode 83 = Boot
+ altgr control alt keycode 83 = Boot
+
+# Alt + print-screen
+keycode 84 = Last_Console
+keycode 85 =
+#keycode 86 = less greater bar
+# alt keycode 86 = Meta_less
+
+# On German keyboards it is between left control and left alt keys:
+keycode 86 = AltGr
+
+keycode 87 = F11 F21 F11 F21 \
+ F31 F41 F31 F41 \
+ Console_11 Console_23 Console_11 Console_23 \
+ Console_11 Console_23 Console_11 Console_23
+keycode 88 = F12 F22 F12 F22 \
+ F32 F42 F32 F42 \
+ Console_12 Console_24 Console_12 Console_24 \
+ Console_12 Console_24 Console_12 Console_24
+keycode 89 =
+keycode 90 =
+keycode 91 =
+keycode 92 =
+keycode 93 =
+keycode 94 =
+keycode 95 =
+keycode 96 = KP_Enter KP_Enter KP_Enter KP_Enter \
+ KP_Enter Hex_F KP_Enter Hex_F \
+ AltGr_Lock Hex_F AltGr_Lock Hex_F \
+ AltGr_Lock AltGr_Lock AltGr_Lock AltGr_Lock
+
+keycode 97 = Control
+
+keycode 98 = KP_Divide KP_Divide KP_Divide KP_Divide \
+ KP_Divide Hex_B KP_Divide Hex_B \
+ KP_Divide Hex_B KP_Divide Hex_B \
+ KP_Divide KP_Divide KP_Divide KP_Divide
+
+keycode 99 = Control_backslash # 99=Print-Screen
+keycode 100 = AltGr
+keycode 101 = Break # 101=Control-Pause
+string F102 = "\033[7$"
+keycode 102 = Find # =Home
+ shift keycode 102 = F102
+ shift AltGr keycode 102 = F102
+string F103 = "\033[a"
+keycode 103 = Up
+ shift keycode 103 = F103
+ shift AltGr keycode 103 = F103
+ alt keycode 103 = Spawn_Console
+ AltGr alt keycode 103 = Spawn_Console
+ shift alt keycode 103 = Spawn_Console
+ shift AltGr alt keycode 103 = Spawn_Console
+keycode 104 = Prior # =PageUp
+ shift keycode 104 = Scroll_Backward
+ AltGr shift keycode 104 = Scroll_Backward
+string F105 = "\033[d"
+keycode 105 = Left F105 Left F105 \
+ Left F105 Left F105 \
+ Decr_Console Decr_Console Decr_Console Decr_Console \
+ Decr_Console Decr_Console Decr_Console Decr_Console
+string F106 = "\033[c"
+keycode 106 = Right F106 Right F106 \
+ Right F106 Right F106 \
+ Incr_Console Incr_Console Incr_Console Incr_Console \
+ Incr_Console Incr_Console Incr_Console Incr_Console
+string F107 = "\033[8$"
+keycode 107 = Select # =End
+ shift keycode 107 = F107
+ shift AltGr keycode 107 = F107
+string F108 = "\033[b"
+keycode 108 = Down
+ shift keycode 108 = F108
+ shift AltGr keycode 108 = F108
+keycode 109 = Next # =PageDown
+ shift keycode 109 = Scroll_Forward
+ AltGr shift keycode 109 = Scroll_Forward
+string F110 = "\033[2$"
+keycode 110 = Insert
+ shift keycode 110 = F110
+ shift AltGr keycode 110 = F110
+
+# Edit this if you want strict VT100 emulation.
+string F111 = "\033[3$"
+keycode 111 = Delete F111 Delete F111 \
+ Remove Remove Remove Remove \
+ Meta_Delete Meta_Delete Meta_Delete Meta_Delete \
+ Boot Boot Boot Boot
+
+# My PC 102 keyboard seems don't have 112-118.
+keycode 112 = Macro
+keycode 113 = F13
+keycode 114 = F14
+keycode 115 = Help
+keycode 116 = Do
+keycode 117 = F17
+keycode 118 = KP_MinPlus
+
+keycode 119 = Pause
+keycode 120 =
+keycode 121 =
+keycode 122 =
+keycode 123 =
+keycode 124 =
+keycode 125 =
+keycode 126 =
+keycode 127 =
+string F1 = "\033[[A"
+string F2 = "\033[[B"
+string F3 = "\033[[C"
+string F4 = "\033[[D"
+string F5 = "\033[[E"
+string F6 = "\033[17~"
+string F7 = "\033[18~"
+string F8 = "\033[19~"
+string F9 = "\033[20~"
+string F10 = "\033[21~"
+string F11 = "\033[23~"
+string F12 = "\033[24~"
+string F13 = "\033[25~"
+string F14 = "\033[26~"
+string F15 = "\033[28~"
+string F16 = "\033[29~"
+string F17 = "\033[31~"
+string F18 = "\033[32~"
+string F19 = "\033[33~"
+string F20 = "\033[34~"
+string F21 = "\033[35~"
+string F22 = "\033[36~"
+string F23 = "\033[37~"
+string F24 = "\033[38~"
+string F25 = "\033[39~"
+string F26 = "\033[40~"
+string F27 = "\033[41~"
+string F28 = "\033[42~"
+string F29 = "\033[43~"
+string F30 = "\033[44~"
+string F31 = "\033[45~"
+string F32 = "\033[46~"
+string F33 = "\033[47~"
+string F34 = "\033[48~"
+string F35 = "\033[49~"
+string F36 = "\033[50~"
+string F37 = "\033[51~"
+string F38 = "\033[52~"
+string F39 = "\033[53~"
+string F40 = "\033[54~"
+string F41 = "\033[55~"
+string F42 = "\033[56~"
+string Find = "\033[1~"
+string Insert = "\033[2~"
+string Remove = "\033[3~"
+string Select = "\033[4~"
+string Prior = "\033[5~"
+string Next = "\033[6~"
+string Macro = "\033[M"
+string Pause = "\033[P"
+
+# ISO-8859-1 characters - don't work in Unicode mode as of
+# loadkeys V.89 and Linux 2.0.29. Use Control+Alt+1 to see them.
+compose as usual for "iso-8859-1"
-#charset "iso-10646"
-#charset "iso-8859-4"
-#encoding: UTF-8
-# Use echo -ne '\033%G' on current console to see all characters properly.
+#encoding "UTF-8"
+#
+# version 1.12.
+# Lithuanian key-map for PC 101/102 keyboard.
+# Comments & bug reports to: Ričardas Čepas <rch@WriteMe.Com>
+# http://www.angelfire.com/me/rch/ll.html
#
-# Lithuanian key-map for PC 101/102 keyboard in Unicode mode. V1.03.
-# Comments & bug reports to: Ričardas Čepas <rch@pub.osf.lt>
# Usage:
+# kbd_mode -a; loadkeys lt.l4.map; setfont lat4u* -m vga2iso
+# and press Ctrl+Alt+4
+# Or:
# kbd_mode -u; loadkeys lt.map; setfont LatArCyrHeb* -m vga2iso
-# `vga2iso' map is for non-Unicode mode to get proper ISO 8859-4 font maping.
+# and press Ctrl+Alt+8
+#
+# `vga2iso' screen-map is for non-Unicode mode to get proper ISO 8859-4
+# font mapping.
+#
#
# BUGS: Caps-Lock doesn't work properly for Unicode characters. Use
# Shift-Lock (Control+Caps-Lock) instead if you really need that.
# 010) and should delete a character before cursor. Delete key generates
# Delete (^?, octal 177) and should delete a character above cursor. If
# that doesn't happen you should:
-# 1) Add to ~/.bashrc and /etc/profile commands:
-# reset # should set stty erase character to ^H
-# kbd_mode -u
-# 2) [You don't need 2) if you use only linux+utf8 terminal.]
+# 1) Edit /etc/login.defs - ERASE_CHAR 010
+# or run `reset' - should set stty erase character to ^H
+# or run `stty erase ^H'
+#
+# 2) Add to /etc/profile commands:
+# kbd_mode -u if you want input characters in Unicode.
+#
+# 3) [You don't need 3) if you use linux+utf8 or linux+k terminfo entry.]
# Fix terminfo entry: infocmp -L linux >/tmp/linux
# Edit file /tmp/linux It should have key_backspace and key_dc entries:
-# key_backspace=^H, key_btab=\E[Z, key_dc=\177,
+# key_backspace=^H, key_btab=\E[Z, key_dc=\177,
# key_sdc=\E[3$, key_send=\E[8$, key_shome=\E[7$, key_sic=\E[2$,
# key_sleft=\E[d, key_sright=\E[c,
# Compile entry (as root): tic /tmp/linux
-# 3) For bash and other programs using libreadline library create
-# ~/.inputrc or global file pointed by INPUTRC variable:
+# 4) For bash and other programs using readline library create
+# ~/.inputrc or file pointed by INPUTRC variable, or /etc/inputrc
+# for newer versions:
# set meta-flag On
# set convert-meta Off
+# set input-meta On
# set output-meta On
# "\C-h": backward-delete-char
# "\e\C-h": backward-kill-word
# "\eOF": end-of-line
# "\e[c": forward-word
# "\e\C-?": kill-word
-# 4) Add to /etc/init.d/boot ( this startup file may be other for you system):
+# 5) Add to /etc/init.d/boot ( this startup file may be other for you system):
# kbd_mode -u; loadkeys lt.map
+# or kbd_mode -a; loadkeys lt.l4.map
# loadkeys affects all virtual consoles.
#
# Control+BackSpace is Delete and Control+Delete is Remove
#
# See kbd.FAQ for more info on Linux key-map.
-
keymaps 0-15
# Plain +Shift +Shift
# +AltGr +AltGr
# AltGr = right Alt
+
keycode 1 = Escape Escape Escape Escape \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
- Meta_Escape Meta_Escape Meta_Escape Meta_Escape
+ Meta_Escape Meta_Escape Meta_Escape Meta_Escape
-# +aogonek \80Ä\85 +Aogonek Ą
+# +aogonek ą +Aogonek Ą
keycode 2 = one exclam U+0105 U+0104 \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
Meta_one Meta_exclam Meta_one Meta_exclam \
Control_underscore \
Meta_seven Meta_ampersand Meta_seven Meta_ampersand
-# +umacron ū +Umacron Ū
+# +umacron ū +Umacron Ū
keycode 9 = eight asterisk U+016b U+016a \
Delete Delete Delete Delete \
Meta_eight Meta_asterisk Meta_eight Meta_asterisk \
F200 F200 F200 F200
# UTF-8
-string F200 = "kbd_mode -u; echo -ne '\\033\\045G\\033(K'\015"
+string F200 = "kbd_mode -u; echo -ne '\\033\\045G\\033(K'\015"
-# U+201C not available in ISO 8859-4 low_double_comma_quotation_mark „
+# 201E not available in ISO 8859-4 low_double_comma_quotation_mark „
keycode 10 = nine parenleft U+201e parenleft \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
Meta_nine Meta_parenleft Meta_nine Meta_parenleft
-# U+201C not available in ISO 8859-4 double_turned_comma_quotation_mark “
+# 201C not available in ISO 8859-4 double_turned_comma_quotation_mark “
keycode 11 = zero parenright U+201c parenright \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
Meta_zero Meta_parenright Meta_zero Meta_parenright
-# U+00AD soft hyphen = discretionary hyphen
-# U+2015 horizontal bar = quotation dash * long dash introducing quoted text
-# U+2011 non-breaking hyphen
+# 00AD soft hyphen = discretionary hyphen
+# 2015 horizontal bar = quotation dash * long dash introducing quoted text
+# 2011 non-breaking hyphen
keycode 12 = minus underscore minus underscore \
Control_underscore U+00ad Control_underscore U+00ad \
Meta_minus U+2015 Meta_minus U+2015 \
# +zcaron ž +Zcaron Ž
keycode 13 = equal plus U+017e U+017d \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
- Meta_equal Meta_plus Meta_equal Meta_plus
+ Meta_equal Meta_plus Meta_equal Meta_plus
# edit this if you want the key above <Enter> to delete symbols above
# cursor, not before.
BackSpace BackSpace BackSpace BackSpace \
Delete Delete Delete Delete \
Meta_BackSpace Meta_BackSpace Meta_BackSpace Meta_BackSpace \
- Meta_Delete Meta_Delete Meta_Delete Meta_Delete
+ Meta_Delete Meta_Delete Meta_Delete Meta_Delete
string F215 = "\033[Z"
keycode 15 = Tab F215 Tab F215 \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
- Meta_Tab Meta_Tab Meta_Tab Meta_Tab
+ Meta_Tab Meta_Tab Meta_Tab Meta_Tab
# Single characters are defined by default.
keycode 16 = +q
altgr control alt keycode 22 = F200
shift altgr control alt keycode 22 = F200
# UTF-8
-#string F200 = "kbd_mode -u; echo -ne '\\033\\045G\\033(K'\015"
+#string F200 = "kbd_mode -u; echo -ne '\\033\\045G\\033(K'\015"
keycode 23 = +i
keycode 24 = +o
VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
Meta_semicolon Meta_colon Meta_semicolon Meta_colon
-# U+201C left double quotation mark = double turned comma quotation mark “
-# U+201D right double quotation mark = double comma quotation mark ”
+# 201C left double quotation mark = double turned comma quotation mark “
+# 201D right double quotation mark = double comma quotation mark ”
keycode 40 = apostrophe quotedbl apostrophe quotedbl \
Control_g Control_g Control_g Control_g \
Meta_apostrophe Meta_quotedbl Meta_apostrophe Meta_quotedbl \
Delete Delete Delete Delete \
Meta_slash Meta_question Meta_slash Meta_question
-keycode 54 = Shift
+keycode 54 = Shift
keycode 55 = KP_Multiply KP_Multiply KP_Multiply KP_Multiply \
KP_Multiply Hex_C KP_Multiply Hex_C \
Ascii_0 Hex_0 Ascii_0 Hex_0 \
KP_0 KP_0 KP_0 KP_0
keycode 83 = KP_Period
- control alt keycode 83 = Boot
- altgr control alt keycode 83 = Boot
+ control alt keycode 83 = Boot
+ altgr control alt keycode 83 = Boot
# Alt + print-screen
keycode 84 = Last_Console
keycode 85 =
-#keycode 86 = less greater bar
-# alt keycode 86 = Meta_less
+#keycode 86 = less greater bar
+# alt keycode 86 = Meta_less
# On German keyboards it is between left control and left alt keys:
keycode 86 = AltGr
keycode 103 = Up
shift keycode 103 = F103
shift AltGr keycode 103 = F103
- alt keycode 103 = Spawn_Console
- AltGr alt keycode 103 = Spawn_Console
- shift alt keycode 103 = Spawn_Console
- shift AltGr alt keycode 103 = Spawn_Console
+ alt keycode 103 = Spawn_Console
+ AltGr alt keycode 103 = Spawn_Console
+ shift alt keycode 103 = Spawn_Console
+ shift AltGr alt keycode 103 = Spawn_Console
keycode 104 = Prior # =PageUp
shift keycode 104 = Scroll_Backward
AltGr shift keycode 104 = Scroll_Backward
string F105 = "\033[d"
-keycode 105 = Left
- shift keycode 105 = F105
- shift AltGr keycode 105 = F105
- alt keycode 105 = Decr_Console
- AltGr alt keycode 105 = Decr_Console
- shift alt keycode 105 = Decr_Console
- shift AltGr alt keycode 105 = Decr_Console
+keycode 105 = Left F105 Left F105 \
+ Left F105 Left F105 \
+ Decr_Console Decr_Console Decr_Console Decr_Console \
+ Decr_Console Decr_Console Decr_Console Decr_Console
string F106 = "\033[c"
-keycode 106 = Right
- shift keycode 106 = F106
- shift AltGr keycode 106 = F106
- alt keycode 106 = Incr_Console
- AltGr alt keycode 106 = Incr_Console
- shift alt keycode 106 = Incr_Console
- shift AltGr alt keycode 106 = Incr_Console
+keycode 106 = Right F106 Right F106 \
+ Right F106 Right F106 \
+ Incr_Console Incr_Console Incr_Console Incr_Console \
+ Incr_Console Incr_Console Incr_Console Incr_Console
string F107 = "\033[8$"
keycode 107 = Select # =End
shift keycode 107 = F107
Meta_Delete Meta_Delete Meta_Delete Meta_Delete \
Boot Boot Boot Boot
-# My PC 102 keyboard seems don't have 112-118.
+# My PC 102 keyboard seems don't have 112-118.
keycode 112 = Macro
keycode 113 = F13
keycode 114 = F14
# ISO-8859-1 characters - don't work in Unicode mode as of
# loadkeys V.89 and Linux 2.0.29. Use Control+Alt+1 to see them.
compose as usual for "iso-8859-1"
-
-
keycode 2 = one exclam
keycode 3 = two quotedbl at nul nul
keycode 4 = three numbersign
- control keycode 4 = Escape
+ control keycode 4 = Escape
keycode 5 = four dollar dollar Control_backslash
keycode 6 = five percent
- control keycode 6 = Control_bracketright
+ control keycode 6 = Control_bracketright
keycode 7 = six ampersand
- control keycode 7 = Control_asciicircum
-keycode 8 = seven underscore braceleft Control_underscore
+ control keycode 7 = Control_asciicircum
+keycode 8 = seven underscore braceleft
+ control keycode 8 = Control_underscore
keycode 9 = eight parenleft bracketleft Delete
keycode 10 = nine parenright bracketright
keycode 11 = zero parenright braceright
-keycode 12 = slash question backslash Control_underscore Control_underscore
+keycode 12 = slash question backslash
+ control keycode 12 = Control_underscore
+ shift control keycode 12 = Control_underscore
keycode 13 = equal asciitilde
keycode 14 = Delete
keycode 15 = Tab
control keycode 53 = Delete
keycode 54 = Shift
keycode 56 = Alt
-keycode 57 = space space
+keycode 57 = space
control keycode 57 = nul
keycode 58 = Caps_Lock
keycode 86 = bracketright greater bar
--- /dev/null
+# From ad.h.huikeshoven@nl.arthurandersen.com Sun Apr 18 23:47:10 1999
+# Subject: Dutch Keyboard
+# I installed SuSE Linux 6.0 on my IBM Aptiva this weekend.
+# The machine comes with a Dutch, Windows compatible, 104 key keyboard.
+# I developed a keymap for this keyboard
+# The keyboard features dead keys, a pretty weird rearrangement
+# of keys like (){}[]<>~` etc., a Euro sign.
+#
+# nl2.map - based on us.map
+# Developed by Ad H. Huikeshoven, April 18, 1999.
+# For IBM manufactured Windows Keyboard, 104 key, for the Dutch market.
+# This is an alpha version of the map. Not all AltGr keys are
+# implemented yet.
+# If you feel like mailing me, mail ad.h.huikeshoven@nl.arthurandersen.com.
+#
+keymaps 0-2,4-6,8-9,12
+alt_is_meta
+include "qwerty-layout"
+include "linux-with-alt-and-altgr"
+strings as usual
+#number Normal Shift AltGr
+#--------------------------------------------------------------------------
+keycode 1 = Escape
+keycode 2 = one exclam onesuperior
+keycode 3 = two quotedbl twosuperior
+keycode 4 = three numbersign threesuperior
+ control keycode 4 = Escape
+keycode 5 = four dollar onequarter
+keycode 6 = five percent onehalf
+ control keycode 6 = Control_bracketright
+keycode 7 = six ampersand threequarters
+ control keycode 7 = Control_asciicircum
+keycode 8 = seven underscore sterling
+keycode 9 = eight parenleft braceleft
+keycode 10 = nine parenright braceright
+keycode 11 = zero apostrophe braceright
+keycode 12 = slash question backslash Control_underscore
+keycode 13 = degree asciitilde dead_cedilla
+keycode 14 = Delete
+keycode 15 = Tab
+keycode 18 = e E euro
+keycode 19 = r R paragraph
+keycode 26 = dead_diaeresis dead_circumflex
+ control keycode 26 = Escape
+keycode 27 = asterisk bar
+keycode 28 = Return
+ alt keycode 28 = Meta_Control_m
+keycode 29 = Control
+keycode 31 = s S ssharp
+keycode 39 = plus plusminus
+keycode 40 = dead_acute dead_grave
+ control keycode 40 = Control_g
+keycode 41 = at section notsign
+ control keycode 41 = nul
+keycode 42 = Shift
+keycode 43 = less greater
+keycode 44 = z Z guillemotleft
+keycode 45 = x X guillemotright
+keycode 46 = c C currency
+ control keycode 43 = Control_backslash
+keycode 50 = m M mu
+keycode 51 = comma semicolon
+keycode 52 = period colon period
+keycode 53 = minus equal
+ control keycode 53 = Delete
+keycode 54 = Shift
+keycode 56 = Alt
+keycode 57 = space
+ control keycode 57 = nul
+keycode 58 = Caps_Lock
+keycode 86 = bracketright bracketleft brokenbar
+# end of nl.map
--- /dev/null
+# From eha@dasc.nl Wed Mar 31 13:55:06 1999
+# From: Eric Hameleers <eha@dasc.nl>
+#
+# Dutch keymap for IBM ThinkPads (765L, 600, 770 and 380).
+#
+# Key mapping for dutch keyboard (on my IBM-ThinkPad but generally useable)
+# Contributed by Eric Hameleers (eric.hameleers@nl.ibm.com)
+#
+# Added the circumflex as AltGr func. of the key with the dead_circumflex
+#
+charset "iso-8859-1"
+keymaps 0-2,4-6,8-9,12
+alt_is_meta
+include "qwerty-layout"
+ altgr keycode 19 = paragraph
+ altgr keycode 31 = ssharp
+ altgr keycode 44 = guillemotleft
+ altgr keycode 45 = guillemotright
+ altgr keycode 46 = cent
+ altgr keycode 50 = mu
+include "linux-with-alt-and-altgr"
+strings as usual
+compose as usual for "iso-8859-1"
+
+keycode 1 = Escape
+keycode 2 = one exclam onesuperior
+keycode 3 = two quotedbl twosuperior
+ control keycode 3 = nul
+ shift control keycode 3 = nul
+keycode 4 = three numbersign threesuperior
+ control keycode 4 = Escape
+keycode 5 = four dollar onequarter
+ control keycode 5 = Control_backslash
+keycode 6 = five percent onehalf
+ control keycode 6 = Control_bracketright
+keycode 7 = six ampersand threequarters
+ control keycode 7 = Control_asciicircum
+keycode 8 = seven underscore pound
+ control keycode 8 = Control_underscore
+keycode 9 = eight parenleft braceleft
+ control keycode 9 = Delete
+keycode 10 = nine parenright braceright
+keycode 11 = zero apostrophe
+keycode 12 = slash question backslash
+ control keycode 12 = Control_underscore
+ shift control keycode 12 = Control_underscore
+keycode 13 = degree tilde dead_cedilla
+keycode 14 = Delete
+ control keycode 14 = BackSpace
+keycode 15 = Tab
+keycode 26 = dead_diaeresis dead_circumflex circumflex
+ control keycode 26 = Escape
+keycode 27 = asterisk bar
+keycode 28 = Return
+ alt keycode 28 = Meta_Control_m
+keycode 29 = Control
+keycode 39 = plus plusminus
+keycode 40 = dead_acute dead_grave
+ control keycode 40 = Control_g
+keycode 41 = at section notsign
+keycode 42 = Shift
+keycode 43 = less greater
+keycode 51 = comma semicolon
+keycode 52 = period colon periodcentered
+ control keycode 52 = Compose
+keycode 53 = minus equal
+keycode 54 = Shift
+keycode 56 = Alt
+keycode 57 = space
+ control keycode 57 = nul
+keycode 58 = Caps_Lock
+keycode 86 = bracketright bracketleft brokenbar
+keycode 97 = Control
--- /dev/null
+# From: Rafal Maszkowski <rzm@dain.oso.chalmers.se>
+# Date: Mon, 7 Feb 1994 12:00:39 +0100 (MET)
+#
+# Polish "programmers' keyboard" + paragraph sign AltGr-4, v. 0.92
+# Rafal Maszkowski <rzm@oso.chalmers.se>, <rzm@mat.uni.torun.pl>, 94.02.16
+# changed by Adam Tla/lka to obtain working left Alt normally
+
+charset "iso-8859-2"
+
+keycode 1 = Escape Escape
+ alt keycode 1 = Meta_Escape
+keycode 2 = one exclam
+ alt keycode 2 = Meta_one
+ alt shift keycode 2 = Meta_exclam
+keycode 3 = two at at
+ control keycode 3 = nul
+ alt keycode 3 = Meta_two
+ alt shift keycode 3 = Meta_at
+ alt control keycode 3 = Meta_nul
+keycode 4 = three numbersign
+ control keycode 4 = Escape
+ alt keycode 4 = Meta_three
+ alt shift keycode 4 = Meta_numbersign
+keycode 5 = four dollar section
+ control keycode 5 = Control_backslash
+ alt keycode 5 = Meta_four
+ alt shift keycode 5 = Meta_dollar
+keycode 6 = five percent
+ control keycode 6 = Control_bracketright
+ alt keycode 6 = Meta_five
+ alt shift keycode 6 = Meta_percent
+keycode 7 = six asciicircum
+ control keycode 7 = Control_asciicircum
+ alt keycode 7 = Meta_six
+ alt shift keycode 7 = Meta_asciicircum
+ alt control keycode 7 = Meta_Control_asciicircum
+keycode 8 = seven ampersand braceleft
+ control keycode 8 = Control_underscore
+ alt keycode 8 = Meta_seven
+ alt shift keycode 8 = Meta_ampersand
+keycode 9 = eight asterisk bracketleft
+ control keycode 9 = Delete
+ alt keycode 9 = Meta_eight
+ alt shift keycode 9 = Meta_asterisk
+keycode 10 = nine parenleft bracketright
+ alt keycode 10 = Meta_nine
+ alt shift keycode 10 = Meta_parenleft
+keycode 11 = zero parenright braceright
+ alt keycode 11 = Meta_zero
+ alt shift keycode 11 = Meta_parenright
+keycode 12 = minus underscore backslash
+ control keycode 12 = Control_underscore
+ alt keycode 12 = Meta_minus
+ alt shift keycode 12 = Meta_underscore
+ alt control keycode 12 = Meta_Control_underscore
+keycode 13 = equal plus
+ alt keycode 13 = Meta_equal
+ alt shift keycode 13 = Meta_plus
+keycode 14 = Delete Delete
+ alt keycode 14 = Meta_Delete
+ alt shift keycode 14 = Meta_Delete
+ control keycode 14 = Meta_Delete
+keycode 15 = Tab Tab
+ alt keycode 15 = Meta_Tab
+ alt shift keycode 15 = Meta_Tab
+ AltGr keycode 15 = Meta_Tab
+ control keycode 15 = Meta_Tab
+keycode 16 = q
+keycode 17 = w
+keycode 18 = e
+ AltGr keycode 18 = +eogonek
+ AltGr Shift keycode 18 = +Eogonek
+keycode 19 = r
+keycode 20 = t
+keycode 21 = y
+keycode 22 = u
+keycode 23 = i
+keycode 24 = o
+ AltGr keycode 24 = +oacute
+ AltGr Shift keycode 24 = +Oacute
+keycode 25 = p
+keycode 26 = bracketleft braceleft
+ control keycode 26 = Escape
+ alt keycode 26 = Meta_bracketleft
+keycode 27 = bracketright braceright asciitilde
+ control keycode 27 = Control_bracketright
+ alt keycode 27 = Meta_bracketright
+keycode 28 = Return
+ control keycode 28 = Meta_Control_m
+ alt keycode 28 = Meta_Control_m
+keycode 29 = Control
+keycode 30 = a
+ AltGr keycode 30 = +aogonek
+ AltGr Shift keycode 30 = +Aogonek
+keycode 31 = s
+ AltGr keycode 31 = +sacute
+ AltGr Shift keycode 31 = +Sacute
+keycode 32 = d
+keycode 33 = f
+keycode 34 = g
+keycode 35 = h
+keycode 36 = j
+keycode 37 = k
+keycode 38 = l
+ AltGr keycode 38 = +lstroke
+ AltGr Shift keycode 38 = +Lstroke
+keycode 39 = semicolon colon
+ alt keycode 39 = Meta_semicolon
+keycode 40 = apostrophe quotedbl
+ control keycode 40 = Control_g
+ alt keycode 40 = Meta_apostrophe
+keycode 41 = grave asciitilde
+ control keycode 41 = nul
+ alt keycode 41 = Meta_grave
+keycode 42 = Shift
+keycode 43 = backslash bar
+ control keycode 43 = Control_backslash
+ alt keycode 43 = Meta_backslash
+keycode 44 = z
+ AltGr keycode 44 = +zabovedot
+ AltGr Shift keycode 44 = +Zabovedot
+keycode 45 = x
+ AltGr keycode 45 = +zacute
+ AltGr Shift keycode 45 = +Zacute
+keycode 46 = c
+ AltGr keycode 46 = +cacute
+ AltGr Shift keycode 46 = +Cacute
+keycode 47 = v
+keycode 48 = b
+keycode 49 = n
+ AltGr keycode 49 = +nacute
+ AltGr Shift keycode 49 = +Nacute
+keycode 50 = m
+keycode 51 = comma less
+ alt keycode 51 = Meta_comma
+keycode 52 = period greater
+ alt keycode 52 = Meta_period
+keycode 53 = slash question
+ control keycode 53 = Delete
+ alt keycode 53 = Meta_slash
+keycode 54 = Shift
+keycode 55 = KP_Multiply
+keycode 56 = Alt
+keycode 57 = space space
+ control keycode 57 = nul
+ alt keycode 57 = Meta_space
+keycode 58 = Caps_Lock
+keycode 59 = F1 F11 Console_13
+ control keycode 59 = F1
+ alt keycode 59 = Console_1
+ control alt keycode 59 = Console_1
+keycode 60 = F2 F12 Console_14
+ control keycode 60 = F2
+ alt keycode 60 = Console_2
+ control alt keycode 60 = Console_2
+keycode 61 = F3 F13 Console_15
+ control keycode 61 = F3
+ alt keycode 61 = Console_3
+ control alt keycode 61 = Console_3
+keycode 62 = F4 F14 Console_16
+ control keycode 62 = F4
+ alt keycode 62 = Console_4
+ control alt keycode 62 = Console_4
+keycode 63 = F5 F15 Console_17
+ control keycode 63 = F5
+ alt keycode 63 = Console_5
+ control alt keycode 63 = Console_5
+keycode 64 = F6 F16 Console_18
+ control keycode 64 = F6
+ alt keycode 64 = Console_6
+ control alt keycode 64 = Console_6
+keycode 65 = F7 F17 Console_19
+ control keycode 65 = F7
+ alt keycode 65 = Console_7
+ control alt keycode 65 = Console_7
+keycode 66 = F8 F18 Console_20
+ control keycode 66 = F8
+ alt keycode 66 = Console_8
+ control alt keycode 66 = Console_8
+keycode 67 = F9 F19 Console_21
+ control keycode 67 = F9
+ alt keycode 67 = Console_9
+ control alt keycode 67 = Console_9
+keycode 68 = F10 F20 Console_22
+ control keycode 68 = F10
+ alt keycode 68 = Console_10
+ control alt keycode 68 = Console_10
+keycode 69 = Num_Lock
+keycode 70 = Scroll_Lock Show_Memory Show_Registers
+ control keycode 70 = Show_State
+ alt keycode 70 = Scroll_Lock
+keycode 71 = KP_7
+ alt keycode 71 = Ascii_7
+keycode 72 = KP_8
+ alt keycode 72 = Ascii_8
+keycode 73 = KP_9
+ alt keycode 73 = Ascii_9
+keycode 74 = KP_Subtract
+keycode 75 = KP_4
+ alt keycode 75 = Ascii_4
+keycode 76 = KP_5
+ alt keycode 76 = Ascii_5
+keycode 77 = KP_6
+ alt keycode 77 = Ascii_6
+keycode 78 = KP_Add
+keycode 79 = KP_1
+ alt keycode 79 = Ascii_1
+keycode 80 = KP_2
+ alt keycode 80 = Ascii_2
+keycode 81 = KP_3
+ alt keycode 81 = Ascii_3
+keycode 82 = KP_0
+ alt keycode 82 = Ascii_0
+keycode 83 = KP_Period
+ altgr control keycode 83 = Boot
+ control alt keycode 83 = Boot
+keycode 84 = Last_Console
+keycode 85 =
+keycode 86 = less greater bar
+ alt keycode 86 = Meta_less
+keycode 87 = F11 F11 Console_23
+ control keycode 87 = F11
+ alt keycode 87 = Console_11
+ control alt keycode 87 = Console_11
+keycode 88 = F12 F12 Console_24
+ control keycode 88 = F12
+ alt keycode 88 = Console_12
+ control alt keycode 88 = Console_12
+keycode 89 =
+keycode 90 =
+keycode 91 =
+keycode 92 =
+keycode 93 =
+keycode 94 =
+keycode 95 =
+keycode 96 = KP_Enter
+keycode 97 = Control
+keycode 98 = KP_Divide
+keycode 99 = Control_backslash
+ control keycode 99 = Control_backslash
+ alt keycode 99 = Control_backslash
+keycode 100 = AltGr
+keycode 101 = Break
+keycode 102 = Find
+ control keycode 102 = F106
+keycode 103 = Up
+ control keycode 103 = F100
+keycode 104 = Prior
+ control keycode 104 = F108
+ shift keycode 104 = Scroll_Backward
+keycode 105 = Left
+ alt keycode 105 = Decr_Console
+ control keycode 105 = F103
+keycode 106 = Right
+ alt keycode 106 = Incr_Console
+ control keycode 106 = F102
+keycode 107 = Select
+ control keycode 107 = F107
+keycode 108 = Down
+ control keycode 108 = F101
+keycode 109 = Next
+ control keycode 109 = F109
+ shift keycode 109 = Scroll_Forward
+keycode 110 = Insert
+ control keycode 110 = F105
+keycode 111 = Remove
+ control keycode 111 = F104
+ altgr control keycode 111 = Boot
+ control alt keycode 111 = Boot
+keycode 112 =
+keycode 113 =
+keycode 114 =
+keycode 115 =
+keycode 116 =
+keycode 117 =
+keycode 118 =
+keycode 119 =
+keycode 120 =
+keycode 121 =
+keycode 122 =
+keycode 123 =
+keycode 124 =
+keycode 125 =
+keycode 126 =
+keycode 127 =
+# usual stuff for F1-F30
+strings as usual
+string F100 = "\033\033[A"
+string F101 = "\033\033[B"
+string F102 = "\033\033[C"
+string F103 = "\033\033[D"
+string F104 = "\033\033[3~"
+string F105 = "\033\033[2~"
+string F106 = "\033\033[1~"
+string F107 = "\033\033[4~"
+string F108 = "\033\033[5~"
+string F109 = "\033\033[6~"
keycode 28 = Return
alt keycode 28 = Meta_Control_m
keycode 29 = Control
-keycode 39 = ccedilla Ccedilla
+keycode 39 = +ccedilla Ccedilla
alt keycode 39 = Meta_semicolon
keycode 40 = masculine ordfeminine
control keycode 40 = Control_g
# and the Finnish map should do for Sweden as well. Below a Swedish map
# contributed by Andreas Almroth (andreas@traci.almroth.pp.se) on 950507
# where no AltGr is used to get the three national characters.
+#
+# 1999-02-22 : PW
+# Added bracketright,braceright for keycode 10,11
+# Added onehalf for keycode 41
charset "iso-8859-1"
keymaps 0-2,4-6,8,12
keycode 9 = eight parenleft bracketleft
control keycode 9 = Delete
alt keycode 9 = Meta_eight
-keycode 10 = nine parenright
+keycode 10 = nine parenright bracketright
alt keycode 10 = Meta_nine
-keycode 11 = zero equal
+keycode 11 = zero equal braceright
alt keycode 11 = Meta_zero
keycode 12 = plus question backslash
control keycode 12 = Control_underscore
keycode 40 = +adiaeresis +Adiaeresis
control keycode 40 = Control_g
alt keycode 40 = Meta_apostrophe
-keycode 41 = section degree
+keycode 41 = section degree onehalf
control keycode 41 = nul
alt keycode 41 = Meta_grave
keycode 42 = Shift
-# Slovak ISO 8859-2 keyboard map for text console (for programmers)
-# Written and (c) copyright by Jan Ondrej (ondrejj@salstar.award.sk)
+# Slovak ISO 8859-2 keyboard map for text console (ver. 2)
+# Layout: qwerty-prog
+# Written and (c) copyright by Jan Ondrej (ondrejj@salstar.shadow.sk)
# You can distribute this file under the terms of GNU General
# Public License (GPL). See the file COPYING.
#
# "ô" a "ä" mozete dostat tak, ze pred danym pismenom stlacite
# klaves makcena.
#
+# Dalej som pridal prepinanie konzoli pomocou CTRL+ALT+F1 az F12
+# podla klasickej klavesovej mapy. Pridal som aj zopar includov,
+# ale neviem, ci nieco upravia.
+#
# Tento subor bol vytvoreny zo suboru cz-lat2.map, ktory
# napisal Jan Kasprzak (kas@ics.muni.cz).
#
charset "iso-8859-2"
keymaps 0-15
+include "linux-keys-bare.inc"
+include "linux-keys-extd.inc"
+include "qwerty-layout.inc"
strings as usual
+
keycode 1 = Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape
keycode 2 = one exclam plus one VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_one Meta_one Meta_one Meta_one
keycode 3 = two at lcaron two nul nul nul nul Meta_two Meta_two Meta_two Meta_two
keycode 13 = equal plus dead_acute dead_circumflex VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_equal Meta_equal Meta_equal Meta_equal
keycode 14 = Delete Delete Delete Delete VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Delete Meta_Delete Meta_Delete Meta_Delete
keycode 15 = Tab Tab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
-keycode 16 = q
-keycode 17 = w
-keycode 18 = e
-keycode 19 = r
-keycode 20 = t
-keycode 21 = y
-keycode 22 = u
-keycode 23 = i
-keycode 24 = o
-keycode 25 = p
keycode 26 = bracketleft braceleft bracketleft braceleft Escape VoidSymbol Escape VoidSymbol Meta_bracketleft Meta_bracketleft Meta_bracketleft Meta_bracketleft
keycode 27 = bracketright braceright bracketright braceright Control_bracketright VoidSymbol Control_bracketright VoidSymbol Meta_bracketright Meta_bracketright Meta_bracketright Meta_bracketright
keycode 28 = Return
alt keycode 28 = Meta_Control_m
alt altgr keycode 28 = Meta_Control_m
keycode 29 = Control
-keycode 30 = a
-keycode 31 = s
-keycode 32 = d
-keycode 33 = f
-keycode 34 = g
-keycode 35 = h
-keycode 36 = j
-keycode 37 = k
-keycode 38 = l
keycode 39 = semicolon colon semicolon colon VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_semicolon Meta_semicolon Meta_semicolon Meta_semicolon
keycode 40 = apostrophe quotedbl apostrophe quotedbl Control_g VoidSymbol Control_g VoidSymbol Meta_apostrophe Meta_apostrophe Meta_apostrophe Meta_apostrophe
keycode 41 = grave asciitilde grave asciitilde nul VoidSymbol nul VoidSymbol Meta_grave VoidSymbol Meta_grave
keycode 42 = Shift
keycode 43 = backslash bar backslash bar Control_backslash VoidSymbol Control_backslash VoidSymbol Meta_backslash VoidSymbol Meta_backslash
-keycode 44 = z
-keycode 45 = x
-keycode 46 = c
-keycode 47 = v
-keycode 48 = b
-keycode 49 = n
-keycode 50 = m
keycode 51 = comma less comma less
alt keycode 51 = Meta_comma
alt altgr keycode 51 = Meta_comma
keycode 56 = Alt
keycode 57 = space space space space nul nul nul nul Meta_space Meta_space Meta_space Meta_space
keycode 58 = Caps_Lock
-keycode 59 = F1 F13 F1 F13 F1 VoidSymbol F1 VoidSymbol Console_1 VoidSymbol Console_1
-keycode 60 = F2 F14 F2 F14 F2 VoidSymbol F2 VoidSymbol Console_2 VoidSymbol Console_2
-keycode 61 = F3 F15 F3 F15 F3 VoidSymbol F3 VoidSymbol Console_3 VoidSymbol Console_3
-keycode 62 = F4 F16 F4 F15 F4 VoidSymbol F4 VoidSymbol Console_4 VoidSymbol Console_4
-keycode 63 = F5 F17 F5 F15 F5 VoidSymbol F5 VoidSymbol Console_5 VoidSymbol Console_5
-keycode 64 = F6 F18 F6 F15 F6 VoidSymbol F6 VoidSymbol Console_6 VoidSymbol Console_6
-keycode 65 = F7 F19 F7 F15 F7 VoidSymbol F7 VoidSymbol Console_7 VoidSymbol Console_7
-keycode 66 = F8 F20 F8 F15 F8 VoidSymbol F8 VoidSymbol Console_8 VoidSymbol Console_8
-keycode 67 = F9 F9 F9 F9 F9 VoidSymbol F9 VoidSymbol Console_9 VoidSymbol Console_9
-keycode 68 = F10 F10 F10 F10 F10 VoidSymbol F10 VoidSymbol Console_10 VoidSymbol Console_10
+keycode 59 = F1 F13 F1 F13 F1 VoidSymbol F1 VoidSymbol Console_1 VoidSymbol Console_1 VoidSymbol Console_1
+keycode 60 = F2 F14 F2 F14 F2 VoidSymbol F2 VoidSymbol Console_2 VoidSymbol Console_2 VoidSymbol Console_2
+keycode 61 = F3 F15 F3 F15 F3 VoidSymbol F3 VoidSymbol Console_3 VoidSymbol Console_3 VoidSymbol Console_3
+keycode 62 = F4 F16 F4 F15 F4 VoidSymbol F4 VoidSymbol Console_4 VoidSymbol Console_4 VoidSymbol Console_4
+keycode 63 = F5 F17 F5 F15 F5 VoidSymbol F5 VoidSymbol Console_5 VoidSymbol Console_5 VoidSymbol Console_5
+keycode 64 = F6 F18 F6 F15 F6 VoidSymbol F6 VoidSymbol Console_6 VoidSymbol Console_6 VoidSymbol Console_6
+keycode 65 = F7 F19 F7 F15 F7 VoidSymbol F7 VoidSymbol Console_7 VoidSymbol Console_7 VoidSymbol Console_7
+keycode 66 = F8 F20 F8 F15 F8 VoidSymbol F8 VoidSymbol Console_8 VoidSymbol Console_8 VoidSymbol Console_8
+keycode 67 = F9 F9 F9 F9 F9 VoidSymbol F9 VoidSymbol Console_9 VoidSymbol Console_9 VoidSymbol Console_9
+keycode 68 = F10 F10 F10 F10 F10 VoidSymbol F10 VoidSymbol Console_10 VoidSymbol Console_10 VoidSymbol Console_10
keycode 69 = Num_Lock
keycode 70 = Scroll_Lock Show_Memory Show_Registers
control keycode 70 = Show_State
keycode 85 =
keycode 86 = less greater bar
alt keycode 86 = Meta_less
-keycode 87 = F11 F11 F11 F11 F11 VoidSymbol F11 VoidSymbol Console_11 VoidSymbol Console_11
-keycode 88 = F12 F12 F12 F12 F12 VoidSymbol F12 VoidSymbol Console_12 VoidSymbol Console_12
+keycode 87 = F11 F11 F11 F11 F11 VoidSymbol F11 VoidSymbol Console_11 VoidSymbol Console_11 VoidSymbol Console_11
+keycode 88 = F12 F12 F12 F12 F12 VoidSymbol F12 VoidSymbol Console_12 VoidSymbol Console_12 VoidSymbol Console_12
keycode 89 =
keycode 90 =
keycode 91 =
keycode 125 =
keycode 126 =
keycode 127 =
+
compose ',' 'A' to '¡'
compose '/' 'L' to '£'
compose '^' 'L' to '¥'
--- /dev/null
+# Slovak ISO 8859-2 keyboard map for text console (ver. 2)
+# Layout: qwerty
+# Written and (c) copyright by Jan Ondrej (ondrejj@salstar.shadow.sk)
+# You can distribute this file under the terms of GNU General
+# Public License (GPL). See the file COPYING.
+#
+# Slovenska klavesnica sa zapne a vypne klavesou Pause.
+# Klavesou AltGr (Right Alt) je mozne sa prepnut zo slovenskej do US a naopak.
+# Klavesa Pause potom funguje ako AltGr-lock.
+# Znak o s vokanom mozete dostat stlacenim klavesu makcen a "o".
+#
+# Zdalo sa mi, ze diaeresis nefunguje celkom spravne, pretoze
+# pri kombinacii s pismenom a daval vysledok dva znaky "a .
+# Upravil som to pridanim compose.
+#
+# Dalej som pridal prepinanie konzoli pomocou CTRL+ALT+F1 az F12
+# podla klasickej klavesovej mapy. Pridal som aj zopar includov,
+# ale neviem, ci nieco upravia.
+#
+# Tento subor bol vytvoreny zo suboru cz-lat2.map, ktory
+# napisal Jan Kasprzak (kas@ics.muni.cz).
+#
+alt_is_meta
+charset "iso-8859-2"
+keymaps 0-15
+include "linux-keys-bare.inc"
+include "linux-keys-extd.inc"
+include "linux-with-modeshift-altgr.inc"
+include "qwerty-layout.inc"
+strings as usual
+
+keycode 1 = Escape
+keycode 2 = one exclam plus one
+keycode 3 = two at lcaron two
+keycode 4 = three numbersign scaron three Escape
+keycode 5 = four dollar ccaron four Control_backslash
+keycode 6 = five percent tcaron five Control_bracketright
+keycode 7 = six asciicircum zcaron six Control_asciicircum
+keycode 8 = seven ampersand yacute seven Control_underscore
+keycode 9 = eight asterisk aacute eight Delete
+keycode 10 = nine parenleft iacute nine
+keycode 11 = zero parenright eacute zero
+keycode 12 = minus underscore equal percent
+keycode 13 = equal plus dead_acute dead_circumflex
+keycode 14 = Delete
+keycode 15 = Tab
+keycode 26 = bracketleft braceleft uacute slash Escape
+keycode 27 = bracketright braceright adiaeresis parenleft Control_bracketright
+keycode 28 = Return
+altgr keycode 28 = Return
+alt keycode 28 = Meta_Control_m
+alt altgr keycode 28 = Meta_Control_m
+keycode 29 = Control
+keycode 39 = semicolon colon ocircumflex quotedbl
+keycode 40 = apostrophe quotedbl 0xa7 exclam Control_g
+keycode 41 = grave asciitilde dead_diaeresis dead_circumflex nul
+keycode 42 = Shift
+keycode 43 = backslash bar ncaron parenright Control_backslash
+keycode 51 = comma less comma question
+keycode 52 = period greater period colon Compose
+keycode 53 = slash question minus underscore Delete
+keycode 54 = Shift
+keycode 56 = Alt
+keycode 57 = space space space space nul nul nul nul
+keycode 58 = Caps_Lock
+keycode 70 = Scroll_Lock Show_Memory Show_Registers
+control keycode 70 = Show_State
+alt keycode 70 = Scroll_Lock
+keycode 84 = Last_Console
+keycode 86 = less greater bar
+alt keycode 86 = Meta_less
+keycode 97 = Control
+keycode 99 = Control_backslash
+control keycode 99 = Control_backslash
+alt keycode 99 = Control_backslash
+keycode 100 = AltGr
+ alt altgr keycode 105 = Decr_Console
+ alt altgr keycode 106 = Incr_Console
+control alt keycode 111 = Boot
+
+keycode 119 = AltGr_Lock
+
+compose ',' 'A' to '¡'
+compose '/' 'L' to '£'
+compose '^' 'L' to '¥'
+compose '\'' 'S' to '¦'
+compose '^' 'S' to '©'
+compose ',' 'S' to 'ª'
+compose '^' 'T' to '«'
+compose '\'' 'Z' to '¬'
+compose '^' 'Z' to '®'
+compose '.' 'Z' to '¯'
+compose ',' 'a' to '±'
+compose '/' 'l' to '³'
+compose '^' 'l' to 'µ'
+compose '\'' 's' to '¶'
+compose '^' 's' to '¹'
+compose ',' 's' to 'º'
+compose '^' 't' to '»'
+compose '\'' 'z' to '¼'
+compose '^' 'z' to '¾'
+compose '.' 'z' to '¿'
+compose '\'' 'R' to 'À'
+compose '\'' 'A' to 'Á'
+compose '^' 'A' to 'Â'
+compose '^' 'A' to 'Ã'
+compose ':' 'A' to 'Ä'
+compose '"' 'A' to 'Ä'
+compose '\'' 'L' to 'Å'
+compose '\'' 'C' to 'Æ'
+compose ',' 'C' to 'Ç'
+compose '^' 'C' to 'È'
+compose '\'' 'E' to 'É'
+compose ',' 'E' to 'Ê'
+compose '"' 'E' to 'Ë'
+compose '^' 'E' to 'Ì'
+compose '\'' 'I' to 'Í'
+compose '^' 'I' to 'Î'
+compose '^' 'D' to 'Ï'
+compose '-' 'D' to 'Ð'
+compose '\'' 'N' to 'Ñ'
+compose '^' 'N' to 'Ò'
+compose '\'' 'O' to 'Ó'
+compose '^' 'O' to 'Ô'
+compose '"' 'O' to 'Õ'
+compose ':' 'O' to 'Ö'
+compose '^' 'R' to 'Ø'
+compose '^' 'U' to 'Ù'
+compose '\'' 'U' to 'Ú'
+compose '"' 'U' to 'Û'
+compose ':' 'U' to 'Ü'
+compose '\'' 'Y' to 'Ý'
+compose ',' 'T' to 'Þ'
+compose 's' 's' to 'ß'
+compose 'S' 'S' to 'ß'
+compose '\'' 'r' to 'à'
+compose '\'' 'a' to 'á'
+compose '^' 'a' to 'â'
+compose '^' 'a' to 'ã'
+compose ':' 'a' to 'ä'
+compose '"' 'a' to 'ä'
+compose '\'' 'l' to 'å'
+compose '\'' 'c' to 'æ'
+compose ',' 'c' to 'ç'
+compose '^' 'c' to 'è'
+compose '\'' 'e' to 'é'
+compose ',' 'e' to 'ê'
+compose ':' 'e' to 'ë'
+compose '^' 'e' to 'ì'
+compose '\'' 'i' to 'í'
+compose '^' 'e' to 'î'
+compose '^' 'd' to 'ï'
+compose '-' 'd' to 'ð'
+compose '\'' 'n' to 'ñ'
+compose '^' 'n' to 'ò'
+compose '\'' 'o' to 'ó'
+compose '^' 'o' to 'ô'
+compose ':' 'o' to 'õ'
+compose '"' 'o' to 'ö'
+compose '^' 'r' to 'ø'
+compose '^' 'u' to 'ù'
+compose '\'' 'u' to 'ú'
+compose '"' 'u' to 'û'
+compose ':' 'u' to 'ü'
+compose '\'' 'y' to 'ý'
+compose ',' 't' to 'þ'
# -cagri@tubitak.gov.tr
charset "iso-8859-9"
include "linux-with-alt-and-altgr"
- plain keycode 111 = Delete
- alt keycode 111 = Meta_Delete
strings as usual
keycode 1 = Escape
charset "iso-8859-9"
keymaps 0-6,8-9,12
include "linux-with-alt-and-altgr"
- plain keycode 111 = Delete
- alt keycode 111 = Meta_Delete
strings as usual
keycode 1 = Escape
+charset "koi8-r"
keymaps 0-2,4-6,8-9,12-13,64-66,68-69,72-73,76-77,128-130,132-133,136-137,140-141,192-194,196-197,200-201,204-205
keycode 1 = Escape Escape
alt keycode 1 = Meta_Escape
+charset "koi8-r"
keymaps 0-2,4-6,8-9,12-13,64-66,68-69,72-73,76-77,128-130,132-133,136-137,140-141,192-194,196-197,200-201,204-205
strings as usual
keycode 1 = Escape Escape
--- /dev/null
+# us-acentos.map
+# Equivalente ao mapa us, incluindo dead_keys e composições
+# dos caracteres acentuados
+# Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+#
+keymaps 0-2,4-6,8-9,12
+keycode 1 = Escape Escape
+ alt keycode 1 = Meta_Escape
+keycode 2 = one exclam
+ alt keycode 2 = Meta_one
+ shift alt keycode 2 = Meta_exclam
+keycode 3 = two at at nul nul
+ alt keycode 3 = Meta_two
+ shift alt keycode 3 = Meta_at
+keycode 4 = three numbersign
+ control keycode 4 = Escape
+ alt keycode 4 = Meta_three
+ shift alt keycode 4 = Meta_numbersign
+keycode 5 = four dollar dollar Control_backslash
+ alt keycode 5 = Meta_four
+ shift alt keycode 5 = Meta_dollar
+keycode 6 = five percent
+ control keycode 6 = Control_bracketright
+ alt keycode 6 = Meta_five
+ shift alt keycode 6 = Meta_percent
+keycode 7 = six dead_circumflex
+ control keycode 7 = Control_asciicircum
+ alt keycode 7 = Meta_six
+ shift alt keycode 7 = Meta_asciicircum
+keycode 8 = seven ampersand braceleft Control_underscore
+ alt keycode 8 = Meta_seven
+keycode 9 = eight asterisk bracketleft Delete
+ alt keycode 9 = Meta_eight
+keycode 10 = nine parenleft bracketright
+ alt keycode 10 = Meta_nine
+keycode 11 = zero parenright braceright
+ alt keycode 11 = Meta_zero
+keycode 12 = minus underscore backslash Control_underscore Control_underscore
+ alt keycode 12 = Meta_minus
+keycode 13 = equal plus
+ alt keycode 13 = Meta_equal
+keycode 14 = Delete Delete
+ control keycode 14 = BackSpace
+ alt keycode 14 = Meta_Delete
+keycode 15 = Tab Tab
+ alt keycode 15 = Meta_Tab
+keycode 16 = q
+keycode 17 = w
+keycode 18 = e
+keycode 19 = r
+keycode 20 = t
+keycode 21 = y
+keycode 22 = u
+keycode 23 = i
+keycode 24 = o
+keycode 25 = p
+keycode 26 = bracketleft braceleft
+ control keycode 26 = Escape
+ alt keycode 26 = Meta_bracketleft
+ shift alt keycode 26 = Meta_braceleft
+keycode 27 = bracketright braceright asciitilde Control_bracketright
+ alt keycode 27 = Meta_bracketright
+ shift alt keycode 27 = Meta_braceright
+keycode 28 = Return
+ alt keycode 28 = Meta_Control_m
+keycode 29 = Control
+keycode 30 = a
+keycode 31 = s
+keycode 32 = d
+keycode 33 = f
+keycode 34 = g
+keycode 35 = h
+keycode 36 = j
+keycode 37 = k
+keycode 38 = l
+keycode 39 = semicolon colon
+ alt keycode 39 = Meta_semicolon
+keycode 40 = dead_acute dead_diaeresis
+ control keycode 40 = Control_g
+ alt keycode 40 = Meta_apostrophe
+keycode 41 = dead_grave dead_tilde
+ control keycode 41 = nul
+ alt keycode 41 = Meta_grave
+keycode 42 = Shift
+keycode 43 = backslash bar
+ control keycode 43 = Control_backslash
+ alt keycode 43 = Meta_backslash
+ shift alt keycode 43 = Meta_bar
+keycode 44 = z
+keycode 45 = x
+keycode 46 = c
+keycode 47 = v
+keycode 48 = b
+keycode 49 = n
+keycode 50 = m
+keycode 51 = comma less
+ alt keycode 51 = Meta_comma
+ shift alt keycode 51 = Meta_less
+keycode 52 = period greater
+ control keycode 52 = Compose
+ alt keycode 52 = Meta_period
+ shift alt keycode 52 = Meta_greater
+keycode 53 = slash question
+ control keycode 53 = Delete
+ alt keycode 53 = Meta_slash
+keycode 54 = Shift
+keycode 55 = KP_Multiply
+keycode 56 = Alt
+keycode 57 = space space
+ control keycode 57 = nul
+ alt keycode 57 = Meta_space
+keycode 58 = Caps_Lock
+keycode 59 = F1 F11 Console_13 F1
+ alt keycode 59 = Console_1
+ control alt keycode 59 = Console_1
+keycode 60 = F2 F12 Console_14 F2
+ alt keycode 60 = Console_2
+ control alt keycode 60 = Console_2
+keycode 61 = F3 F13 Console_15 F3
+ alt keycode 61 = Console_3
+ control alt keycode 61 = Console_3
+keycode 62 = F4 F14 Console_16 F4
+ alt keycode 62 = Console_4
+ control alt keycode 62 = Console_4
+keycode 63 = F5 F15 Console_17 F5
+ alt keycode 63 = Console_5
+ control alt keycode 63 = Console_5
+keycode 64 = F6 F16 Console_18 F6
+ alt keycode 64 = Console_6
+ control alt keycode 64 = Console_6
+keycode 65 = F7 F17 Console_19 F7
+ alt keycode 65 = Console_7
+ control alt keycode 65 = Console_7
+keycode 66 = F8 F18 Console_20 F8
+ alt keycode 66 = Console_8
+ control alt keycode 66 = Console_8
+keycode 67 = F9 F19 Console_21 F9
+ alt keycode 67 = Console_9
+ control alt keycode 67 = Console_9
+keycode 68 = F10 F20 Console_22 F10
+ alt keycode 68 = Console_10
+ control alt keycode 68 = Console_10
+keycode 69 = Num_Lock
+keycode 70 = Scroll_Lock Show_Memory Show_Registers Show_State
+ alt keycode 70 = Scroll_Lock
+keycode 71 = KP_7
+ alt keycode 71 = Ascii_7
+keycode 72 = KP_8
+ alt keycode 72 = Ascii_8
+keycode 73 = KP_9
+ alt keycode 73 = Ascii_9
+keycode 74 = KP_Subtract
+keycode 75 = KP_4
+ alt keycode 75 = Ascii_4
+keycode 76 = KP_5
+ alt keycode 76 = Ascii_5
+keycode 77 = KP_6
+ alt keycode 77 = Ascii_6
+keycode 78 = KP_Add
+keycode 79 = KP_1
+ alt keycode 79 = Ascii_1
+keycode 80 = KP_2
+ alt keycode 80 = Ascii_2
+keycode 81 = KP_3
+ alt keycode 81 = Ascii_3
+keycode 82 = KP_0
+ alt keycode 82 = Ascii_0
+keycode 83 = KP_Period
+ altgr control keycode 83 = Boot
+ control alt keycode 83 = Boot
+keycode 84 = Last_Console
+keycode 85 =
+keycode 86 = less greater bar
+ alt keycode 86 = Meta_less
+keycode 87 = F11 F11 Console_23 F11
+ alt keycode 87 = Console_11
+ control alt keycode 87 = Console_11
+keycode 88 = F12 F12 Console_24 F12
+ alt keycode 88 = Console_12
+ control alt keycode 88 = Console_12
+keycode 89 =
+keycode 90 =
+keycode 91 =
+keycode 92 =
+keycode 93 =
+keycode 94 =
+keycode 95 =
+keycode 96 = KP_Enter
+keycode 97 = Control
+keycode 98 = KP_Divide
+keycode 99 = Control_backslash
+ control keycode 99 = Control_backslash
+ alt keycode 99 = Control_backslash
+keycode 100 = AltGr
+keycode 101 = Break
+keycode 102 = Find
+keycode 103 = Up
+keycode 104 = Prior
+ shift keycode 104 = Scroll_Backward
+keycode 105 = Left
+ alt keycode 105 = Decr_Console
+keycode 106 = Right
+ alt keycode 106 = Incr_Console
+keycode 107 = Select
+keycode 108 = Down
+keycode 109 = Next
+ shift keycode 109 = Scroll_Forward
+keycode 110 = Insert
+keycode 111 = Remove
+ altgr control keycode 111 = Boot
+ control alt keycode 111 = Boot
+keycode 112 = Macro
+ altgr control keycode 112 = VoidSymbol
+ shift alt keycode 112 = VoidSymbol
+keycode 113 = F13
+ altgr control keycode 113 = VoidSymbol
+ shift alt keycode 113 = VoidSymbol
+keycode 114 = F14
+ altgr control keycode 114 = VoidSymbol
+ shift alt keycode 114 = VoidSymbol
+keycode 115 = Help
+ altgr control keycode 115 = VoidSymbol
+ shift alt keycode 115 = VoidSymbol
+keycode 116 = Do
+ altgr control keycode 116 = VoidSymbol
+ shift alt keycode 116 = VoidSymbol
+keycode 117 = F17
+ altgr control keycode 117 = VoidSymbol
+ shift alt keycode 117 = VoidSymbol
+keycode 118 = KP_MinPlus
+ altgr control keycode 118 = VoidSymbol
+ shift alt keycode 118 = VoidSymbol
+keycode 119 = Pause
+ altgr control keycode 119 = VoidSymbol
+ shift alt keycode 119 = VoidSymbol
+keycode 120 =
+keycode 121 =
+keycode 122 =
+keycode 123 =
+keycode 124 =
+keycode 125 =
+keycode 126 =
+keycode 127 =
+string F1 = "\033[[A"
+string F2 = "\033[[B"
+string F3 = "\033[[C"
+string F4 = "\033[[D"
+string F5 = "\033[[E"
+string F6 = "\033[17~"
+string F7 = "\033[18~"
+string F8 = "\033[19~"
+string F9 = "\033[20~"
+string F10 = "\033[21~"
+string F11 = "\033[23~"
+string F12 = "\033[24~"
+string F13 = "\033[25~"
+string F14 = "\033[26~"
+string F15 = "\033[28~"
+string F16 = "\033[29~"
+string F17 = "\033[31~"
+string F18 = "\033[32~"
+string F19 = "\033[33~"
+string F20 = "\033[34~"
+string Find = "\033[1~"
+string Insert = "\033[2~"
+string Remove = "\033[3~"
+string Select = "\033[4~"
+string Prior = "\033[5~"
+string Next = "\033[6~"
+string Macro = "\033[M"
+string Pause = "\033[P"
+compose '`' 'A' to 'À'
+compose '`' 'a' to 'à'
+compose '\'' 'A' to 'Á'
+compose '\'' 'a' to 'á'
+compose '^' 'A' to 'Â'
+compose '^' 'a' to 'â'
+compose '~' 'A' to 'Ã'
+compose '~' 'a' to 'ã'
+compose '"' 'A' to 'Ä'
+compose '"' 'a' to 'ä'
+compose 'O' 'A' to 'Å'
+compose 'o' 'a' to 'å'
+compose '0' 'A' to 'Å'
+compose '0' 'a' to 'å'
+compose 'A' 'A' to 'Å'
+compose 'a' 'a' to 'å'
+compose 'A' 'E' to 'Æ'
+compose 'a' 'e' to 'æ'
+compose '\'' 'C' to 'Ç'
+compose '\'' 'c' to 'ç'
+compose '`' 'E' to 'È'
+compose '`' 'e' to 'è'
+compose '\'' 'E' to 'É'
+compose '\'' 'e' to 'é'
+compose '^' 'E' to 'Ê'
+compose '^' 'e' to 'ê'
+compose '"' 'E' to 'Ë'
+compose '"' 'e' to 'ë'
+compose '`' 'I' to 'Ì'
+compose '`' 'i' to 'ì'
+compose '\'' 'I' to 'Í'
+compose '\'' 'i' to 'í'
+compose '^' 'I' to 'Î'
+compose '^' 'i' to 'î'
+compose '"' 'I' to 'Ï'
+compose '"' 'i' to 'ï'
+compose '-' 'D' to 'Ð'
+compose '-' 'd' to 'ð'
+compose '~' 'N' to 'Ñ'
+compose '~' 'n' to 'ñ'
+compose '`' 'O' to 'Ò'
+compose '`' 'o' to 'ò'
+compose '\'' 'O' to 'Ó'
+compose '\'' 'o' to 'ó'
+compose '^' 'O' to 'Ô'
+compose '^' 'o' to 'ô'
+compose '~' 'O' to 'Õ'
+compose '~' 'o' to 'õ'
+compose '"' 'O' to 'Ö'
+compose '"' 'o' to 'ö'
+compose '/' 'O' to 'Ø'
+compose '/' 'o' to 'ø'
+compose '`' 'U' to 'Ù'
+compose '`' 'u' to 'ù'
+compose '\'' 'U' to 'Ú'
+compose '\'' 'u' to 'ú'
+compose '^' 'U' to 'Û'
+compose '^' 'u' to 'û'
+compose '"' 'U' to 'Ü'
+compose '"' 'u' to 'ü'
+compose '\'' 'Y' to 'Ý'
+compose '\'' 'y' to 'ý'
+compose 'T' 'H' to 'Þ'
+compose 't' 'h' to 'þ'
+compose 's' 's' to 'ß'
+compose '"' 'y' to 'ÿ'
+compose 's' 'z' to 'ß'
+compose 'i' 'j' to 'ÿ'
keycode 51 = comma less
keycode 52 = period greater
keycode 53 = slash question
- control keycode 53 = Delete
+ control keycode 53 = Control_underscore
+ control shift keycode 53 = Delete
keycode 54 = Shift
keycode 56 = Alt
keycode 57 = space
keycode 101 = Break
keycode 102 = Find
keycode 103 = Up
-keycode 104 = Prior
-shift keycode 104 = Scroll_Backward
+keycode 104 = Prior Scroll_Backward Prior Scroll_Backward VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 105 = Left
alt keycode 105 = Decr_Console
alt altgr keycode 105 = Decr_Console
alt altgr keycode 106 = Incr_Console
keycode 107 = Select
keycode 108 = Down
-keycode 109 = Next
-shift keycode 109 = Scroll_Forward
+keycode 109 = Next Scroll_Forward Next Scroll_Forward VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol
keycode 110 = Insert
keycode 111 = Remove
control alt keycode 111 = Boot
-# Slovak ISO 8859-2 keyboard map for text console
-# Written and (c) copyright by Jan Kasprzak (kas@ics.muni.cz)
+# Slovak ISO 8859-2 keyboard map for text console (ver. 2)
+# Layout: qwertz-prog
+# Written and (c) copyright by Jan Ondrej (ondrejj@salstar.shadow.sk)
# You can distribute this file under the terms of GNU General
# Public License (GPL). See the file COPYING.
#
-# Funguje jako US-Keyboard, na slovenskou klavesnici se prepne
-# klavesou Pause. Podrzenim klavesy AltGr (= Right Alt) se lze kratkodobe
-# prepnout na slovenskou nebo naopak na US klavesnici. Pause
-# pak funguje jako AltGr-lock.
+# Slovenska klavesnica sa zapne a vypne klavesou Pause.
+# Klavesou AltGr (Right Alt) je mozne sa prepnut zo slovenskej do US a naopak.
+# Klavesa Pause potom funguje ako AltGr-lock.
#
-# Klavesnice je udelana podle rozlozeni, ktere mi bylo doruceno Petrem
-# Olsakem od pana Stefana Porubskeho. Ja sam slovenskou klavesnici
-# neznam, takze nemohu rucit za korektni rozlozeni klaves.
+# Chybaju tu klavesy vokan a dvojbodka nad pismenom, ale znaky
+# "ô" a "ä" mozete dostat tak, ze pred danym pismenom stlacite
+# klaves makcena.
#
-# Nemel jsem mnoho prilezitosti tuto klavesnici testovat, takze prosim
-# omluvte pripadne nedostatky.
+# Dalej som pridal prepinanie konzoli pomocou CTRL+ALT+F1 az F12
+# podla klasickej klavesovej mapy. Pridal som aj zopar includov,
+# ale neviem, ci nieco upravia.
+#
+# Tento subor bol vytvoreny zo suboru cz-lat2.map, ktory
+# napisal Jan Kasprzak (kas@ics.muni.cz).
#
charset "iso-8859-2"
keymaps 0-15
+include "linux-keys-bare.inc"
+include "linux-keys-extd.inc"
+include "qwertz-layout.inc"
strings as usual
-keycode 0 =
+
keycode 1 = Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape
keycode 2 = one exclam plus one VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_one Meta_one Meta_one Meta_one
keycode 3 = two at lcaron two nul nul nul nul Meta_two Meta_two Meta_two Meta_two
keycode 9 = eight asterisk aacute eight Delete VoidSymbol Delete VoidSymbol Meta_eight Meta_eight Meta_eight Meta_eight
keycode 10 = nine parenleft iacute nine VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_nine Meta_nine Meta_nine Meta_nine
keycode 11 = zero parenright eacute zero VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_zero Meta_zero Meta_zero Meta_zero
-keycode 12 = minus underscore equal percent Control_underscore Control_underscore Control_underscore Control_underscore Meta_minus Meta_minus Meta_minus Meta_minus
+keycode 12 = minus underscore minus underscore Control_underscore Control_underscore Control_underscore Control_underscore Meta_minus Meta_minus Meta_minus Meta_minus
keycode 13 = equal plus dead_acute dead_circumflex VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_equal Meta_equal Meta_equal Meta_equal
keycode 14 = Delete Delete Delete Delete VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Delete Meta_Delete Meta_Delete Meta_Delete
keycode 15 = Tab Tab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
-keycode 16 = q
-keycode 17 = w
-keycode 18 = e
-keycode 19 = r
-keycode 20 = t
-keycode 21 = z
-keycode 22 = u
-keycode 23 = i
-keycode 24 = o
-keycode 25 = p
-keycode 26 = bracketleft braceleft uacute slash Escape VoidSymbol Escape VoidSymbol Meta_bracketleft Meta_bracketleft Meta_bracketleft Meta_bracketleft
-keycode 27 = bracketright braceright adiaeresis parenleft Control_bracketright VoidSymbol Control_bracketright VoidSymbol Meta_bracketright Meta_bracketright Meta_bracketright Meta_bracketright
-keycode 28 = Return
+keycode 26 = bracketleft braceleft bracketleft braceleft Escape VoidSymbol Escape VoidSymbol Meta_bracketleft Meta_bracketleft Meta_bracketleft Meta_bracketleft
+keycode 27 = bracketright braceright bracketright braceright Control_bracketright VoidSymbol Control_bracketright VoidSymbol Meta_bracketright Meta_bracketright Meta_bracketright Meta_bracketright
+keycode 28 = Return
altgr keycode 28 = Return
alt keycode 28 = Meta_Control_m
alt altgr keycode 28 = Meta_Control_m
keycode 29 = Control
-keycode 30 = a
-keycode 31 = s
-keycode 32 = d
-keycode 33 = f
-keycode 34 = g
-keycode 35 = h
-keycode 36 = j
-keycode 37 = k
-keycode 38 = l
-keycode 39 = semicolon colon ocircumflex quotedbl VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_semicolon Meta_semicolon Meta_semicolon Meta_semicolon
-keycode 40 = apostrophe quotedbl 0xa7 exclam Control_g VoidSymbol Control_g VoidSymbol Meta_apostrophe Meta_apostrophe Meta_apostrophe Meta_apostrophe
-keycode 41 = grave asciitilde grave semicolon nul VoidSymbol nul VoidSymbol Meta_grave VoidSymbol Meta_grave
+keycode 39 = semicolon colon semicolon colon VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_semicolon Meta_semicolon Meta_semicolon Meta_semicolon
+keycode 40 = apostrophe quotedbl apostrophe quotedbl Control_g VoidSymbol Control_g VoidSymbol Meta_apostrophe Meta_apostrophe Meta_apostrophe Meta_apostrophe
+keycode 41 = grave asciitilde grave asciitilde nul VoidSymbol nul VoidSymbol Meta_grave VoidSymbol Meta_grave
keycode 42 = Shift
-keycode 43 = backslash bar oacute parenright Control_backslash VoidSymbol Control_backslash VoidSymbol Meta_backslash VoidSymbol Meta_backslash
-keycode 44 = y
-keycode 45 = x
-keycode 46 = c
-keycode 47 = v
-keycode 48 = b
-keycode 49 = n
-keycode 50 = m
-keycode 51 = comma less comma question
+keycode 43 = backslash bar backslash bar Control_backslash VoidSymbol Control_backslash VoidSymbol Meta_backslash VoidSymbol Meta_backslash
+keycode 51 = comma less comma less
alt keycode 51 = Meta_comma
alt altgr keycode 51 = Meta_comma
-keycode 52 = period greater period colon Compose VoidSymbol Compose VoidSymbol Meta_period VoidSymbol Meta_period
-keycode 53 = slash question minus underscore Delete VoidSymbol Delete VoidSymbol Meta_slash VoidSymbol Meta_slash
+keycode 52 = period greater period greater Compose VoidSymbol Compose VoidSymbol Meta_period VoidSymbol Meta_period
+keycode 53 = slash question slash question Delete VoidSymbol Delete VoidSymbol Meta_slash VoidSymbol Meta_slash
keycode 54 = Shift
keycode 55 = KP_Multiply
keycode 56 = Alt
keycode 57 = space space space space nul nul nul nul Meta_space Meta_space Meta_space Meta_space
keycode 58 = Caps_Lock
-keycode 59 = F1 F13 F1 F13 F1 VoidSymbol F1 VoidSymbol Console_1 VoidSymbol Console_1
-keycode 60 = F2 F14 F2 F14 F2 VoidSymbol F2 VoidSymbol Console_2 VoidSymbol Console_2
-keycode 61 = F3 F15 F3 F15 F3 VoidSymbol F3 VoidSymbol Console_3 VoidSymbol Console_3
-keycode 62 = F4 F16 F4 F15 F4 VoidSymbol F4 VoidSymbol Console_4 VoidSymbol Console_4
-keycode 63 = F5 F17 F5 F15 F5 VoidSymbol F5 VoidSymbol Console_5 VoidSymbol Console_5
-keycode 64 = F6 F18 F6 F15 F6 VoidSymbol F6 VoidSymbol Console_6 VoidSymbol Console_6
-keycode 65 = F7 F19 F7 F15 F7 VoidSymbol F7 VoidSymbol Console_7 VoidSymbol Console_7
-keycode 66 = F8 F20 F8 F15 F8 VoidSymbol F8 VoidSymbol Console_8 VoidSymbol Console_8
-keycode 67 = F9 F9 F9 F9 F9 VoidSymbol F9 VoidSymbol Console_9 VoidSymbol Console_9
-keycode 68 = F10 F10 F10 F10 F10 VoidSymbol F10 VoidSymbol Console_10 VoidSymbol Console_10
+keycode 59 = F1 F13 F1 F13 F1 VoidSymbol F1 VoidSymbol Console_1 VoidSymbol Console_1 VoidSymbol Console_1
+keycode 60 = F2 F14 F2 F14 F2 VoidSymbol F2 VoidSymbol Console_2 VoidSymbol Console_2 VoidSymbol Console_2
+keycode 61 = F3 F15 F3 F15 F3 VoidSymbol F3 VoidSymbol Console_3 VoidSymbol Console_3 VoidSymbol Console_3
+keycode 62 = F4 F16 F4 F15 F4 VoidSymbol F4 VoidSymbol Console_4 VoidSymbol Console_4 VoidSymbol Console_4
+keycode 63 = F5 F17 F5 F15 F5 VoidSymbol F5 VoidSymbol Console_5 VoidSymbol Console_5 VoidSymbol Console_5
+keycode 64 = F6 F18 F6 F15 F6 VoidSymbol F6 VoidSymbol Console_6 VoidSymbol Console_6 VoidSymbol Console_6
+keycode 65 = F7 F19 F7 F15 F7 VoidSymbol F7 VoidSymbol Console_7 VoidSymbol Console_7 VoidSymbol Console_7
+keycode 66 = F8 F20 F8 F15 F8 VoidSymbol F8 VoidSymbol Console_8 VoidSymbol Console_8 VoidSymbol Console_8
+keycode 67 = F9 F9 F9 F9 F9 VoidSymbol F9 VoidSymbol Console_9 VoidSymbol Console_9 VoidSymbol Console_9
+keycode 68 = F10 F10 F10 F10 F10 VoidSymbol F10 VoidSymbol Console_10 VoidSymbol Console_10 VoidSymbol Console_10
keycode 69 = Num_Lock
keycode 70 = Scroll_Lock Show_Memory Show_Registers
control keycode 70 = Show_State
keycode 85 =
keycode 86 = less greater bar
alt keycode 86 = Meta_less
-keycode 87 = F11 F11 F11 F11 F11 VoidSymbol F11 VoidSymbol Console_11 VoidSymbol Console_11
-keycode 88 = F12 F12 F12 F12 F12 VoidSymbol F12 VoidSymbol Console_12 VoidSymbol Console_12
+keycode 87 = F11 F11 F11 F11 F11 VoidSymbol F11 VoidSymbol Console_11 VoidSymbol Console_11 VoidSymbol Console_11
+keycode 88 = F12 F12 F12 F12 F12 VoidSymbol F12 VoidSymbol Console_12 VoidSymbol Console_12 VoidSymbol Console_12
keycode 89 =
keycode 90 =
keycode 91 =
keycode 125 =
keycode 126 =
keycode 127 =
+
compose ',' 'A' to '¡'
compose '/' 'L' to '£'
compose '^' 'L' to '¥'
-compose '^' 'A' to 'Ä'
-compose '^' 'a' to 'ä'
compose '\'' 'S' to '¦'
compose '^' 'S' to '©'
compose ',' 'S' to 'ª'
compose '.' 'z' to '¿'
compose '\'' 'R' to 'À'
compose '\'' 'A' to 'Á'
-compose '^' 'A' to 'Â'
-compose '^' 'A' to 'Ã'
+compose '^' 'A' to 'Ä'
+compose ':' 'A' to 'Ä'
compose '\'' 'L' to 'Å'
compose '\'' 'C' to 'Æ'
compose ',' 'C' to 'Ç'
compose 'S' 'S' to 'ß'
compose '\'' 'r' to 'à'
compose '\'' 'a' to 'á'
-compose '^' 'a' to 'â'
-compose '^' 'a' to 'ã'
+compose '^' 'a' to 'ä'
+compose ':' 'a' to 'ä'
compose '\'' 'l' to 'å'
compose '\'' 'c' to 'æ'
compose ',' 'c' to 'ç'
-# Slovak ISO 8859-2 keyboard map for text console
-# Written and (c) copyright by Jan Ondrej (ondrejj@salstar.award.sk)
+# Slovak ISO 8859-2 keyboard map for text console (ver. 2)
+# Layout: qwertz
+# Written and (c) copyright by Jan Ondrej (ondrejj@salstar.shadow.sk)
# You can distribute this file under the terms of GNU General
# Public License (GPL). See the file COPYING.
#
# pri kombinacii s pismenom a daval vysledok dva znaky "a .
# Upravil som to pridanim compose.
#
+# Dalej som pridal prepinanie konzoli pomocou CTRL+ALT+F1 az F12
+# podla klasickej klavesovej mapy. Pridal som aj zopar includov,
+# ale neviem, ci nieco upravia.
+#
# Tento subor bol vytvoreny zo suboru cz-lat2.map, ktory
# napisal Jan Kasprzak (kas@ics.muni.cz).
#
charset "iso-8859-2"
keymaps 0-15
+include "linux-keys-bare.inc"
+include "linux-keys-extd.inc"
+include "qwertz-layout.inc"
strings as usual
+
keycode 1 = Escape Escape Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape Meta_Escape
keycode 2 = one exclam plus one VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_one Meta_one Meta_one Meta_one
keycode 3 = two at lcaron two nul nul nul nul Meta_two Meta_two Meta_two Meta_two
keycode 13 = equal plus dead_acute dead_circumflex VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_equal Meta_equal Meta_equal Meta_equal
keycode 14 = Delete Delete Delete Delete VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Delete Meta_Delete Meta_Delete Meta_Delete
keycode 15 = Tab Tab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
-keycode 16 = q
-keycode 17 = w
-keycode 18 = e
-keycode 19 = r
-keycode 20 = t
-keycode 21 = y
-keycode 22 = u
-keycode 23 = i
-keycode 24 = o
-keycode 25 = p
keycode 26 = bracketleft braceleft uacute slash Escape VoidSymbol Escape VoidSymbol Meta_bracketleft Meta_bracketleft Meta_bracketleft Meta_bracketleft
keycode 27 = bracketright braceright adiaeresis parenleft Control_bracketright VoidSymbol Control_bracketright VoidSymbol Meta_bracketright Meta_bracketright Meta_bracketright Meta_bracketright
keycode 28 = Return
alt keycode 28 = Meta_Control_m
alt altgr keycode 28 = Meta_Control_m
keycode 29 = Control
-keycode 30 = a
-keycode 31 = s
-keycode 32 = d
-keycode 33 = f
-keycode 34 = g
-keycode 35 = h
-keycode 36 = j
-keycode 37 = k
-keycode 38 = l
keycode 39 = semicolon colon ocircumflex quotedbl VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_semicolon Meta_semicolon Meta_semicolon Meta_semicolon
keycode 40 = apostrophe quotedbl 0xa7 exclam Control_g VoidSymbol Control_g VoidSymbol Meta_apostrophe Meta_apostrophe Meta_apostrophe Meta_apostrophe
-keycode 41 = grave asciitilde grave dead_diaeresis nul VoidSymbol nul VoidSymbol Meta_grave VoidSymbol Meta_grave
+keycode 41 = grave asciitilde dead_diaeresis dead_circumflex nul VoidSymbol nul VoidSymbol Meta_grave VoidSymbol Meta_grave
keycode 42 = Shift
keycode 43 = backslash bar ncaron parenright Control_backslash VoidSymbol Control_backslash VoidSymbol Meta_backslash VoidSymbol Meta_backslash
-keycode 44 = z
-keycode 45 = x
-keycode 46 = c
-keycode 47 = v
-keycode 48 = b
-keycode 49 = n
-keycode 50 = m
keycode 51 = comma less comma question
alt keycode 51 = Meta_comma
alt altgr keycode 51 = Meta_comma
keycode 56 = Alt
keycode 57 = space space space space nul nul nul nul Meta_space Meta_space Meta_space Meta_space
keycode 58 = Caps_Lock
-keycode 59 = F1 F13 F1 F13 F1 VoidSymbol F1 VoidSymbol Console_1 VoidSymbol Console_1
-keycode 60 = F2 F14 F2 F14 F2 VoidSymbol F2 VoidSymbol Console_2 VoidSymbol Console_2
-keycode 61 = F3 F15 F3 F15 F3 VoidSymbol F3 VoidSymbol Console_3 VoidSymbol Console_3
-keycode 62 = F4 F16 F4 F15 F4 VoidSymbol F4 VoidSymbol Console_4 VoidSymbol Console_4
-keycode 63 = F5 F17 F5 F15 F5 VoidSymbol F5 VoidSymbol Console_5 VoidSymbol Console_5
-keycode 64 = F6 F18 F6 F15 F6 VoidSymbol F6 VoidSymbol Console_6 VoidSymbol Console_6
-keycode 65 = F7 F19 F7 F15 F7 VoidSymbol F7 VoidSymbol Console_7 VoidSymbol Console_7
-keycode 66 = F8 F20 F8 F15 F8 VoidSymbol F8 VoidSymbol Console_8 VoidSymbol Console_8
-keycode 67 = F9 F9 F9 F9 F9 VoidSymbol F9 VoidSymbol Console_9 VoidSymbol Console_9
-keycode 68 = F10 F10 F10 F10 F10 VoidSymbol F10 VoidSymbol Console_10 VoidSymbol Console_10
+keycode 59 = F1 F13 F1 F13 F1 VoidSymbol F1 VoidSymbol Console_1 VoidSymbol Console_1 VoidSymbol Console_1
+keycode 60 = F2 F14 F2 F14 F2 VoidSymbol F2 VoidSymbol Console_2 VoidSymbol Console_2 VoidSymbol Console_2
+keycode 61 = F3 F15 F3 F15 F3 VoidSymbol F3 VoidSymbol Console_3 VoidSymbol Console_3 VoidSymbol Console_3
+keycode 62 = F4 F16 F4 F15 F4 VoidSymbol F4 VoidSymbol Console_4 VoidSymbol Console_4 VoidSymbol Console_4
+keycode 63 = F5 F17 F5 F15 F5 VoidSymbol F5 VoidSymbol Console_5 VoidSymbol Console_5 VoidSymbol Console_5
+keycode 64 = F6 F18 F6 F15 F6 VoidSymbol F6 VoidSymbol Console_6 VoidSymbol Console_6 VoidSymbol Console_6
+keycode 65 = F7 F19 F7 F15 F7 VoidSymbol F7 VoidSymbol Console_7 VoidSymbol Console_7 VoidSymbol Console_7
+keycode 66 = F8 F20 F8 F15 F8 VoidSymbol F8 VoidSymbol Console_8 VoidSymbol Console_8 VoidSymbol Console_8
+keycode 67 = F9 F9 F9 F9 F9 VoidSymbol F9 VoidSymbol Console_9 VoidSymbol Console_9 VoidSymbol Console_9
+keycode 68 = F10 F10 F10 F10 F10 VoidSymbol F10 VoidSymbol Console_10 VoidSymbol Console_10 VoidSymbol Console_10
keycode 69 = Num_Lock
keycode 70 = Scroll_Lock Show_Memory Show_Registers
control keycode 70 = Show_State
keycode 85 =
keycode 86 = less greater bar
alt keycode 86 = Meta_less
-keycode 87 = F11 F11 F11 F11 F11 VoidSymbol F11 VoidSymbol Console_11 VoidSymbol Console_11
-keycode 88 = F12 F12 F12 F12 F12 VoidSymbol F12 VoidSymbol Console_12 VoidSymbol Console_12
+keycode 87 = F11 F11 F11 F11 F11 VoidSymbol F11 VoidSymbol Console_11 VoidSymbol Console_11 VoidSymbol Console_11
+keycode 88 = F12 F12 F12 F12 F12 VoidSymbol F12 VoidSymbol Console_12 VoidSymbol Console_12 VoidSymbol Console_12
keycode 89 =
keycode 90 =
keycode 91 =
keycode 125 =
keycode 126 =
keycode 127 =
+
compose ',' 'A' to '¡'
compose '/' 'L' to '£'
compose '^' 'L' to '¥'
--- /dev/null
+#
+# Mac Extended II Tastatur deutsch
+# abgeleitet von mac-fr2-ext.map
+#
+# Mai 1999, Thomas Adams, tadams@fh-dortmund.de
+#
+# Sonderzeichen, die es auf der Tastatur nicht gibt, habe ich so angeordnet:
+#
+# @ : AltGr + q
+# | : AltGr + #
+# ~ : AltGr + +
+# \ : AltGr + ß
+# { : AltGr + 7
+# } : AltGr + 0
+# [ : AltGr + 8
+# ] : AltGr + 9
+#
+#
+# Ich habe viele der "Control_" und "Meta_" Einstellungen einfach so gelassen,
+# wie sie waren, einfach weil ich nichts so recht damit anfangen kann. :)
+# Wer mir in der Beziehung auf die Sprünge helfen möchte, bitte mailen.
+#
+keymaps 0-2,4-5,8,12
+strings as usual
+compose as usual for "iso-8859-1"
+keycode 1 = s
+keycode 2 = +d +D Hex_D Control_d Control_d Meta_d Meta_Control_d
+keycode 3 = +f +F Hex_F Control_f Control_f Meta_f Meta_Control_f
+keycode 4 = h
+keycode 5 = g
+keycode 6 = y
+keycode 7 = x
+keycode 8 = +c +C Hex_C Control_c Control_c Meta_c Meta_Control_c
+keycode 9 = v
+keycode 10 = dead_circumflex degree
+keycode 11 = +b +B Hex_B Control_b Control_b Meta_b Meta_Control_b
+keycode 12 = +q +Q at
+keycode 13 = w
+keycode 14 = +e +E Hex_E Control_e Control_e Meta_e Meta_Control_e
+keycode 15 = r
+keycode 16 = z
+keycode 17 = t
+keycode 18 = one exclam
+ alt keycode 18 = Meta_one
+keycode 19 = two quotedbl nul nul nul Meta_two
+keycode 20 = three section
+ control keycode 20 = Escape
+ alt keycode 20 = Meta_three
+keycode 21 = four dollar nul Control_backslash
+ alt keycode 21 = Meta_four
+keycode 22 = six ampersand
+ control keycode 22 = Control_asciicircum
+ alt keycode 22 = Meta_six
+keycode 23 = five percent
+ control keycode 23 = Control_bracketright
+ alt keycode 23 = Meta_five
+keycode 24 = dead_acute dead_grave
+ alt keycode 24 = Meta_equal
+keycode 25 = nine parenright bracketright
+ alt keycode 25 = Meta_nine
+keycode 26 = seven slash braceleft Control_underscore
+ alt keycode 26 = Meta_seven
+keycode 27 = ssharp question backslash Control_underscore Control_underscore Meta_minus
+keycode 28 = eight parenleft bracketleft Delete
+ alt keycode 28 = Meta_eight
+keycode 29 = zero equal braceright
+ alt keycode 29 = Meta_zero
+keycode 30 = plus asterisk asciitilde Control_bracketright
+ alt keycode 30 = Meta_bracketright
+keycode 31 = o
+keycode 32 = u
+keycode 33 = +udiaeresis +Udiaeresis
+ control keycode 33 = Escape
+ alt keycode 33 = Meta_bracketleft
+keycode 34 = i
+keycode 35 = p
+keycode 36 = Return
+ alt keycode 36 = Meta_Control_m
+keycode 37 = l
+keycode 38 = j
+keycode 39 = +adiaeresis +Adiaeresis
+ control keycode 39 = Control_g
+ alt keycode 39 = Meta_apostrophe
+keycode 40 = k
+keycode 41 = +odiaeresis +Odiaeresis
+ alt keycode 41 = Meta_semicolon
+keycode 42 = numbersign apostrophe bar
+ control keycode 42 = Control_backslash
+ alt keycode 42 = Meta_backslash
+keycode 43 = comma semicolon
+ alt keycode 43 = Meta_comma
+keycode 44 = minus underscore
+ control keycode 44 = Delete
+ alt keycode 44 = Meta_slash
+keycode 45 = n
+keycode 46 = m
+keycode 47 = period colon
+ control keycode 47 = Compose
+ alt keycode 47 = backslash
+keycode 48 = Tab Tab
+ alt keycode 48 = Meta_Tab
+keycode 49 = space space
+ control keycode 49 = nul
+ alt keycode 49 = Meta_space
+keycode 50 = less greater
+ control keycode 50 = nul
+ alt keycode 50 = Meta_grave
+keycode 51 = BackSpace BackSpace
+ control keycode 51 = Delete
+ alt keycode 51 = Meta_Delete
+keycode 52 =
+keycode 53 = Escape Escape
+ alt keycode 53 = Meta_Escape
+keycode 54 = Control
+keycode 55 = Alt
+keycode 56 = Shift
+keycode 57 = Caps_Lock
+keycode 58 = AltGr
+keycode 59 = Left
+ alt keycode 59 = Decr_Console
+keycode 60 = Right
+ alt keycode 60 = Incr_Console
+keycode 61 = Down
+keycode 62 = Up
+keycode 63 =
+keycode 64 =
+keycode 65 = KP_Period
+keycode 66 =
+keycode 67 = KP_Multiply
+keycode 68 =
+keycode 69 = KP_Add
+keycode 70 =
+keycode 71 = Num_Lock
+keycode 72 =
+keycode 73 =
+keycode 74 =
+keycode 75 = KP_Divide
+keycode 76 = KP_Enter
+keycode 77 =
+keycode 78 = KP_Subtract
+keycode 79 =
+keycode 80 =
+keycode 81 = equal
+keycode 82 = KP_0
+ altgr keycode 82 = Hex_0
+ alt keycode 82 = Ascii_0
+keycode 83 = KP_1
+ altgr keycode 83 = Hex_1
+ alt keycode 83 = Ascii_1
+keycode 84 = KP_2
+ altgr keycode 84 = Hex_2
+ alt keycode 84 = Ascii_2
+keycode 85 = KP_3
+ altgr keycode 85 = Hex_3
+ alt keycode 85 = Ascii_3
+keycode 86 = KP_4
+ altgr keycode 86 = Hex_4
+ alt keycode 86 = Ascii_4
+keycode 87 = KP_5
+ altgr keycode 87 = Hex_5
+ alt keycode 87 = Ascii_5
+keycode 88 = KP_6
+ altgr keycode 88 = Hex_6
+ alt keycode 88 = Ascii_6
+keycode 89 = KP_7
+ altgr keycode 89 = Hex_7
+ alt keycode 89 = Ascii_7
+keycode 90 = +a +A Hex_A Control_a Control_a Meta_a Meta_Control_a
+keycode 91 = KP_8
+ altgr keycode 91 = Hex_8
+ alt keycode 91 = Ascii_8
+keycode 92 = KP_9
+ altgr keycode 92 = Hex_9
+ alt keycode 92 = Ascii_9
+keycode 93 =
+keycode 94 =
+keycode 95 =
+keycode 96 = F5
+ shift keycode 96 = F15
+ altgr keycode 96 = Console_17
+ shift control keycode 96 = VoidSymbol
+ alt keycode 96 = Console_5
+ control alt keycode 96 = Console_5
+keycode 97 = F6
+ shift keycode 97 = F16
+ altgr keycode 97 = Console_18
+ shift control keycode 97 = VoidSymbol
+ alt keycode 97 = Console_6
+ control alt keycode 97 = Console_6
+keycode 98 = F7
+ shift keycode 98 = F17
+ altgr keycode 98 = Console_19
+ shift control keycode 98 = VoidSymbol
+ alt keycode 98 = Console_7
+ control alt keycode 98 = Console_7
+keycode 99 = F3
+ shift keycode 99 = F13
+ altgr keycode 99 = Console_15
+ shift control keycode 99 = VoidSymbol
+ alt keycode 99 = Console_3
+ control alt keycode 99 = Console_3
+keycode 100 = F8
+ shift keycode 100 = F18
+ altgr keycode 100 = Console_20
+ shift control keycode 100 = VoidSymbol
+ alt keycode 100 = Console_8
+ control alt keycode 100 = Console_8
+keycode 101 = F9
+ shift keycode 101 = F19
+ altgr keycode 101 = Console_21
+ shift control keycode 101 = VoidSymbol
+ alt keycode 101 = Console_9
+ control alt keycode 101 = Console_9
+keycode 102 =
+keycode 103 = F11
+ altgr keycode 103 = Console_23
+ shift control keycode 103 = VoidSymbol
+ alt keycode 103 = Console_11
+ control alt keycode 103 = Console_11
+keycode 104 =
+keycode 105 = F13
+keycode 106 =
+keycode 107 = Scroll_Lock Show_Memory Show_Registers Show_State
+ alt keycode 107 = Scroll_Lock
+keycode 108 =
+keycode 109 = F10
+ shift keycode 109 = F20
+ altgr keycode 109 = Console_22
+ shift control keycode 109 = VoidSymbol
+ alt keycode 109 = Console_10
+ control alt keycode 109 = Console_10
+keycode 110 =
+keycode 111 = F12
+ altgr keycode 111 = Console_24
+ shift control keycode 111 = VoidSymbol
+ alt keycode 111 = Console_12
+ control alt keycode 111 = Console_12
+keycode 112 =
+keycode 113 = Pause
+keycode 114 = Insert
+keycode 115 = Find
+keycode 116 = Prior
+ shift keycode 116 = Scroll_Backward
+keycode 117 = Remove
+keycode 118 = F4
+ shift keycode 118 = F14
+ altgr keycode 118 = Console_16
+ shift control keycode 118 = VoidSymbol
+ alt keycode 118 = Console_4
+ control alt keycode 118 = Console_4
+keycode 119 = Select
+keycode 120 = F2
+ shift keycode 120 = F12
+ altgr keycode 120 = Console_14
+ shift control keycode 120 = VoidSymbol
+ alt keycode 120 = Console_2
+ control alt keycode 120 = Console_2
+keycode 121 = Next
+ shift keycode 121 = Scroll_Forward
+keycode 122 = F1
+ shift keycode 122 = F11
+ altgr keycode 122 = Console_13
+ shift control keycode 122 = VoidSymbol
+ alt keycode 122 = Console_1
+ control alt keycode 122 = Console_1
+keycode 123 =
+keycode 124 =
+keycode 125 =
+keycode 126 =
+keycode 127 =
+ shift control keycode 127 = Boot
alt keycode 0x41 = Meta_bracketright
keycode 0x42 = Delete Delete
control keycode 0x42 = BackSpace
- alt keycode 0x43 = Meta_Delete
+ alt keycode 0x42 = Meta_Delete
control alt keycode 0x42 = Boot
keycode 0x43 = Compose
keycode 0x44 = KP_7
--- /dev/null
+# Date: Tue, 30 Mar 1999 05:29:12 +0300 (EET DST)
+# From: Paavo Hartikainen <pahartik@sci.fi>
+# X-Sender: pahartik@simpukka
+# To: Andries.Brouwer@cwi.nl
+# Subject: Re: Keymap for finnish Sun type 4 keyboard
+#
+strings as usual
+compose as usual for "iso-8859-1"
+keymaps 0-2,4-5,8,12
+keycode 1 =
+keycode 2 =
+keycode 3 =
+keycode 4 =
+keycode 5 = F1
+ shift keycode 5 = F11
+ altgr keycode 5 = Console_13
+ shift control keycode 5 = VoidSymbol
+ alt keycode 5 = Console_1
+ control alt keycode 5 = Console_1
+keycode 6 = F2
+ shift keycode 6 = F12
+ altgr keycode 6 = Console_14
+ shift control keycode 6 = VoidSymbol
+ alt keycode 6 = Console_2
+ control alt keycode 6 = Console_2
+keycode 7 = F10
+ shift keycode 7 = F20
+ altgr keycode 7 = Console_22
+ shift control keycode 7 = VoidSymbol
+ alt keycode 7 = Console_10
+ control alt keycode 7 = Console_10
+keycode 8 = F3
+ shift keycode 8 = F13
+ altgr keycode 8 = Console_15
+ shift control keycode 8 = VoidSymbol
+ alt keycode 8 = Console_3
+ control alt keycode 8 = Console_3
+keycode 9 = F11
+ altgr keycode 9 = Console_23
+ shift control keycode 9 = VoidSymbol
+ alt keycode 9 = Console_11
+ control alt keycode 9 = Console_11
+keycode 10 = F4
+ shift keycode 10 = F14
+ altgr keycode 10 = Console_16
+ shift control keycode 10 = VoidSymbol
+ alt keycode 10 = Console_4
+ control alt keycode 10 = Console_4
+keycode 11 = F12
+ altgr keycode 11 = Console_24
+ shift control keycode 11 = VoidSymbol
+ alt keycode 11 = Console_12
+ control alt keycode 11 = Console_12
+keycode 12 = F5
+ shift keycode 12 = F15
+ altgr keycode 12 = Console_17
+ shift control keycode 12 = VoidSymbol
+ alt keycode 12 = Console_5
+ control alt keycode 12 = Console_5
+keycode 13 = Compose
+keycode 14 = F6
+ shift keycode 14 = F16
+ altgr keycode 14 = Console_18
+ shift control keycode 14 = VoidSymbol
+ alt keycode 14 = Console_6
+ control alt keycode 14 = Console_6
+keycode 15 = tilde circumflex
+keycode 16 = F7 F17 Console_19 F8
+ alt keycode 16 = Console_7
+ control alt keycode 16 = Console_7
+keycode 17 = F8 F18 Console_20
+ alt keycode 17 = Console_8
+ control alt keycode 17 = Console_8
+keycode 18 = F9
+ shift keycode 18 = F19
+ altgr keycode 18 = Console_21
+ shift control keycode 18 = VoidSymbol
+ alt keycode 18 = Console_9
+ control alt keycode 18 = Console_9
+keycode 19 = Alt
+keycode 20 = Up
+keycode 21 = Pause
+keycode 22 =
+keycode 23 = Scroll_Lock Show_Memory Show_Registers Show_State
+ alt keycode 23 = Scroll_Lock
+keycode 24 = Left
+ alt keycode 24 = Decr_Console
+keycode 25 =
+keycode 26 =
+keycode 27 = Down
+keycode 28 = Right
+ alt keycode 28 = Incr_Console
+keycode 29 = Escape Escape
+ alt keycode 29 = Meta_Escape
+keycode 30 = one exclam
+ alt keycode 30 = Meta_one
+keycode 31 = two quotedbl at nul nul Meta_two
+keycode 32 = three numbersign sterling Escape
+ alt keycode 32 = Meta_three
+keycode 33 = four dollar dollar Control_backslash
+ alt keycode 33 = Meta_four
+keycode 34 = five percent
+ control keycode 34 = Control_bracketright
+ alt keycode 34 = Meta_five
+keycode 35 = six ampersand
+ control keycode 35 = Control_asciicircum
+ alt keycode 35 = Meta_six
+keycode 36 = seven slash braceleft Control_underscore
+ alt keycode 36 = Meta_seven
+keycode 37 = eight parenleft bracketleft Delete
+ alt keycode 37 = Meta_eight
+keycode 38 = nine parenright bracketright
+ alt keycode 38 = Meta_nine
+keycode 39 = zero equal braceright
+ alt keycode 39 = Meta_zero
+keycode 40 = plus question backslash Control_underscore Control_underscore Meta_minus
+keycode 41 = dead_acute dead_grave
+ alt keycode 41 = Meta_equal
+keycode 42 = apostrophe asterisk grave Control_backslash
+ alt keycode 88 = Meta_backslash
+keycode 43 = BackSpace BackSpace
+ control keycode 43 = BackSpace
+ alt keycode 43 = Meta_Delete
+keycode 44 = Insert
+keycode 45 = equal
+keycode 46 = KP_Divide
+keycode 47 = KP_Multiply
+keycode 48 =
+keycode 49 =
+keycode 50 = KP_Period
+ control alt keycode 50 = Boot
+keycode 51 =
+keycode 52 =
+keycode 53 = Tab Tab
+ alt keycode 53 = Meta_Tab
+keycode 54 = q
+keycode 55 = w
+keycode 56 = +e +E Hex_E Control_e Control_e Meta_e Meta_Control_e
+keycode 57 = r
+keycode 58 = t
+keycode 59 = y
+keycode 60 = u
+keycode 61 = i
+keycode 62 = o
+keycode 63 = p
+keycode 64 = +aring +Aring
+ control keycode 64 = Escape
+ alt keycode 64 = Meta_bracketleft
+keycode 65 = dead_diaeresis dead_circumflex dead_tilde Control_bracketright
+ alt keycode 65 = Meta_bracketright
+keycode 66 = Delete Delete
+ control keycode 66 = BackSpace
+keycode 67 = AltGr
+ alt keycode 67 = Meta_Delete
+keycode 68 = KP_7
+ altgr keycode 68 = Hex_7
+ alt keycode 68 = Ascii_7
+keycode 69 = KP_8
+ altgr keycode 69 = Hex_8
+ alt keycode 69 = Ascii_8
+keycode 70 = KP_9
+ altgr keycode 70 = Hex_9
+ alt keycode 70 = Ascii_9
+keycode 71 = KP_Subtract
+keycode 72 =
+keycode 73 =
+keycode 74 = Select
+keycode 75 =
+keycode 76 = Caps_Lock
+keycode 77 = +a +A Hex_A Control_a Control_a Meta_a Meta_Control_a
+keycode 78 = s
+keycode 79 = +d +D Hex_D Control_d Control_d Meta_d Meta_Control_d
+keycode 80 = +f +F Hex_F Control_f Control_f Meta_f Meta_Control_f
+keycode 81 = g
+keycode 82 = h
+keycode 83 = j
+keycode 84 = k
+keycode 85 = l
+keycode 86 = +odiaeresis +Odiaeresis
+ alt keycode 86 = Meta_semicolon
+keycode 87 = +adiaeresis +Adiaeresis
+ control keycode 87 = Control_g
+ alt keycode 87 = Meta_apostrophe
+keycode 88 = section onehalf
+ control keycode 42 = nul
+ alt keycode 42 = Meta_grave
+keycode 89 = Return
+ alt keycode 89 = Meta_Control_m
+keycode 90 = KP_Enter
+keycode 91 = KP_4
+ altgr keycode 91 = Hex_4
+ alt keycode 91 = Ascii_4
+keycode 92 = KP_5
+ altgr keycode 92 = Hex_5
+ alt keycode 92 = Ascii_5
+keycode 93 = KP_6
+ altgr keycode 93 = Hex_6
+ alt keycode 93 = Ascii_6
+keycode 94 = KP_0
+ altgr keycode 94 = Hex_0
+ alt keycode 94 = Ascii_0
+keycode 95 = Find
+keycode 96 = Prior
+ shift keycode 96 = Scroll_Backward
+keycode 97 =
+keycode 98 = Num_Lock
+keycode 99 = Shift
+keycode 100 = z
+keycode 101 = x
+keycode 102 = +c +C Hex_C Control_c Control_c Meta_c Meta_Control_c
+keycode 103 = v
+keycode 104 = +b +B Hex_B Control_b Control_b Meta_b Meta_Control_b
+keycode 105 = n
+keycode 106 = m
+keycode 107 = comma semicolon
+ alt keycode 107 = Meta_comma
+keycode 108 = period colon
+ control keycode 108 = Compose
+ alt keycode 108 = Meta_period
+keycode 109 = minus underscore
+ control keycode 109 = Delete
+ alt keycode 109 = Meta_slash
+keycode 110 = Shift
+keycode 111 = Linefeed
+keycode 112 = KP_1
+ altgr keycode 112 = Hex_1
+ alt keycode 112 = Ascii_1
+keycode 113 = KP_2
+ altgr keycode 113 = Hex_2
+ alt keycode 113 = Ascii_2
+keycode 114 = KP_3
+ altgr keycode 114 = Hex_3
+ alt keycode 114 = Ascii_3
+keycode 115 =
+keycode 116 =
+keycode 117 =
+keycode 118 = Help
+keycode 119 = Control
+keycode 120 =
+keycode 121 = space space
+ control keycode 121 = nul
+ alt keycode 121 = Meta_space
+keycode 122 =
+keycode 123 = Next
+ shift keycode 123 = Scroll_Forward
+keycode 124 = less greater bar
+keycode 125 = KP_Add
+keycode 126 =
+keycode 127 =
--- /dev/null
+# ISO/IEC 8859-1\r
+0x000 U+00a0 # NO-BREAK SPACE\r
+0x001 U+00a1 # INVERTED EXCLAMATION MARK\r
+0x002 U+00a2 # CENT SIGN\r
+0x003 U+00a3 # POUND SIGN\r
+0x004 U+00a4 # CURRENCY SIGN\r
+0x005 U+00a5 # YEN SIGN\r
+0x006 U+00a6 # BROKEN BAR\r
+0x007 U+00a7 # SECTION SIGN\r
+0x008 U+00a8 # DIAERESIS\r
+0x009 U+00a9 # COPYRIGHT SIGN\r
+0x00a U+00aa # FEMININE ORDINAL INDICATOR\r
+0x00b U+00ab # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x00c U+00ac # NOT SIGN\r
+0x00d U+00ad # SOFT HYPHEN\r
+0x00e U+00ae # REGISTERED SIGN\r
+0x00f U+00af # MACRON\r
+0x010 U+00b0 # DEGREE SIGN\r
+0x011 U+00b1 # PLUS-MINUS SIGN\r
+0x012 U+00b2 # SUPERSCRIPT TWO\r
+0x013 U+00b3 # SUPERSCRIPT THREE\r
+0x014 U+00b4 # ACUTE ACCENT\r
+0x015 U+00b5 # MICRO SIGN\r
+0x016 U+00b6 # PILCROW SIGN\r
+0x017 U+00b7 # MIDDLE DOT\r
+0x018 U+00b8 # CEDILLA\r
+0x019 U+00b9 # SUPERSCRIPT ONE\r
+0x01a U+00ba # MASCULINE ORDINAL INDICATOR\r
+0x01b U+00bb # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x01c U+00bc # VULGAR FRACTION ONE QUARTER\r
+0x01d U+00bd # VULGAR FRACTION ONE HALF\r
+0x01e U+00be # VULGAR FRACTION THREE QUARTERS\r
+0x01f U+00bf # INVERTED QUESTION MARK\r
+0x020 U+00c0 # LATIN CAPITAL LETTER A WITH GRAVE\r
+0x021 U+00c1 # LATIN CAPITAL LETTER A WITH ACUTE\r
+0x022 U+00c2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX\r
+0x023 U+00c3 # LATIN CAPITAL LETTER A WITH TILDE\r
+0x024 U+00c4 # LATIN CAPITAL LETTER A WITH DIAERESIS\r
+0x025 U+00c5 # LATIN CAPITAL LETTER A WITH RING ABOVE\r
+0x026 U+00c6 # LATIN CAPITAL LETTER AE\r
+0x027 U+00c7 # LATIN CAPITAL LETTER C WITH CEDILLA\r
+0x028 U+00c8 # LATIN CAPITAL LETTER E WITH GRAVE\r
+0x029 U+00c9 # LATIN CAPITAL LETTER E WITH ACUTE\r
+0x02a U+00ca # LATIN CAPITAL LETTER E WITH CIRCUMFLEX\r
+0x02b U+00cb # LATIN CAPITAL LETTER E WITH DIAERESIS\r
+0x02c U+00cc # LATIN CAPITAL LETTER I WITH GRAVE\r
+0x02d U+00cd # LATIN CAPITAL LETTER I WITH ACUTE\r
+0x02e U+00ce # LATIN CAPITAL LETTER I WITH CIRCUMFLEX\r
+0x02f U+00cf # LATIN CAPITAL LETTER I WITH DIAERESIS\r
+0x030 U+00d0 # LATIN CAPITAL LETTER ETH\r
+0x031 U+00d1 # LATIN CAPITAL LETTER N WITH TILDE\r
+0x032 U+00d2 # LATIN CAPITAL LETTER O WITH GRAVE\r
+0x033 U+00d3 # LATIN CAPITAL LETTER O WITH ACUTE\r
+0x034 U+00d4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX\r
+0x035 U+00d5 # LATIN CAPITAL LETTER O WITH TILDE\r
+0x036 U+00d6 # LATIN CAPITAL LETTER O WITH DIAERESIS\r
+0x037 U+00d7 # MULTIPLICATION SIGN\r
+0x038 U+00d8 # LATIN CAPITAL LETTER O WITH STROKE\r
+0x039 U+00d9 # LATIN CAPITAL LETTER U WITH GRAVE\r
+0x03a U+00da # LATIN CAPITAL LETTER U WITH ACUTE\r
+0x03b U+00db # LATIN CAPITAL LETTER U WITH CIRCUMFLEX\r
+0x03c U+00dc # LATIN CAPITAL LETTER U WITH DIAERESIS\r
+0x03d U+00dd # LATIN CAPITAL LETTER Y WITH ACUTE\r
+0x03e U+00de # LATIN CAPITAL LETTER THORN\r
+0x03f U+00df # LATIN SMALL LETTER SHARP S\r
+0x040 U+00e0 # LATIN SMALL LETTER A WITH GRAVE\r
+0x041 U+00e1 # LATIN SMALL LETTER A WITH ACUTE\r
+0x042 U+00e2 # LATIN SMALL LETTER A WITH CIRCUMFLEX\r
+0x043 U+00e3 # LATIN SMALL LETTER A WITH TILDE\r
+0x044 U+00e4 # LATIN SMALL LETTER A WITH DIAERESIS\r
+0x045 U+00e5 # LATIN SMALL LETTER A WITH RING ABOVE\r
+0x046 U+00e6 # LATIN SMALL LETTER AE\r
+0x047 U+00e7 # LATIN SMALL LETTER C WITH CEDILLA\r
+0x048 U+00e8 # LATIN SMALL LETTER E WITH GRAVE\r
+0x049 U+00e9 # LATIN SMALL LETTER E WITH ACUTE\r
+0x04a U+00ea # LATIN SMALL LETTER E WITH CIRCUMFLEX\r
+0x04b U+00eb # LATIN SMALL LETTER E WITH DIAERESIS\r
+0x04c U+00ec # LATIN SMALL LETTER I WITH GRAVE\r
+0x04d U+00ed # LATIN SMALL LETTER I WITH ACUTE\r
+0x04e U+00ee # LATIN SMALL LETTER I WITH CIRCUMFLEX\r
+0x04f U+00ef # LATIN SMALL LETTER I WITH DIAERESIS\r
+0x050 U+00f0 # LATIN SMALL LETTER ETH\r
+0x051 U+00f1 # LATIN SMALL LETTER N WITH TILDE\r
+0x052 U+00f2 # LATIN SMALL LETTER O WITH GRAVE\r
+0x053 U+00f3 # LATIN SMALL LETTER O WITH ACUTE\r
+0x054 U+00f4 # LATIN SMALL LETTER O WITH CIRCUMFLEX\r
+0x055 U+00f5 # LATIN SMALL LETTER O WITH TILDE\r
+0x056 U+00f6 # LATIN SMALL LETTER O WITH DIAERESIS\r
+0x057 U+00f7 # DIVISION SIGN\r
+0x058 U+00f8 # LATIN SMALL LETTER O WITH STROKE\r
+0x059 U+00f9 # LATIN SMALL LETTER U WITH GRAVE\r
+0x05a U+00fa # LATIN SMALL LETTER U WITH ACUTE\r
+0x05b U+00fb # LATIN SMALL LETTER U WITH CIRCUMFLEX\r
+0x05c U+00fc # LATIN SMALL LETTER U WITH DIAERESIS\r
+0x05d U+00fd # LATIN SMALL LETTER Y WITH ACUTE\r
+0x05e U+00fe # LATIN SMALL LETTER THORN\r
+0x05f U+00ff # LATIN SMALL LETTER Y WITH DIAERESIS\r
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO/IEC 8859-10 (Latin-6)\r
+0x000 U+00a0 # NO-BREAK SPACE\r
+0x001 U+0104 # LATIN CAPITAL LETTER A WITH OGONEK\r
+0x002 U+0112 # LATIN CAPITAL LETTER E WITH MACRON\r
+0x003 U+0122 # LATIN CAPITAL LETTER G WITH CEDILLA\r
+0x004 U+0124 # LATIN CAPITAL LETTER I WITH MACRON\r
+0x005 U+0128 # LATIN CAPITAL LETTER I WITH TILDE\r
+0x006 U+0136 # LATIN CAPITAL LETTER K WITH CEDILLA\r
+0x007 U+00a7 # SECTION SIGN\r
+0x008 U+013b # LATIN CAPITAL LETTER L WITH CEDILLA\r
+0x009 U+0110 # LATIN CAPITAL LETTER D WITH STROKE\r
+0x00a U+0160 # LATIN CAPITAL LETTER S WITH CARON\r
+0x00b U+0166 # LATIN CAPITAL LETTER T WITH STROKE\r
+0x00c U+017d # LATIN CAPITAL LETTER Z WITH CARON\r
+0x00d U+00ad # SOFT HYPHEN\r
+0x00e U+016a # LATIN CAPITAL LETTER U WITH MACRON\r
+0x00f U+014a # LATIN CAPITAL LETTER ENG\r
+0x010 U+00b0 # DEGREE SIGN\r
+0x011 U+0105 # LATIN SMALL LETTER A WITH OGONEK\r
+0x012 U+0113 # LATIN SMALL LETTER E WITH MACRON\r
+0x013 U+0123 # LATIN SMALL LETTER G WITH CEDILLA\r
+0x014 U+012b # LATIN SMALL LETTER I WITH MACRON\r
+0x015 U+0129 # LATIN SMALL LETTER I WITH TILDE\r
+0x016 U+0137 # LATIN SMALL LETTER K WITH CEDILLA\r
+0x017 U+00b7 # MIDDLE DOT\r
+0x018 U+013c # LATIN SMALL LETTER L WITH CEDILLA\r
+0x019 U+0111 # LATIN SMALL LETTER D WITH STROKE\r
+0x01a U+0161 # LATIN SMALL LETTER S WITH CARON\r
+0x01b U+0167 # LATIN SMALL LETTER T WITH STROKE\r
+0x01c U+017e # LATIN SMALL LETTER Z WITH CARON\r
+0x01d U+2015 # HORIZONTAL BAR\r
+0x01e U+016b # LATIN SMALL LETTER U WITH MACRON\r
+0x01f U+014b # LATIN SMALL LETTER ENG\r
+0x020 U+0100 # LATIN CAPITAL LETTER A WITH MACRON\r
+0x021 U+00c1 # LATIN CAPITAL LETTER A WITH ACUTE\r
+0x022 U+00c2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX\r
+0x023 U+00c3 # LATIN CAPITAL LETTER A WITH TILDE\r
+0x024 U+00c4 # LATIN CAPITAL LETTER A WITH DIAERESIS\r
+0x025 U+00c5 # LATIN CAPITAL LETTER A WITH RING ABOVE\r
+0x026 U+00c6 # LATIN CAPITAL LETTER AE\r
+0x027 U+012e # LATIN CAPITAL LETTER I WITH OGONEK\r
+0x028 U+010c # LATIN CAPITAL LETTER C WITH CARON\r
+0x029 U+00c9 # LATIN CAPITAL LETTER E WITH ACUTE\r
+0x02a U+0118 # LATIN CAPITAL LETTER E WITH OGONEK\r
+0x02b U+00cb # LATIN CAPITAL LETTER E WITH DIAERESIS\r
+0x02c U+0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE\r
+0x02d U+00cd # LATIN CAPITAL LETTER I WITH ACUTE\r
+0x02e U+00ce # LATIN CAPITAL LETTER I WITH CIRCUMFLEX\r
+0x02f U+00cf # LATIN CAPITAL LETTER I WITH DIAERESIS\r
+0x030 U+00d0 # LATIN CAPITAL LETTER ETH\r
+0x031 U+0145 # LATIN CAPITAL LETTER N WITH CEDILLA\r
+0x032 U+014c # LATIN CAPITAL LETTER O WITH MACRON\r
+0x033 U+00d3 # LATIN CAPITAL LETTER O WITH ACUTE\r
+0x034 U+00d4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX\r
+0x035 U+00d5 # LATIN CAPITAL LETTER O WITH TILDE\r
+0x036 U+00d6 # LATIN CAPITAL LETTER O WITH DIAERESIS\r
+0x037 U+0168 # LATIN CAPITAL LETTER U WITH TILDE\r
+0x038 U+00d8 # LATIN CAPITAL LETTER O WITH STROKE\r
+0x039 U+0172 # LATIN CAPITAL LETTER U WITH OGONEK\r
+0x03a U+00da # LATIN CAPITAL LETTER U WITH ACUTE\r
+0x03b U+00db # LATIN CAPITAL LETTER U WITH CIRCUMFLEX\r
+0x03c U+00dc # LATIN CAPITAL LETTER U WITH DIAERESIS\r
+0x03d U+00dd # LATIN CAPITAL LETTER Y WITH ACUTE\r
+0x03e U+00de # LATIN CAPITAL LETTER THORN\r
+0x03f U+00df # LATIN SMALL LETTER SHARP S\r
+0x040 U+0101 # LATIN SMALL LETTER A WITH MACRON\r
+0x041 U+00e1 # LATIN SMALL LETTER A WITH ACUTE\r
+0x042 U+00e2 # LATIN SMALL LETTER A WITH CIRCUMFLEX\r
+0x043 U+00e3 # LATIN SMALL LETTER A WITH TILDE\r
+0x044 U+00e4 # LATIN SMALL LETTER A WITH DIAERESIS\r
+0x045 U+00e5 # LATIN SMALL LETTER A WITH RING ABOVE\r
+0x046 U+00e6 # LATIN SMALL LETTER AE\r
+0x047 U+012f # LATIN SMALL LETTER I WITH OGONEK\r
+0x048 U+010d # LATIN SMALL LETTER C WITH CARON\r
+0x049 U+00e9 # LATIN SMALL LETTER E WITH ACUTE\r
+0x04a U+0119 # LATIN SMALL LETTER E WITH OGONEK\r
+0x04b U+00eb # LATIN SMALL LETTER E WITH DIAERESIS\r
+0x04c U+0117 # LATIN SMALL LETTER E WITH DOT ABOVE\r
+0x04d U+00ed # LATIN SMALL LETTER I WITH ACUTE\r
+0x04e U+00ee # LATIN SMALL LETTER I WITH CIRCUMFLEX\r
+0x04f U+00ef # LATIN SMALL LETTER I WITH DIAERESIS\r
+0x050 U+00f0 # LATIN SMALL LETTER ETH\r
+0x051 U+0146 # LATIN SMALL LETTER N WITH CEDILLA\r
+0x052 U+014d # LATIN SMALL LETTER O WITH MACRON\r
+0x053 U+00f3 # LATIN SMALL LETTER O WITH ACUTE\r
+0x054 U+00f4 # LATIN SMALL LETTER O WITH CIRCUMFLEX\r
+0x055 U+00f5 # LATIN SMALL LETTER O WITH TILDE\r
+0x056 U+00f6 # LATIN SMALL LETTER O WITH DIAERESIS\r
+0x057 U+0169 # LATIN SMALL LETTER U WITH TILDE\r
+0x058 U+00f8 # LATIN SMALL LETTER O WITH STROKE\r
+0x059 U+0173 # LATIN SMALL LETTER U WITH OGONEK\r
+0x05a U+00fa # LATIN SMALL LETTER U WITH ACUTE\r
+0x05b U+00fb # LATIN SMALL LETTER U WITH CIRCUMFLEX\r
+0x05c U+00fc # LATIN SMALL LETTER U WITH DIAERESIS\r
+0x05d U+00fd # LATIN SMALL LETTER Y WITH ACUTE\r
+0x05e U+00fe # LATIN SMALL LETTER THORN\r
+0x05f U+0138 # LATIN SMALL LETTER KRA\r
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO/IEC 8859-13\r
+0x000 U+00A0 # NO-BREAK SPACE\r
+0x001 U+201D # RIGHT DOUBLE QUOTATION MARK\r
+0x002 U+00A2 # CENT SIGN\r
+0x003 U+00A3 # POUND SIGN\r
+0x004 U+00A4 # CURRENCY SIGN\r
+0x005 U+201E # DOUBLE LOW-9 QUOTATION MARK\r
+0x006 U+00A6 # BROKEN BAR\r
+0x007 U+00A7 # SECTION SIGN\r
+0x008 U+00D8 # LATIN CAPITAL LETTER O WITH STROKE\r
+0x009 U+00A9 # COPYRIGHT SIGN\r
+0x00A U+0156 # LATIN CAPITAL LETTER R WITH CEDILLA\r
+0x00B U+00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x00C U+00AC # NOT SIGN\r
+0x00D U+00AD # SOFT HYPHEN\r
+0x00E U+00AE # REGISTERED SIGN\r
+0x00F U+00C6 # LATIN CAPITAL LETTER AE\r
+0x010 U+00B0 # DEGREE SIGN\r
+0x011 U+00B1 # PLUS-MINUS SIGN\r
+0x012 U+00B2 # SUPERSCRIPT TWO\r
+0x013 U+00B3 # SUPERSCRIPT THREE\r
+0x014 U+201C # LEFT DOUBLE QUOTATION MARK\r
+0x015 U+00B5 # MICRO SIGN\r
+0x016 U+00B6 # PILCROW SIGN\r
+0x017 U+00B7 # MIDDLE DOT\r
+0x018 U+00F8 # LATIN SMALL LETTER O WITH STROKE\r
+0x019 U+00B9 # SUPERSCRIPT ONE\r
+0x01A U+0157 # LATIN SMALL LETTER R WITH CEDILLA\r
+0x01B U+00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x01C U+00BC # VULGAR FRACTION ONE QUARTER\r
+0x01D U+00BD # VULGAR FRACTION ONE HALF\r
+0x01E U+00BE # VULGAR FRACTION THREE QUARTERS\r
+0x01F U+00E6 # LATIN SMALL LETTER AE\r
+0x020 U+0104 # LATIN CAPITAL LETTER A WITH OGONEK\r
+0x021 U+012E # LATIN CAPITAL LETTER I WITH OGONEK\r
+0x022 U+0100 # LATIN CAPITAL LETTER A WITH MACRON\r
+0x023 U+0106 # LATIN CAPITAL LETTER C WITH ACUTE\r
+0x024 U+00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS\r
+0x025 U+00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE\r
+0x026 U+0118 # LATIN CAPITAL LETTER E WITH OGONEK\r
+0x027 U+0112 # LATIN CAPITAL LETTER E WITH MACRON\r
+0x028 U+010C # LATIN CAPITAL LETTER C WITH CARON\r
+0x029 U+00C9 # LATIN CAPITAL LETTER E WITH ACUTE\r
+0x02A U+0179 # LATIN CAPITAL LETTER Z WITH ACUTE\r
+0x02B U+0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE\r
+0x02C U+0122 # LATIN CAPITAL LETTER G WITH CEDILLA\r
+0x02D U+0136 # LATIN CAPITAL LETTER K WITH CEDILLA\r
+0x02E U+012A # LATIN CAPITAL LETTER I WITH MACRON\r
+0x02F U+013B # LATIN CAPITAL LETTER L WITH CEDILLA\r
+0x030 U+0160 # LATIN CAPITAL LETTER S WITH CARON\r
+0x031 U+0143 # LATIN CAPITAL LETTER N WITH ACUTE\r
+0x032 U+0145 # LATIN CAPITAL LETTER N WITH CEDILLA\r
+0x033 U+00D3 # LATIN CAPITAL LETTER O WITH ACUTE\r
+0x034 U+014C # LATIN CAPITAL LETTER O WITH MACRON\r
+0x035 U+00D5 # LATIN CAPITAL LETTER O WITH TILDE\r
+0x036 U+00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS\r
+0x037 U+00D7 # MULTIPLICATION SIGN\r
+0x038 U+0172 # LATIN CAPITAL LETTER U WITH OGONEK\r
+0x039 U+0141 # LATIN CAPITAL LETTER L WITH STROKE\r
+0x03A U+015A # LATIN CAPITAL LETTER S WITH ACUTE\r
+0x03B U+016A # LATIN CAPITAL LETTER U WITH MACRON\r
+0x03C U+00DC # LATIN CAPITAL LETTER U WITH DIAERESIS\r
+0x03D U+017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE\r
+0x03E U+017D # LATIN CAPITAL LETTER Z WITH CARON\r
+0x03F U+00DF # LATIN SMALL LETTER SHARP S\r
+0x040 U+0105 # LATIN SMALL LETTER A WITH OGONEK\r
+0x041 U+012F # LATIN SMALL LETTER I WITH OGONEK\r
+0x042 U+0101 # LATIN SMALL LETTER A WITH MACRON\r
+0x043 U+0107 # LATIN SMALL LETTER C WITH ACUTE\r
+0x044 U+00E4 # LATIN SMALL LETTER A WITH DIAERESIS\r
+0x045 U+00E5 # LATIN SMALL LETTER A WITH RING ABOVE\r
+0x046 U+0119 # LATIN SMALL LETTER E WITH OGONEK\r
+0x047 U+0113 # LATIN SMALL LETTER E WITH MACRON\r
+0x048 U+010D # LATIN SMALL LETTER C WITH CARON\r
+0x049 U+00E9 # LATIN SMALL LETTER E WITH ACUTE\r
+0x04A U+017A # LATIN SMALL LETTER Z WITH ACUTE\r
+0x04B U+0117 # LATIN SMALL LETTER E WITH DOT ABOVE\r
+0x04C U+0123 # LATIN SMALL LETTER G WITH CEDILLA\r
+0x04D U+0137 # LATIN SMALL LETTER K WITH CEDILLA\r
+0x04E U+012B # LATIN SMALL LETTER I WITH MACRON\r
+0x04F U+013C # LATIN SMALL LETTER L WITH CEDILLA\r
+0x050 U+0161 # LATIN SMALL LETTER S WITH CARON\r
+0x051 U+0144 # LATIN SMALL LETTER N WITH ACUTE\r
+0x052 U+0146 # LATIN SMALL LETTER N WITH CEDILLA\r
+0x053 U+00F3 # LATIN SMALL LETTER O WITH ACUTE\r
+0x054 U+014D # LATIN SMALL LETTER O WITH MACRON\r
+0x055 U+00F5 # LATIN SMALL LETTER O WITH TILDE\r
+0x056 U+00F6 # LATIN SMALL LETTER O WITH DIAERESIS\r
+0x057 U+00F7 # DIVISION SIGN\r
+0x058 U+0173 # LATIN SMALL LETTER U WITH OGONEK\r
+0x059 U+0142 # LATIN SMALL LETTER L WITH STROKE\r
+0x05A U+015B # LATIN SMALL LETTER S WITH ACUTE\r
+0x05B U+016B # LATIN SMALL LETTER U WITH MACRON\r
+0x05C U+00FC # LATIN SMALL LETTER U WITH DIAERESIS\r
+0x05D U+017C # LATIN SMALL LETTER Z WITH DOT ABOVE\r
+0x05E U+017E # LATIN SMALL LETTER Z WITH CARON\r
+0x05F U+2019 # RIGHT SINGLE QUOTATION MARK\r
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO/IEC 8859-14\r
+0x000 U+00A0 # NO-BREAK SPACE\r
+0x001 U+1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE\r
+0x002 U+1E03 # LATIN SMALL LETTER B WITH DOT ABOVE\r
+0x003 U+00A3 # POUND SIGN\r
+0x004 U+010A # LATIN CAPITAL LETTER C WITH DOT ABOVE\r
+0x005 U+010B # LATIN SMALL LETTER C WITH DOT ABOVE\r
+0x006 U+1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE\r
+0x007 U+00A7 # SECTION SIGN\r
+0x008 U+1E80 # LATIN CAPITAL LETTER W WITH GRAVE\r
+0x009 U+00A9 # COPYRIGHT SIGN\r
+0x00A U+1E82 # LATIN CAPITAL LETTER W WITH ACUTE\r
+0x00B U+1E0B # LATIN SMALL LETTER D WITH DOT ABOVE\r
+0x00C U+1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE\r
+0x00D U+00AD # SOFT HYPHEN\r
+0x00E U+00AE # REGISTERED SIGN\r
+0x00F U+0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS\r
+0x010 U+1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE\r
+0x011 U+1E1F # LATIN SMALL LETTER F WITH DOT ABOVE\r
+0x012 U+0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE\r
+0x013 U+0121 # LATIN SMALL LETTER G WITH DOT ABOVE\r
+0x014 U+1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE\r
+0x015 U+1E41 # LATIN SMALL LETTER M WITH DOT ABOVE\r
+0x016 U+00B6 # PILCROW SIGN\r
+0x017 U+1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE\r
+0x018 U+1E81 # LATIN SMALL LETTER W WITH GRAVE\r
+0x019 U+1E57 # LATIN SMALL LETTER P WITH DOT ABOVE\r
+0x01A U+1E83 # LATIN SMALL LETTER W WITH ACUTE\r
+0x01B U+1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE\r
+0x01C U+1EF3 # LATIN SMALL LETTER Y WITH GRAVE\r
+0x01D U+1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS\r
+0x01E U+1E85 # LATIN SMALL LETTER W WITH DIAERESIS\r
+0x01F U+1E61 # LATIN SMALL LETTER S WITH DOT ABOVE\r
+0x020 U+00C0 # LATIN CAPITAL LETTER A WITH GRAVE\r
+0x021 U+00C1 # LATIN CAPITAL LETTER A WITH ACUTE\r
+0x022 U+00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX\r
+0x023 U+00C3 # LATIN CAPITAL LETTER A WITH TILDE\r
+0x024 U+00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS\r
+0x025 U+00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE\r
+0x026 U+00C6 # LATIN CAPITAL LETTER AE\r
+0x027 U+00C7 # LATIN CAPITAL LETTER C WITH CEDILLA\r
+0x028 U+00C8 # LATIN CAPITAL LETTER E WITH GRAVE\r
+0x029 U+00C9 # LATIN CAPITAL LETTER E WITH ACUTE\r
+0x02A U+00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX\r
+0x02B U+00CB # LATIN CAPITAL LETTER E WITH DIAERESIS\r
+0x02C U+00CC # LATIN CAPITAL LETTER I WITH GRAVE\r
+0x02D U+00CD # LATIN CAPITAL LETTER I WITH ACUTE\r
+0x02E U+00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX\r
+0x02F U+00CF # LATIN CAPITAL LETTER I WITH DIAERESIS\r
+0x030 U+0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX\r
+0x031 U+00D1 # LATIN CAPITAL LETTER N WITH TILDE\r
+0x032 U+00D2 # LATIN CAPITAL LETTER O WITH GRAVE\r
+0x033 U+00D3 # LATIN CAPITAL LETTER O WITH ACUTE\r
+0x034 U+00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX\r
+0x035 U+00D5 # LATIN CAPITAL LETTER O WITH TILDE\r
+0x036 U+00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS\r
+0x037 U+1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE\r
+0x038 U+00D8 # LATIN CAPITAL LETTER O WITH STROKE\r
+0x039 U+00D9 # LATIN CAPITAL LETTER U WITH GRAVE\r
+0x03A U+00DA # LATIN CAPITAL LETTER U WITH ACUTE\r
+0x03B U+00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX\r
+0x03C U+00DC # LATIN CAPITAL LETTER U WITH DIAERESIS\r
+0x03D U+00DD # LATIN CAPITAL LETTER Y WITH ACUTE\r
+0x03E U+0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX\r
+0x03F U+00DF # LATIN SMALL LETTER SHARP S\r
+0x040 U+00E0 # LATIN SMALL LETTER A WITH GRAVE\r
+0x041 U+00E1 # LATIN SMALL LETTER A WITH ACUTE\r
+0x042 U+00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX\r
+0x043 U+00E3 # LATIN SMALL LETTER A WITH TILDE\r
+0x044 U+00E4 # LATIN SMALL LETTER A WITH DIAERESIS\r
+0x045 U+00E5 # LATIN SMALL LETTER A WITH RING ABOVE\r
+0x046 U+00E6 # LATIN SMALL LETTER AE\r
+0x047 U+00E7 # LATIN SMALL LETTER C WITH CEDILLA\r
+0x048 U+00E8 # LATIN SMALL LETTER E WITH GRAVE\r
+0x049 U+00E9 # LATIN SMALL LETTER E WITH ACUTE\r
+0x04A U+00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX\r
+0x04B U+00EB # LATIN SMALL LETTER E WITH DIAERESIS\r
+0x04C U+00EC # LATIN SMALL LETTER I WITH GRAVE\r
+0x04D U+00ED # LATIN SMALL LETTER I WITH ACUTE\r
+0x04E U+00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX\r
+0x04F U+00EF # LATIN SMALL LETTER I WITH DIAERESIS\r
+0x050 U+0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX\r
+0x051 U+00F1 # LATIN SMALL LETTER N WITH TILDE\r
+0x052 U+00F2 # LATIN SMALL LETTER O WITH GRAVE\r
+0x053 U+00F3 # LATIN SMALL LETTER O WITH ACUTE\r
+0x054 U+00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX\r
+0x055 U+00F5 # LATIN SMALL LETTER O WITH TILDE\r
+0x056 U+00F6 # LATIN SMALL LETTER O WITH DIAERESIS\r
+0x057 U+1E6B # LATIN SMALL LETTER T WITH DOT ABOVE\r
+0x058 U+00F8 # LATIN SMALL LETTER O WITH STROKE\r
+0x059 U+00F9 # LATIN SMALL LETTER U WITH GRAVE\r
+0x05A U+00FA # LATIN SMALL LETTER U WITH ACUTE\r
+0x05B U+00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX\r
+0x05C U+00FC # LATIN SMALL LETTER U WITH DIAERESIS\r
+0x05D U+00FD # LATIN SMALL LETTER Y WITH ACUTE\r
+0x05E U+0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX\r
+0x05F U+00FF # LATIN SMALL LETTER Y WITH DIAERESIS\r
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO/IEC 8859-15\r
+0x000 U+00A0 # NO-BREAK SPACE\r
+0x001 U+00A1 # INVERTED EXCLAMATION MARK\r
+0x002 U+00A2 # CENT SIGN\r
+0x003 U+00A3 # POUND SIGN\r
+0x004 U+20AC # EURO SIGN\r
+0x005 U+00A5 # YEN SIGN\r
+0x006 U+0160 # LATIN CAPITAL LETTER S WITH CARON\r
+0x007 U+00A7 # SECTION SIGN\r
+0x008 U+0161 # LATIN SMALL LETTER S WITH CARON\r
+0x009 U+00A9 # COPYRIGHT SIGN\r
+0x00A U+00AA # FEMININE ORDINAL INDICATOR\r
+0x00B U+00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x00C U+00AC # NOT SIGN\r
+0x00D U+00AD # SOFT HYPHEN\r
+0x00E U+00AE # REGISTERED SIGN\r
+0x00F U+00AF # MACRON\r
+0x010 U+00B0 # DEGREE SIGN\r
+0x011 U+00B1 # PLUS-MINUS SIGN\r
+0x012 U+00B2 # SUPERSCRIPT TWO\r
+0x013 U+00B3 # SUPERSCRIPT THREE\r
+0x014 U+017D # LATIN CAPITAL LETTER Z WITH CARON\r
+0x015 U+00B5 # MICRO SIGN\r
+0x016 U+00B6 # PILCROW SIGN\r
+0x017 U+00B7 # MIDDLE DOT\r
+0x018 U+017E # LATIN SMALL LETTER Z WITH CARON\r
+0x019 U+00B9 # SUPERSCRIPT ONE\r
+0x01A U+00BA # MASCULINE ORDINAL INDICATOR\r
+0x01B U+00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x01C U+0152 # LATIN CAPITAL LIGATURE OE\r
+0x01D U+0153 # LATIN SMALL LIGATURE OE\r
+0x01E U+0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS\r
+0x01F U+00BF # INVERTED QUESTION MARK\r
+0x020 U+00C0 # LATIN CAPITAL LETTER A WITH GRAVE\r
+0x021 U+00C1 # LATIN CAPITAL LETTER A WITH ACUTE\r
+0x022 U+00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX\r
+0x023 U+00C3 # LATIN CAPITAL LETTER A WITH TILDE\r
+0x024 U+00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS\r
+0x025 U+00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE\r
+0x026 U+00C6 # LATIN CAPITAL LETTER AE\r
+0x027 U+00C7 # LATIN CAPITAL LETTER C WITH CEDILLA\r
+0x028 U+00C8 # LATIN CAPITAL LETTER E WITH GRAVE\r
+0x029 U+00C9 # LATIN CAPITAL LETTER E WITH ACUTE\r
+0x02A U+00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX\r
+0x02B U+00CB # LATIN CAPITAL LETTER E WITH DIAERESIS\r
+0x02C U+00CC # LATIN CAPITAL LETTER I WITH GRAVE\r
+0x02D U+00CD # LATIN CAPITAL LETTER I WITH ACUTE\r
+0x02E U+00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX\r
+0x02F U+00CF # LATIN CAPITAL LETTER I WITH DIAERESIS\r
+0x030 U+00D0 # LATIN CAPITAL LETTER ETH\r
+0x031 U+00D1 # LATIN CAPITAL LETTER N WITH TILDE\r
+0x032 U+00D2 # LATIN CAPITAL LETTER O WITH GRAVE\r
+0x033 U+00D3 # LATIN CAPITAL LETTER O WITH ACUTE\r
+0x034 U+00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX\r
+0x035 U+00D5 # LATIN CAPITAL LETTER O WITH TILDE\r
+0x036 U+00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS\r
+0x037 U+00D7 # MULTIPLICATION SIGN\r
+0x038 U+00D8 # LATIN CAPITAL LETTER O WITH STROKE\r
+0x039 U+00D9 # LATIN CAPITAL LETTER U WITH GRAVE\r
+0x03A U+00DA # LATIN CAPITAL LETTER U WITH ACUTE\r
+0x03B U+00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX\r
+0x03C U+00DC # LATIN CAPITAL LETTER U WITH DIAERESIS\r
+0x03D U+00DD # LATIN CAPITAL LETTER Y WITH ACUTE\r
+0x03E U+00DE # LATIN CAPITAL LETTER THORN\r
+0x03F U+00DF # LATIN SMALL LETTER SHARP S\r
+0x040 U+00E0 # LATIN SMALL LETTER A WITH GRAVE\r
+0x041 U+00E1 # LATIN SMALL LETTER A WITH ACUTE\r
+0x042 U+00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX\r
+0x043 U+00E3 # LATIN SMALL LETTER A WITH TILDE\r
+0x044 U+00E4 # LATIN SMALL LETTER A WITH DIAERESIS\r
+0x045 U+00E5 # LATIN SMALL LETTER A WITH RING ABOVE\r
+0x046 U+00E6 # LATIN SMALL LETTER AE\r
+0x047 U+00E7 # LATIN SMALL LETTER C WITH CEDILLA\r
+0x048 U+00E8 # LATIN SMALL LETTER E WITH GRAVE\r
+0x049 U+00E9 # LATIN SMALL LETTER E WITH ACUTE\r
+0x04A U+00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX\r
+0x04B U+00EB # LATIN SMALL LETTER E WITH DIAERESIS\r
+0x04C U+00EC # LATIN SMALL LETTER I WITH GRAVE\r
+0x04D U+00ED # LATIN SMALL LETTER I WITH ACUTE\r
+0x04E U+00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX\r
+0x04F U+00EF # LATIN SMALL LETTER I WITH DIAERESIS\r
+0x050 U+00F0 # LATIN SMALL LETTER ETH\r
+0x051 U+00F1 # LATIN SMALL LETTER N WITH TILDE\r
+0x052 U+00F2 # LATIN SMALL LETTER O WITH GRAVE\r
+0x053 U+00F3 # LATIN SMALL LETTER O WITH ACUTE\r
+0x054 U+00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX\r
+0x055 U+00F5 # LATIN SMALL LETTER O WITH TILDE\r
+0x056 U+00F6 # LATIN SMALL LETTER O WITH DIAERESIS\r
+0x057 U+00F7 # DIVISION SIGN\r
+0x058 U+00F8 # LATIN SMALL LETTER O WITH STROKE\r
+0x059 U+00F9 # LATIN SMALL LETTER U WITH GRAVE\r
+0x05A U+00FA # LATIN SMALL LETTER U WITH ACUTE\r
+0x05B U+00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX\r
+0x05C U+00FC # LATIN SMALL LETTER U WITH DIAERESIS\r
+0x05D U+00FD # LATIN SMALL LETTER Y WITH ACUTE\r
+0x05E U+00FE # LATIN SMALL LETTER THORN\r
+0x05F U+00FF # LATIN SMALL LETTER Y WITH DIAERESIS\r
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO 8859-2 (Latin-2)
+0x000 U+00A0 # NO-BREAK SPACE
+0x001 U+0104 # LATIN CAPITAL LETTER A WITH OGONEK
+0x002 U+02D8 # BREVE
+0x003 U+0141 # LATIN CAPITAL LETTER L WITH STROKE
+0x004 U+00A4 # CURRENCY SIGN
+0x005 U+013D # LATIN CAPITAL LETTER L WITH CARON
+0x006 U+015A # LATIN CAPITAL LETTER S WITH ACUTE
+0x007 U+00A7 # SECTION SIGN
+0x008 U+00A8 # DIAERESIS
+0x009 U+0160 # LATIN CAPITAL LETTER S WITH CARON
+0x00A U+015E # LATIN CAPITAL LETTER S WITH CEDILLA
+0x00B U+0164 # LATIN CAPITAL LETTER T WITH CARON
+0x00C U+0179 # LATIN CAPITAL LETTER Z WITH ACUTE
+0x00D U+00AD # SOFT HYPHEN
+0x00E U+017D # LATIN CAPITAL LETTER Z WITH CARON
+0x00F U+017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+0x010 U+00B0 # DEGREE SIGN
+0x011 U+0105 # LATIN SMALL LETTER A WITH OGONEK
+0x012 U+02DB # OGONEK
+0x013 U+0142 # LATIN SMALL LETTER L WITH STROKE
+0x014 U+00B4 # ACUTE ACCENT
+0x015 U+013E # LATIN SMALL LETTER L WITH CARON
+0x016 U+015B # LATIN SMALL LETTER S WITH ACUTE
+0x017 U+02C7 # CARON
+0x018 U+00B8 # CEDILLA
+0x019 U+0161 # LATIN SMALL LETTER S WITH CARON
+0x01A U+015F # LATIN SMALL LETTER S WITH CEDILLA
+0x01B U+0165 # LATIN SMALL LETTER T WITH CARON
+0x01C U+017A # LATIN SMALL LETTER Z WITH ACUTE
+0x01D U+02DD # DOUBLE ACUTE ACCENT
+0x01E U+017E # LATIN SMALL LETTER Z WITH CARON
+0x01F U+017C # LATIN SMALL LETTER Z WITH DOT ABOVE
+0x020 U+0154 # LATIN CAPITAL LETTER R WITH ACUTE
+0x021 U+00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+0x022 U+00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0x023 U+0102 # LATIN CAPITAL LETTER A WITH BREVE
+0x024 U+00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x025 U+0139 # LATIN CAPITAL LETTER L WITH ACUTE
+0x026 U+0106 # LATIN CAPITAL LETTER C WITH ACUTE
+0x027 U+00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
+0x028 U+010C # LATIN CAPITAL LETTER C WITH CARON
+0x029 U+00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+0x02A U+0118 # LATIN CAPITAL LETTER E WITH OGONEK
+0x02B U+00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
+0x02C U+011A # LATIN CAPITAL LETTER E WITH CARON
+0x02D U+00CD # LATIN CAPITAL LETTER I WITH ACUTE
+0x02E U+00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0x02F U+010E # LATIN CAPITAL LETTER D WITH CARON
+0x030 U+0110 # LATIN CAPITAL LETTER D WITH STROKE
+0x031 U+0143 # LATIN CAPITAL LETTER N WITH ACUTE
+0x032 U+0147 # LATIN CAPITAL LETTER N WITH CARON
+0x033 U+00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+0x034 U+00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0x035 U+0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0x036 U+00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x037 U+00D7 # MULTIPLICATION SIGN
+0x038 U+0158 # LATIN CAPITAL LETTER R WITH CARON
+0x039 U+016E # LATIN CAPITAL LETTER U WITH RING ABOVE
+0x03A U+00DA # LATIN CAPITAL LETTER U WITH ACUTE
+0x03B U+0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0x03C U+00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x03D U+00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+0x03E U+0162 # LATIN CAPITAL LETTER T WITH CEDILLA
+0x03F U+00DF # LATIN SMALL LETTER SHARP S
+0x040 U+0155 # LATIN SMALL LETTER R WITH ACUTE
+0x041 U+00E1 # LATIN SMALL LETTER A WITH ACUTE
+0x042 U+00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x043 U+0103 # LATIN SMALL LETTER A WITH BREVE
+0x044 U+00E4 # LATIN SMALL LETTER A WITH DIAERESIS
+0x045 U+013A # LATIN SMALL LETTER L WITH ACUTE
+0x046 U+0107 # LATIN SMALL LETTER C WITH ACUTE
+0x047 U+00E7 # LATIN SMALL LETTER C WITH CEDILLA
+0x048 U+010D # LATIN SMALL LETTER C WITH CARON
+0x049 U+00E9 # LATIN SMALL LETTER E WITH ACUTE
+0x04A U+0119 # LATIN SMALL LETTER E WITH OGONEK
+0x04B U+00EB # LATIN SMALL LETTER E WITH DIAERESIS
+0x04C U+011B # LATIN SMALL LETTER E WITH CARON
+0x04D U+00ED # LATIN SMALL LETTER I WITH ACUTE
+0x04E U+00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x04F U+010F # LATIN SMALL LETTER D WITH CARON
+0x050 U+0111 # LATIN SMALL LETTER D WITH STROKE
+0x051 U+0144 # LATIN SMALL LETTER N WITH ACUTE
+0x052 U+0148 # LATIN SMALL LETTER N WITH CARON
+0x053 U+00F3 # LATIN SMALL LETTER O WITH ACUTE
+0x054 U+00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x055 U+0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0x056 U+00F6 # LATIN SMALL LETTER O WITH DIAERESIS
+0x057 U+00F7 # DIVISION SIGN
+0x058 U+0159 # LATIN SMALL LETTER R WITH CARON
+0x059 U+016F # LATIN SMALL LETTER U WITH RING ABOVE
+0x05A U+00FA # LATIN SMALL LETTER U WITH ACUTE
+0x05B U+0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0x05C U+00FC # LATIN SMALL LETTER U WITH DIAERESIS
+0x05D U+00FD # LATIN SMALL LETTER Y WITH ACUTE
+0x05E U+0163 # LATIN SMALL LETTER T WITH CEDILLA
+0x05F U+02D9 # DOT ABOVE
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO 8859-3 (Latin-3)\r
+0x000 U+00A0 # NO-BREAK SPACE\r
+0x001 U+0126 # LATIN CAPITAL LETTER H WITH STROKE\r
+0x002 U+02D8 # BREVE\r
+0x003 U+00A3 # POUND SIGN\r
+0x004 U+00A4 # CURRENCY SIGN\r
+0x006 U+0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX\r
+0x007 U+00A7 # SECTION SIGN\r
+0x008 U+00A8 # DIAERESIS\r
+0x009 U+0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE\r
+0x00A U+015E # LATIN CAPITAL LETTER S WITH CEDILLA\r
+0x00B U+011E # LATIN CAPITAL LETTER G WITH BREVE\r
+0x00C U+0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX\r
+0x00D U+00AD # SOFT HYPHEN\r
+0x00F U+017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE\r
+0x010 U+00B0 # DEGREE SIGN\r
+0x011 U+0127 # LATIN SMALL LETTER H WITH STROKE\r
+0x012 U+00B2 # SUPERSCRIPT TWO\r
+0x013 U+00B3 # SUPERSCRIPT THREE\r
+0x014 U+00B4 # ACUTE ACCENT\r
+0x015 U+00B5 # MICRO SIGN\r
+0x016 U+0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX\r
+0x017 U+00B7 # MIDDLE DOT\r
+0x018 U+00B8 # CEDILLA\r
+0x019 U+0131 # LATIN SMALL LETTER DOTLESS I\r
+0x01A U+015F # LATIN SMALL LETTER S WITH CEDILLA\r
+0x01B U+011F # LATIN SMALL LETTER G WITH BREVE\r
+0x01C U+0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX\r
+0x01D U+00BD # VULGAR FRACTION ONE HALF\r
+0x01F U+017C # LATIN SMALL LETTER Z WITH DOT ABOVE\r
+0x020 U+00C0 # LATIN CAPITAL LETTER A WITH GRAVE\r
+0x021 U+00C1 # LATIN CAPITAL LETTER A WITH ACUTE\r
+0x022 U+00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX\r
+0x024 U+00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS\r
+0x025 U+010A # LATIN CAPITAL LETTER C WITH DOT ABOVE\r
+0x026 U+0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX\r
+0x027 U+00C7 # LATIN CAPITAL LETTER C WITH CEDILLA\r
+0x028 U+00C8 # LATIN CAPITAL LETTER E WITH GRAVE\r
+0x029 U+00C9 # LATIN CAPITAL LETTER E WITH ACUTE\r
+0x02A U+00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX\r
+0x02B U+00CB # LATIN CAPITAL LETTER E WITH DIAERESIS\r
+0x02C U+00CC # LATIN CAPITAL LETTER I WITH GRAVE\r
+0x02D U+00CD # LATIN CAPITAL LETTER I WITH ACUTE\r
+0x02E U+00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX\r
+0x02F U+00CF # LATIN CAPITAL LETTER I WITH DIAERESIS\r
+0x031 U+00D1 # LATIN CAPITAL LETTER N WITH TILDE\r
+0x032 U+00D2 # LATIN CAPITAL LETTER O WITH GRAVE\r
+0x033 U+00D3 # LATIN CAPITAL LETTER O WITH ACUTE\r
+0x034 U+00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX\r
+0x035 U+0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE\r
+0x036 U+00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS\r
+0x037 U+00D7 # MULTIPLICATION SIGN\r
+0x038 U+011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX\r
+0x039 U+00D9 # LATIN CAPITAL LETTER U WITH GRAVE\r
+0x03A U+00DA # LATIN CAPITAL LETTER U WITH ACUTE\r
+0x03B U+00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX\r
+0x03C U+00DC # LATIN CAPITAL LETTER U WITH DIAERESIS\r
+0x03D U+016C # LATIN CAPITAL LETTER U WITH BREVE\r
+0x03E U+015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX\r
+0x03F U+00DF # LATIN SMALL LETTER SHARP S\r
+0x040 U+00E0 # LATIN SMALL LETTER A WITH GRAVE\r
+0x041 U+00E1 # LATIN SMALL LETTER A WITH ACUTE\r
+0x042 U+00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX\r
+0x044 U+00E4 # LATIN SMALL LETTER A WITH DIAERESIS\r
+0x045 U+010B # LATIN SMALL LETTER C WITH DOT ABOVE\r
+0x046 U+0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX\r
+0x047 U+00E7 # LATIN SMALL LETTER C WITH CEDILLA\r
+0x048 U+00E8 # LATIN SMALL LETTER E WITH GRAVE\r
+0x049 U+00E9 # LATIN SMALL LETTER E WITH ACUTE\r
+0x04A U+00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX\r
+0x04B U+00EB # LATIN SMALL LETTER E WITH DIAERESIS\r
+0x04C U+00EC # LATIN SMALL LETTER I WITH GRAVE\r
+0x04D U+00ED # LATIN SMALL LETTER I WITH ACUTE\r
+0x04E U+00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX\r
+0x04F U+00EF # LATIN SMALL LETTER I WITH DIAERESIS\r
+0x051 U+00F1 # LATIN SMALL LETTER N WITH TILDE\r
+0x052 U+00F2 # LATIN SMALL LETTER O WITH GRAVE\r
+0x053 U+00F3 # LATIN SMALL LETTER O WITH ACUTE\r
+0x054 U+00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX\r
+0x055 U+0121 # LATIN SMALL LETTER G WITH DOT ABOVE\r
+0x056 U+00F6 # LATIN SMALL LETTER O WITH DIAERESIS\r
+0x057 U+00F7 # DIVISION SIGN\r
+0x058 U+011D # LATIN SMALL LETTER G WITH CIRCUMFLEX\r
+0x059 U+00F9 # LATIN SMALL LETTER U WITH GRAVE\r
+0x05A U+00FA # LATIN SMALL LETTER U WITH ACUTE\r
+0x05B U+00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX\r
+0x05C U+00FC # LATIN SMALL LETTER U WITH DIAERESIS\r
+0x05D U+016D # LATIN SMALL LETTER U WITH BREVE\r
+0x05E U+015D # LATIN SMALL LETTER S WITH CIRCUMFLEX\r
+0x05F U+02D9 # DOT ABOVE\r
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO 8859-4 (Latin-4)\r
+0x000 U+00A0 # NO-BREAK SPACE\r
+0x001 U+0104 # LATIN CAPITAL LETTER A WITH OGONEK\r
+0x002 U+0138 # LATIN SMALL LETTER KRA\r
+0x003 U+0156 # LATIN CAPITAL LETTER R WITH CEDILLA\r
+0x004 U+00A4 # CURRENCY SIGN\r
+0x005 U+0128 # LATIN CAPITAL LETTER I WITH TILDE\r
+0x006 U+013B # LATIN CAPITAL LETTER L WITH CEDILLA\r
+0x007 U+00A7 # SECTION SIGN\r
+0x008 U+00A8 # DIAERESIS\r
+0x009 U+0160 # LATIN CAPITAL LETTER S WITH CARON\r
+0x00A U+0112 # LATIN CAPITAL LETTER E WITH MACRON\r
+0x00B U+0122 # LATIN CAPITAL LETTER G WITH CEDILLA\r
+0x00C U+0166 # LATIN CAPITAL LETTER T WITH STROKE\r
+0x00D U+00AD # SOFT HYPHEN\r
+0x00E U+017D # LATIN CAPITAL LETTER Z WITH CARON\r
+0x00F U+00AF # MACRON\r
+0x010 U+00B0 # DEGREE SIGN\r
+0x011 U+0105 # LATIN SMALL LETTER A WITH OGONEK\r
+0x012 U+02DB # OGONEK\r
+0x013 U+0157 # LATIN SMALL LETTER R WITH CEDILLA\r
+0x014 U+00B4 # ACUTE ACCENT\r
+0x015 U+0129 # LATIN SMALL LETTER I WITH TILDE\r
+0x016 U+013C # LATIN SMALL LETTER L WITH CEDILLA\r
+0x017 U+02C7 # CARON\r
+0x018 U+00B8 # CEDILLA\r
+0x019 U+0161 # LATIN SMALL LETTER S WITH CARON\r
+0x01A U+0113 # LATIN SMALL LETTER E WITH MACRON\r
+0x01B U+0123 # LATIN SMALL LETTER G WITH CEDILLA\r
+0x01C U+0167 # LATIN SMALL LETTER T WITH STROKE\r
+0x01D U+014A # LATIN CAPITAL LETTER ENG\r
+0x01E U+017E # LATIN SMALL LETTER Z WITH CARON\r
+0x01F U+014B # LATIN SMALL LETTER ENG\r
+0x020 U+0100 # LATIN CAPITAL LETTER A WITH MACRON\r
+0x021 U+00C1 # LATIN CAPITAL LETTER A WITH ACUTE\r
+0x022 U+00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX\r
+0x023 U+00C3 # LATIN CAPITAL LETTER A WITH TILDE\r
+0x024 U+00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS\r
+0x025 U+00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE\r
+0x026 U+00C6 # LATIN CAPITAL LETTER AE\r
+0x027 U+012E # LATIN CAPITAL LETTER I WITH OGONEK\r
+0x028 U+010C # LATIN CAPITAL LETTER C WITH CARON\r
+0x029 U+00C9 # LATIN CAPITAL LETTER E WITH ACUTE\r
+0x02A U+0118 # LATIN CAPITAL LETTER E WITH OGONEK\r
+0x02B U+00CB # LATIN CAPITAL LETTER E WITH DIAERESIS\r
+0x02C U+0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE\r
+0x02D U+00CD # LATIN CAPITAL LETTER I WITH ACUTE\r
+0x02E U+00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX\r
+0x02F U+012A # LATIN CAPITAL LETTER I WITH MACRON\r
+0x030 U+0110 # LATIN CAPITAL LETTER D WITH STROKE\r
+0x031 U+0145 # LATIN CAPITAL LETTER N WITH CEDILLA\r
+0x032 U+014C # LATIN CAPITAL LETTER O WITH MACRON\r
+0x033 U+0136 # LATIN CAPITAL LETTER K WITH CEDILLA\r
+0x034 U+00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX\r
+0x035 U+00D5 # LATIN CAPITAL LETTER O WITH TILDE\r
+0x036 U+00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS\r
+0x037 U+00D7 # MULTIPLICATION SIGN\r
+0x038 U+00D8 # LATIN CAPITAL LETTER O WITH STROKE\r
+0x039 U+0172 # LATIN CAPITAL LETTER U WITH OGONEK\r
+0x03A U+00DA # LATIN CAPITAL LETTER U WITH ACUTE\r
+0x03B U+00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX\r
+0x03C U+00DC # LATIN CAPITAL LETTER U WITH DIAERESIS\r
+0x03D U+0168 # LATIN CAPITAL LETTER U WITH TILDE\r
+0x03E U+016A # LATIN CAPITAL LETTER U WITH MACRON\r
+0x03F U+00DF # LATIN SMALL LETTER SHARP S\r
+0x040 U+0101 # LATIN SMALL LETTER A WITH MACRON\r
+0x041 U+00E1 # LATIN SMALL LETTER A WITH ACUTE\r
+0x042 U+00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX\r
+0x043 U+00E3 # LATIN SMALL LETTER A WITH TILDE\r
+0x044 U+00E4 # LATIN SMALL LETTER A WITH DIAERESIS\r
+0x045 U+00E5 # LATIN SMALL LETTER A WITH RING ABOVE\r
+0x046 U+00E6 # LATIN SMALL LETTER AE\r
+0x047 U+012F # LATIN SMALL LETTER I WITH OGONEK\r
+0x048 U+010D # LATIN SMALL LETTER C WITH CARON\r
+0x049 U+00E9 # LATIN SMALL LETTER E WITH ACUTE\r
+0x04A U+0119 # LATIN SMALL LETTER E WITH OGONEK\r
+0x04B U+00EB # LATIN SMALL LETTER E WITH DIAERESIS\r
+0x04C U+0117 # LATIN SMALL LETTER E WITH DOT ABOVE\r
+0x04D U+00ED # LATIN SMALL LETTER I WITH ACUTE\r
+0x04E U+00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX\r
+0x04F U+012B # LATIN SMALL LETTER I WITH MACRON\r
+0x050 U+0111 # LATIN SMALL LETTER D WITH STROKE\r
+0x051 U+0146 # LATIN SMALL LETTER N WITH CEDILLA\r
+0x052 U+014D # LATIN SMALL LETTER O WITH MACRON\r
+0x053 U+0137 # LATIN SMALL LETTER K WITH CEDILLA\r
+0x054 U+00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX\r
+0x055 U+00F5 # LATIN SMALL LETTER O WITH TILDE\r
+0x056 U+00F6 # LATIN SMALL LETTER O WITH DIAERESIS\r
+0x057 U+00F7 # DIVISION SIGN\r
+0x058 U+00F8 # LATIN SMALL LETTER O WITH STROKE\r
+0x059 U+0173 # LATIN SMALL LETTER U WITH OGONEK\r
+0x05A U+00FA # LATIN SMALL LETTER U WITH ACUTE\r
+0x05B U+00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX\r
+0x05C U+00FC # LATIN SMALL LETTER U WITH DIAERESIS\r
+0x05D U+0169 # LATIN SMALL LETTER U WITH TILDE\r
+0x05E U+016B # LATIN SMALL LETTER U WITH MACRON\r
+0x05F U+02D9 # DOT ABOVE\r
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO 8859-5 (Cyrillic)\r
+0x000 U+00A0 # NO-BREAK SPACE\r
+0x001 U+0401 # CYRILLIC CAPITAL LETTER IO\r
+0x002 U+0402 # CYRILLIC CAPITAL LETTER DJE\r
+0x003 U+0403 # CYRILLIC CAPITAL LETTER GJE\r
+0x004 U+0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE\r
+0x005 U+0405 # CYRILLIC CAPITAL LETTER DZE\r
+0x006 U+0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I\r
+0x007 U+0407 # CYRILLIC CAPITAL LETTER YI\r
+0x008 U+0408 # CYRILLIC CAPITAL LETTER JE\r
+0x009 U+0409 # CYRILLIC CAPITAL LETTER LJE\r
+0x00A U+040A # CYRILLIC CAPITAL LETTER NJE\r
+0x00B U+040B # CYRILLIC CAPITAL LETTER TSHE\r
+0x00C U+040C # CYRILLIC CAPITAL LETTER KJE\r
+0x00D U+00AD # SOFT HYPHEN\r
+0x00E U+040E # CYRILLIC CAPITAL LETTER SHORT U\r
+0x00F U+040F # CYRILLIC CAPITAL LETTER DZHE\r
+0x010 U+0410 # CYRILLIC CAPITAL LETTER A\r
+0x011 U+0411 # CYRILLIC CAPITAL LETTER BE\r
+0x012 U+0412 # CYRILLIC CAPITAL LETTER VE\r
+0x013 U+0413 # CYRILLIC CAPITAL LETTER GHE\r
+0x014 U+0414 # CYRILLIC CAPITAL LETTER DE\r
+0x015 U+0415 # CYRILLIC CAPITAL LETTER IE\r
+0x016 U+0416 # CYRILLIC CAPITAL LETTER ZHE\r
+0x017 U+0417 # CYRILLIC CAPITAL LETTER ZE\r
+0x018 U+0418 # CYRILLIC CAPITAL LETTER I\r
+0x019 U+0419 # CYRILLIC CAPITAL LETTER SHORT I\r
+0x01A U+041A # CYRILLIC CAPITAL LETTER KA\r
+0x01B U+041B # CYRILLIC CAPITAL LETTER EL\r
+0x01C U+041C # CYRILLIC CAPITAL LETTER EM\r
+0x01D U+041D # CYRILLIC CAPITAL LETTER EN\r
+0x01E U+041E # CYRILLIC CAPITAL LETTER O\r
+0x01F U+041F # CYRILLIC CAPITAL LETTER PE\r
+0x020 U+0420 # CYRILLIC CAPITAL LETTER ER\r
+0x021 U+0421 # CYRILLIC CAPITAL LETTER ES\r
+0x022 U+0422 # CYRILLIC CAPITAL LETTER TE\r
+0x023 U+0423 # CYRILLIC CAPITAL LETTER U\r
+0x024 U+0424 # CYRILLIC CAPITAL LETTER EF\r
+0x025 U+0425 # CYRILLIC CAPITAL LETTER HA\r
+0x026 U+0426 # CYRILLIC CAPITAL LETTER TSE\r
+0x027 U+0427 # CYRILLIC CAPITAL LETTER CHE\r
+0x028 U+0428 # CYRILLIC CAPITAL LETTER SHA\r
+0x029 U+0429 # CYRILLIC CAPITAL LETTER SHCHA\r
+0x02A U+042A # CYRILLIC CAPITAL LETTER HARD SIGN\r
+0x02B U+042B # CYRILLIC CAPITAL LETTER YERU\r
+0x02C U+042C # CYRILLIC CAPITAL LETTER SOFT SIGN\r
+0x02D U+042D # CYRILLIC CAPITAL LETTER E\r
+0x02E U+042E # CYRILLIC CAPITAL LETTER YU\r
+0x02F U+042F # CYRILLIC CAPITAL LETTER YA\r
+0x030 U+0430 # CYRILLIC SMALL LETTER A\r
+0x031 U+0431 # CYRILLIC SMALL LETTER BE\r
+0x032 U+0432 # CYRILLIC SMALL LETTER VE\r
+0x033 U+0433 # CYRILLIC SMALL LETTER GHE\r
+0x034 U+0434 # CYRILLIC SMALL LETTER DE\r
+0x035 U+0435 # CYRILLIC SMALL LETTER IE\r
+0x036 U+0436 # CYRILLIC SMALL LETTER ZHE\r
+0x037 U+0437 # CYRILLIC SMALL LETTER ZE\r
+0x038 U+0438 # CYRILLIC SMALL LETTER I\r
+0x039 U+0439 # CYRILLIC SMALL LETTER SHORT I\r
+0x03A U+043A # CYRILLIC SMALL LETTER KA\r
+0x03B U+043B # CYRILLIC SMALL LETTER EL\r
+0x03C U+043C # CYRILLIC SMALL LETTER EM\r
+0x03D U+043D # CYRILLIC SMALL LETTER EN\r
+0x03E U+043E # CYRILLIC SMALL LETTER O\r
+0x03F U+043F # CYRILLIC SMALL LETTER PE\r
+0x040 U+0440 # CYRILLIC SMALL LETTER ER\r
+0x041 U+0441 # CYRILLIC SMALL LETTER ES\r
+0x042 U+0442 # CYRILLIC SMALL LETTER TE\r
+0x043 U+0443 # CYRILLIC SMALL LETTER U\r
+0x044 U+0444 # CYRILLIC SMALL LETTER EF\r
+0x045 U+0445 # CYRILLIC SMALL LETTER HA\r
+0x046 U+0446 # CYRILLIC SMALL LETTER TSE\r
+0x047 U+0447 # CYRILLIC SMALL LETTER CHE\r
+0x048 U+0448 # CYRILLIC SMALL LETTER SHA\r
+0x049 U+0449 # CYRILLIC SMALL LETTER SHCHA\r
+0x04A U+044A # CYRILLIC SMALL LETTER HARD SIGN\r
+0x04B U+044B # CYRILLIC SMALL LETTER YERU\r
+0x04C U+044C # CYRILLIC SMALL LETTER SOFT SIGN\r
+0x04D U+044D # CYRILLIC SMALL LETTER E\r
+0x04E U+044E # CYRILLIC SMALL LETTER YU\r
+0x04F U+044F # CYRILLIC SMALL LETTER YA\r
+0x050 U+2116 # NUMERO SIGN\r
+0x051 U+0451 # CYRILLIC SMALL LETTER IO\r
+0x052 U+0452 # CYRILLIC SMALL LETTER DJE\r
+0x053 U+0453 # CYRILLIC SMALL LETTER GJE\r
+0x054 U+0454 # CYRILLIC SMALL LETTER UKRAINIAN IE\r
+0x055 U+0455 # CYRILLIC SMALL LETTER DZE\r
+0x056 U+0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I\r
+0x057 U+0457 # CYRILLIC SMALL LETTER YI\r
+0x058 U+0458 # CYRILLIC SMALL LETTER JE\r
+0x059 U+0459 # CYRILLIC SMALL LETTER LJE\r
+0x05A U+045A # CYRILLIC SMALL LETTER NJE\r
+0x05B U+045B # CYRILLIC SMALL LETTER TSHE\r
+0x05C U+045C # CYRILLIC SMALL LETTER KJE\r
+0x05D U+00A7 # SECTION SIGN\r
+0x05E U+045E # CYRILLIC SMALL LETTER SHORT U\r
+0x05F U+045F # CYRILLIC SMALL LETTER DZHE\r
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO 8859-6 (Arabic)\r
+0x000 U+00A0 # NO-BREAK SPACE\r
+0x004 U+00A4 # CURRENCY SIGN\r
+0x00C U+060C # ARABIC COMMA\r
+0x00D U+00AD # SOFT HYPHEN\r
+0x01B U+061B # ARABIC SEMICOLON\r
+0x01F U+061F # ARABIC QUESTION MARK\r
+0x021 U+0621 # ARABIC LETTER HAMZA\r
+0x022 U+0622 # ARABIC LETTER ALEF WITH MADDA ABOVE\r
+0x023 U+0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE\r
+0x024 U+0624 # ARABIC LETTER WAW WITH HAMZA ABOVE\r
+0x025 U+0625 # ARABIC LETTER ALEF WITH HAMZA BELOW\r
+0x026 U+0626 # ARABIC LETTER YEH WITH HAMZA ABOVE\r
+0x027 U+0627 # ARABIC LETTER ALEF\r
+0x028 U+0628 # ARABIC LETTER BEH\r
+0x029 U+0629 # ARABIC LETTER TEH MARBUTA\r
+0x02A U+062A # ARABIC LETTER TEH\r
+0x02B U+062B # ARABIC LETTER THEH\r
+0x02C U+062C # ARABIC LETTER JEEM\r
+0x02D U+062D # ARABIC LETTER HAH\r
+0x02E U+062E # ARABIC LETTER KHAH\r
+0x02F U+062F # ARABIC LETTER DAL\r
+0x030 U+0630 # ARABIC LETTER THAL\r
+0x031 U+0631 # ARABIC LETTER REH\r
+0x032 U+0632 # ARABIC LETTER ZAIN\r
+0x033 U+0633 # ARABIC LETTER SEEN\r
+0x034 U+0634 # ARABIC LETTER SHEEN\r
+0x035 U+0635 # ARABIC LETTER SAD\r
+0x036 U+0636 # ARABIC LETTER DAD\r
+0x037 U+0637 # ARABIC LETTER TAH\r
+0x038 U+0638 # ARABIC LETTER ZAH\r
+0x039 U+0639 # ARABIC LETTER AIN\r
+0x03A U+063A # ARABIC LETTER GHAIN\r
+0x040 U+0640 # ARABIC TATWEEL\r
+0x041 U+0641 # ARABIC LETTER FEH\r
+0x042 U+0642 # ARABIC LETTER QAF\r
+0x043 U+0643 # ARABIC LETTER KAF\r
+0x044 U+0644 # ARABIC LETTER LAM\r
+0x045 U+0645 # ARABIC LETTER MEEM\r
+0x046 U+0646 # ARABIC LETTER NOON\r
+0x047 U+0647 # ARABIC LETTER HEH\r
+0x048 U+0648 # ARABIC LETTER WAW\r
+0x049 U+0649 # ARABIC LETTER ALEF MAKSURA\r
+0x04A U+064A # ARABIC LETTER YEH\r
+0x04B U+064B # ARABIC FATHATAN\r
+0x04C U+064C # ARABIC DAMMATAN\r
+0x04D U+064D # ARABIC KASRATAN\r
+0x04E U+064E # ARABIC FATHA\r
+0x04F U+064F # ARABIC DAMMA\r
+0x050 U+0650 # ARABIC KASRA\r
+0x051 U+0651 # ARABIC SHADDA\r
+0x052 U+0652 # ARABIC SUKUN\r
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO 8859-7 (Greek)\r
+0x000 U+00A0 # NO-BREAK SPACE\r
+0x001 U+2018 # LEFT SINGLE QUOTATION MARK\r
+0x002 U+2019 # RIGHT SINGLE QUOTATION MARK\r
+0x003 U+00A3 # POUND SIGN\r
+0x006 U+00A6 # BROKEN BAR\r
+0x007 U+00A7 # SECTION SIGN\r
+0x008 U+00A8 # DIAERESIS\r
+0x009 U+00A9 # COPYRIGHT SIGN\r
+0x00B U+00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x00C U+00AC # NOT SIGN\r
+0x00D U+00AD # SOFT HYPHEN\r
+0x00F U+2015 # HORIZONTAL BAR\r
+0x010 U+00B0 # DEGREE SIGN\r
+0x011 U+00B1 # PLUS-MINUS SIGN\r
+0x012 U+00B2 # SUPERSCRIPT TWO\r
+0x013 U+00B3 # SUPERSCRIPT THREE\r
+0x014 U+0384 # GREEK TONOS\r
+0x015 U+0385 # GREEK DIALYTIKA TONOS\r
+0x016 U+0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS\r
+0x017 U+00B7 # MIDDLE DOT\r
+0x018 U+0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS\r
+0x019 U+0389 # GREEK CAPITAL LETTER ETA WITH TONOS\r
+0x01A U+038A # GREEK CAPITAL LETTER IOTA WITH TONOS\r
+0x01B U+00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x01C U+038C # GREEK CAPITAL LETTER OMICRON WITH TONOS\r
+0x01D U+00BD # VULGAR FRACTION ONE HALF\r
+0x01E U+038E # GREEK CAPITAL LETTER UPSILON WITH TONOS\r
+0x01F U+038F # GREEK CAPITAL LETTER OMEGA WITH TONOS\r
+0x020 U+0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS\r
+0x021 U+0391 # GREEK CAPITAL LETTER ALPHA\r
+0x022 U+0392 # GREEK CAPITAL LETTER BETA\r
+0x023 U+0393 # GREEK CAPITAL LETTER GAMMA\r
+0x024 U+0394 # GREEK CAPITAL LETTER DELTA\r
+0x025 U+0395 # GREEK CAPITAL LETTER EPSILON\r
+0x026 U+0396 # GREEK CAPITAL LETTER ZETA\r
+0x027 U+0397 # GREEK CAPITAL LETTER ETA\r
+0x028 U+0398 # GREEK CAPITAL LETTER THETA\r
+0x029 U+0399 # GREEK CAPITAL LETTER IOTA\r
+0x02A U+039A # GREEK CAPITAL LETTER KAPPA\r
+0x02B U+039B # GREEK CAPITAL LETTER LAMDA\r
+0x02C U+039C # GREEK CAPITAL LETTER MU\r
+0x02D U+039D # GREEK CAPITAL LETTER NU\r
+0x02E U+039E # GREEK CAPITAL LETTER XI\r
+0x02F U+039F # GREEK CAPITAL LETTER OMICRON\r
+0x030 U+03A0 # GREEK CAPITAL LETTER PI\r
+0x031 U+03A1 # GREEK CAPITAL LETTER RHO\r
+0x033 U+03A3 # GREEK CAPITAL LETTER SIGMA\r
+0x034 U+03A4 # GREEK CAPITAL LETTER TAU\r
+0x035 U+03A5 # GREEK CAPITAL LETTER UPSILON\r
+0x036 U+03A6 # GREEK CAPITAL LETTER PHI\r
+0x037 U+03A7 # GREEK CAPITAL LETTER CHI\r
+0x038 U+03A8 # GREEK CAPITAL LETTER PSI\r
+0x039 U+03A9 # GREEK CAPITAL LETTER OMEGA\r
+0x03A U+03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA\r
+0x03B U+03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA\r
+0x03C U+03AC # GREEK SMALL LETTER ALPHA WITH TONOS\r
+0x03D U+03AD # GREEK SMALL LETTER EPSILON WITH TONOS\r
+0x03E U+03AE # GREEK SMALL LETTER ETA WITH TONOS\r
+0x03F U+03AF # GREEK SMALL LETTER IOTA WITH TONOS\r
+0x040 U+03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS\r
+0x041 U+03B1 # GREEK SMALL LETTER ALPHA\r
+0x042 U+03B2 # GREEK SMALL LETTER BETA\r
+0x043 U+03B3 # GREEK SMALL LETTER GAMMA\r
+0x044 U+03B4 # GREEK SMALL LETTER DELTA\r
+0x045 U+03B5 # GREEK SMALL LETTER EPSILON\r
+0x046 U+03B6 # GREEK SMALL LETTER ZETA\r
+0x047 U+03B7 # GREEK SMALL LETTER ETA\r
+0x048 U+03B8 # GREEK SMALL LETTER THETA\r
+0x049 U+03B9 # GREEK SMALL LETTER IOTA\r
+0x04A U+03BA # GREEK SMALL LETTER KAPPA\r
+0x04B U+03BB # GREEK SMALL LETTER LAMDA\r
+0x04C U+03BC # GREEK SMALL LETTER MU\r
+0x04D U+03BD # GREEK SMALL LETTER NU\r
+0x04E U+03BE # GREEK SMALL LETTER XI\r
+0x04F U+03BF # GREEK SMALL LETTER OMICRON\r
+0x050 U+03C0 # GREEK SMALL LETTER PI\r
+0x051 U+03C1 # GREEK SMALL LETTER RHO\r
+0x052 U+03C2 # GREEK SMALL LETTER FINAL SIGMA\r
+0x053 U+03C3 # GREEK SMALL LETTER SIGMA\r
+0x054 U+03C4 # GREEK SMALL LETTER TAU\r
+0x055 U+03C5 # GREEK SMALL LETTER UPSILON\r
+0x056 U+03C6 # GREEK SMALL LETTER PHI\r
+0x057 U+03C7 # GREEK SMALL LETTER CHI\r
+0x058 U+03C8 # GREEK SMALL LETTER PSI\r
+0x059 U+03C9 # GREEK SMALL LETTER OMEGA\r
+0x05A U+03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA\r
+0x05B U+03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA\r
+0x05C U+03CC # GREEK SMALL LETTER OMICRON WITH TONOS\r
+0x05D U+03CD # GREEK SMALL LETTER UPSILON WITH TONOS\r
+0x05E U+03CE # GREEK SMALL LETTER OMEGA WITH TONOS\r
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO/IEC 8859-8 (Hebrew)\r
+0x000 U+00A0 # NO-BREAK SPACE\r
+0x002 U+00A2 # CENT SIGN\r
+0x003 U+00A3 # POUND SIGN\r
+0x004 U+00A4 # CURRENCY SIGN\r
+0x005 U+00A5 # YEN SIGN\r
+0x006 U+00A6 # BROKEN BAR\r
+0x007 U+00A7 # SECTION SIGN\r
+0x008 U+00A8 # DIAERESIS\r
+0x009 U+00A9 # COPYRIGHT SIGN\r
+0x00A U+00D7 # MULTIPLICATION SIGN\r
+0x00B U+00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x00C U+00AC # NOT SIGN\r
+0x00D U+00AD # SOFT HYPHEN\r
+0x00E U+00AE # REGISTERED SIGN\r
+0x00F U+203E # OVERLINE\r
+0x010 U+00B0 # DEGREE SIGN\r
+0x011 U+00B1 # PLUS-MINUS SIGN\r
+0x012 U+00B2 # SUPERSCRIPT TWO\r
+0x013 U+00B3 # SUPERSCRIPT THREE\r
+0x014 U+00B4 # ACUTE ACCENT\r
+0x015 U+00B5 # MICRO SIGN\r
+0x016 U+00B6 # PILCROW SIGN\r
+0x017 U+00B7 # MIDDLE DOT\r
+0x018 U+00B8 # CEDILLA\r
+0x019 U+00B9 # SUPERSCRIPT ONE\r
+0x01A U+00F7 # DIVISION SIGN\r
+0x01B U+00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x01C U+00BC # VULGAR FRACTION ONE QUARTER\r
+0x01D U+00BD # VULGAR FRACTION ONE HALF\r
+0x01E U+00BE # VULGAR FRACTION THREE QUARTERS\r
+0x03F U+2017 # DOUBLE LOW LINE\r
+0x040 U+05D0 # HEBREW LETTER ALEF\r
+0x041 U+05D1 # HEBREW LETTER BET\r
+0x042 U+05D2 # HEBREW LETTER GIMEL\r
+0x043 U+05D3 # HEBREW LETTER DALET\r
+0x044 U+05D4 # HEBREW LETTER HE\r
+0x045 U+05D5 # HEBREW LETTER VAV\r
+0x046 U+05D6 # HEBREW LETTER ZAYIN\r
+0x047 U+05D7 # HEBREW LETTER HET\r
+0x048 U+05D8 # HEBREW LETTER TET\r
+0x049 U+05D9 # HEBREW LETTER YOD\r
+0x04A U+05DA # HEBREW LETTER FINAL KAF\r
+0x04B U+05DB # HEBREW LETTER KAF\r
+0x04C U+05DC # HEBREW LETTER LAMED\r
+0x04D U+05DD # HEBREW LETTER FINAL MEM\r
+0x04E U+05DE # HEBREW LETTER MEM\r
+0x04F U+05DF # HEBREW LETTER FINAL NUN\r
+0x050 U+05E0 # HEBREW LETTER NUN\r
+0x051 U+05E1 # HEBREW LETTER SAMEKH\r
+0x052 U+05E2 # HEBREW LETTER AYIN\r
+0x053 U+05E3 # HEBREW LETTER FINAL PE\r
+0x054 U+05E4 # HEBREW LETTER PE\r
+0x055 U+05E5 # HEBREW LETTER FINAL TSADI\r
+0x056 U+05E6 # HEBREW LETTER TSADI\r
+0x057 U+05E7 # HEBREW LETTER QOF\r
+0x058 U+05E8 # HEBREW LETTER RESH\r
+0x059 U+05E9 # HEBREW LETTER SHIN\r
+0x05A U+05EA # HEBREW LETTER TAV\r
--- /dev/null
+# fontpositions 0-95: positions 160-255 in ISO/IEC 8859-9 (Latin-5)\r
+0x000 U+00A0 # NO-BREAK SPACE\r
+0x001 U+00A1 # INVERTED EXCLAMATION MARK\r
+0x002 U+00A2 # CENT SIGN\r
+0x003 U+00A3 # POUND SIGN\r
+0x004 U+00A4 # CURRENCY SIGN\r
+0x005 U+00A5 # YEN SIGN\r
+0x006 U+00A6 # BROKEN BAR\r
+0x007 U+00A7 # SECTION SIGN\r
+0x008 U+00A8 # DIAERESIS\r
+0x009 U+00A9 # COPYRIGHT SIGN\r
+0x00A U+00AA # FEMININE ORDINAL INDICATOR\r
+0x00B U+00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x00C U+00AC # NOT SIGN\r
+0x00D U+00AD # SOFT HYPHEN\r
+0x00E U+00AE # REGISTERED SIGN\r
+0x00F U+00AF # MACRON\r
+0x010 U+00B0 # DEGREE SIGN\r
+0x011 U+00B1 # PLUS-MINUS SIGN\r
+0x012 U+00B2 # SUPERSCRIPT TWO\r
+0x013 U+00B3 # SUPERSCRIPT THREE\r
+0x014 U+00B4 # ACUTE ACCENT\r
+0x015 U+00B5 # MICRO SIGN\r
+0x016 U+00B6 # PILCROW SIGN\r
+0x017 U+00B7 # MIDDLE DOT\r
+0x018 U+00B8 # CEDILLA\r
+0x019 U+00B9 # SUPERSCRIPT ONE\r
+0x01A U+00BA # MASCULINE ORDINAL INDICATOR\r
+0x01B U+00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK\r
+0x01C U+00BC # VULGAR FRACTION ONE QUARTER\r
+0x01D U+00BD # VULGAR FRACTION ONE HALF\r
+0x01E U+00BE # VULGAR FRACTION THREE QUARTERS\r
+0x01F U+00BF # INVERTED QUESTION MARK\r
+0x020 U+00C0 # LATIN CAPITAL LETTER A WITH GRAVE\r
+0x021 U+00C1 # LATIN CAPITAL LETTER A WITH ACUTE\r
+0x022 U+00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX\r
+0x023 U+00C3 # LATIN CAPITAL LETTER A WITH TILDE\r
+0x024 U+00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS\r
+0x025 U+00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE\r
+0x026 U+00C6 # LATIN CAPITAL LETTER AE\r
+0x027 U+00C7 # LATIN CAPITAL LETTER C WITH CEDILLA\r
+0x028 U+00C8 # LATIN CAPITAL LETTER E WITH GRAVE\r
+0x029 U+00C9 # LATIN CAPITAL LETTER E WITH ACUTE\r
+0x02A U+00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX\r
+0x02B U+00CB # LATIN CAPITAL LETTER E WITH DIAERESIS\r
+0x02C U+00CC # LATIN CAPITAL LETTER I WITH GRAVE\r
+0x02D U+00CD # LATIN CAPITAL LETTER I WITH ACUTE\r
+0x02E U+00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX\r
+0x02F U+00CF # LATIN CAPITAL LETTER I WITH DIAERESIS\r
+0x030 U+011E # LATIN CAPITAL LETTER G WITH BREVE\r
+0x031 U+00D1 # LATIN CAPITAL LETTER N WITH TILDE\r
+0x032 U+00D2 # LATIN CAPITAL LETTER O WITH GRAVE\r
+0x033 U+00D3 # LATIN CAPITAL LETTER O WITH ACUTE\r
+0x034 U+00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX\r
+0x035 U+00D5 # LATIN CAPITAL LETTER O WITH TILDE\r
+0x036 U+00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS\r
+0x037 U+00D7 # MULTIPLICATION SIGN\r
+0x038 U+00D8 # LATIN CAPITAL LETTER O WITH STROKE\r
+0x039 U+00D9 # LATIN CAPITAL LETTER U WITH GRAVE\r
+0x03A U+00DA # LATIN CAPITAL LETTER U WITH ACUTE\r
+0x03B U+00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX\r
+0x03C U+00DC # LATIN CAPITAL LETTER U WITH DIAERESIS\r
+0x03D U+0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE\r
+0x03E U+015E # LATIN CAPITAL LETTER S WITH CEDILLA\r
+0x03F U+00DF # LATIN SMALL LETTER SHARP S\r
+0x040 U+00E0 # LATIN SMALL LETTER A WITH GRAVE\r
+0x041 U+00E1 # LATIN SMALL LETTER A WITH ACUTE\r
+0x042 U+00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX\r
+0x043 U+00E3 # LATIN SMALL LETTER A WITH TILDE\r
+0x044 U+00E4 # LATIN SMALL LETTER A WITH DIAERESIS\r
+0x045 U+00E5 # LATIN SMALL LETTER A WITH RING ABOVE\r
+0x046 U+00E6 # LATIN SMALL LETTER AE\r
+0x047 U+00E7 # LATIN SMALL LETTER C WITH CEDILLA\r
+0x048 U+00E8 # LATIN SMALL LETTER E WITH GRAVE\r
+0x049 U+00E9 # LATIN SMALL LETTER E WITH ACUTE\r
+0x04A U+00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX\r
+0x04B U+00EB # LATIN SMALL LETTER E WITH DIAERESIS\r
+0x04C U+00EC # LATIN SMALL LETTER I WITH GRAVE\r
+0x04D U+00ED # LATIN SMALL LETTER I WITH ACUTE\r
+0x04E U+00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX\r
+0x04F U+00EF # LATIN SMALL LETTER I WITH DIAERESIS\r
+0x050 U+011F # LATIN SMALL LETTER G WITH BREVE\r
+0x051 U+00F1 # LATIN SMALL LETTER N WITH TILDE\r
+0x052 U+00F2 # LATIN SMALL LETTER O WITH GRAVE\r
+0x053 U+00F3 # LATIN SMALL LETTER O WITH ACUTE\r
+0x054 U+00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX\r
+0x055 U+00F5 # LATIN SMALL LETTER O WITH TILDE\r
+0x056 U+00F6 # LATIN SMALL LETTER O WITH DIAERESIS\r
+0x057 U+00F7 # DIVISION SIGN\r
+0x058 U+00F8 # LATIN SMALL LETTER O WITH STROKE\r
+0x059 U+00F9 # LATIN SMALL LETTER U WITH GRAVE\r
+0x05A U+00FA # LATIN SMALL LETTER U WITH ACUTE\r
+0x05B U+00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX\r
+0x05C U+00FC # LATIN SMALL LETTER U WITH DIAERESIS\r
+0x05D U+0131 # LATIN SMALL LETTER DOTLESS I\r
+0x05E U+015F # LATIN SMALL LETTER S WITH CEDILLA\r
+0x05F U+00FF # LATIN SMALL LETTER Y WITH DIAERESIS\r
--- /dev/null
+# fontpositions 0-95: positions 32-127 in ASCII
+0x000 U+0020 #
+0x001 U+0021 # !
+0x002 U+0022 # "
+0x003 U+0023 # #
+0x004 U+0024 # $
+0x005 U+0025 # %
+0x006 U+0026 # &
+0x007 U+0027 # '
+0x008 U+0028 # (
+0x009 U+0029 # )
+0x00a U+002a # *
+0x00b U+002b # +
+0x00c U+002c # ,
+0x00d U+002d # -
+0x00e U+002e # .
+0x00f U+002f # /
+0x010 U+0030 # 0
+0x011 U+0031 # 1
+0x012 U+0032 # 2
+0x013 U+0033 # 3
+0x014 U+0034 # 4
+0x015 U+0035 # 5
+0x016 U+0036 # 6
+0x017 U+0037 # 7
+0x018 U+0038 # 8
+0x019 U+0039 # 9
+0x01a U+003a # :
+0x01b U+003b # ;
+0x01c U+003c # <
+0x01d U+003d # =
+0x01e U+003e # >
+0x01f U+003f # ?
+0x020 U+0040 # @
+0x021 U+0041 # A
+0x022 U+0042 # B
+0x023 U+0043 # C
+0x024 U+0044 # D
+0x025 U+0045 # E
+0x026 U+0046 # F
+0x027 U+0047 # G
+0x028 U+0048 # H
+0x029 U+0049 # I
+0x02a U+004a # J
+0x02b U+004b # K
+0x02c U+004c # L
+0x02d U+004d # M
+0x02e U+004e # N
+0x02f U+004f # O
+0x030 U+0050 # P
+0x031 U+0051 # Q
+0x032 U+0052 # R
+0x033 U+0053 # S
+0x034 U+0054 # T
+0x035 U+0055 # U
+0x036 U+0056 # V
+0x037 U+0057 # W
+0x038 U+0058 # X
+0x039 U+0059 # Y
+0x03a U+005a # Z
+0x03b U+005b # [
+0x03c U+005c # \
+0x03d U+005d # ]
+0x03e U+005e # ^
+0x03f U+005f # _
+0x040 U+0060 # `
+0x041 U+0061 # a
+0x042 U+0062 # b
+0x043 U+0063 # c
+0x044 U+0064 # d
+0x045 U+0065 # e
+0x046 U+0066 # f
+0x047 U+0067 # g
+0x048 U+0068 # h
+0x049 U+0069 # i
+0x04a U+006a # j
+0x04b U+006b # k
+0x04c U+006c # l
+0x04d U+006d # m
+0x04e U+006e # n
+0x04f U+006f # o
+0x050 U+0070 # p
+0x051 U+0071 # q
+0x052 U+0072 # r
+0x053 U+0073 # s
+0x054 U+0074 # t
+0x055 U+0075 # u
+0x056 U+0076 # v
+0x057 U+0077 # w
+0x058 U+0078 # x
+0x059 U+0079 # y
+0x05a U+007a # z
+0x05b U+007b # {
+0x05c U+007c # |
+0x05d U+007d # }
+0x05e U+007e # ~
+0x05f U+2302 # DEL - represented by `house'
--- /dev/null
+# first 32 positions of cp437
+0x000 U+fffd
+0x001 U+263a
+0x002 U+263b
+0x003 U+2665
+0x004 U+2666
+0x005 U+2663
+0x006 U+2660
+0x007 U+2022
+0x008 U+25d8
+0x009 U+25cb
+0x00a U+25d9
+0x00b U+2642
+0x00c U+2640
+0x00d U+266a
+0x00e U+266b
+0x00f U+263c
+0x010 U+25ba
+0x011 U+25c4
+0x012 U+2195
+0x013 U+203c
+0x014 U+00b6
+0x015 U+00a7
+0x016 U+25ac
+0x017 U+21a8
+0x018 U+2191
+0x019 U+2193
+0x01a U+2192
+0x01b U+2190
+0x01c U+221f
+0x01d U+2194
+0x01e U+25b2
+0x01f U+25bc
--- /dev/null
+# cp737 (Greek)
+# ASCII
+0x00-0x7f idem
+# Greek stuff
+0x80 U+0391 # GREEK CAPITAL LETTER ALPHA
+0x81 U+0392 # GREEK CAPITAL LETTER BETA
+0x82 U+0393 # GREEK CAPITAL LETTER GAMMA
+0x83 U+0394 # GREEK CAPITAL LETTER DELTA
+0x84 U+0395 # GREEK CAPITAL LETTER EPSILON
+0x85 U+0396 # GREEK CAPITAL LETTER ZETA
+0x86 U+0397 # GREEK CAPITAL LETTER ETA
+0x87 U+0398 # GREEK CAPITAL LETTER THETA
+0x88 U+0399 # GREEK CAPITAL LETTER IOTA
+0x89 U+039a # GREEK CAPITAL LETTER KAPPA
+0x8a U+039b # GREEK CAPITAL LETTER LAMDA
+0x8b U+039c # GREEK CAPITAL LETTER MU
+0x8c U+039d # GREEK CAPITAL LETTER NU
+0x8d U+039e # GREEK CAPITAL LETTER XI
+0x8e U+039f # GREEK CAPITAL LETTER OMICRON
+0x8f U+03a0 # GREEK CAPITAL LETTER PI
+0x90 U+03a1 # GREEK CAPITAL LETTER RHO
+0x91 U+03a3 # GREEK CAPITAL LETTER SIGMA
+0x92 U+03a4 # GREEK CAPITAL LETTER TAU
+0x93 U+03a5 # GREEK CAPITAL LETTER UPSILON
+0x94 U+03a6 # GREEK CAPITAL LETTER PHI
+0x95 U+03a7 # GREEK CAPITAL LETTER CHI
+0x96 U+03a8 # GREEK CAPITAL LETTER PSI
+0x97 U+03a9 # GREEK CAPITAL LETTER OMEGA
+0x98 U+03b1 # GREEK SMALL LETTER ALPHA
+0x99 U+03b2 # GREEK SMALL LETTER BETA
+0x9a U+03b3 # GREEK SMALL LETTER GAMMA
+0x9b U+03b4 # GREEK SMALL LETTER DELTA
+0x9c U+03b5 # GREEK SMALL LETTER EPSILON
+0x9d U+03b6 # GREEK SMALL LETTER ZETA
+0x9e U+03b7 # GREEK SMALL LETTER ETA
+0x9f U+03b8 # GREEK SMALL LETTER THETA
+0xa0 U+03b9 # GREEK SMALL LETTER IOTA
+0xa1 U+03ba # GREEK SMALL LETTER KAPPA
+0xa2 U+03bb # GREEK SMALL LETTER LAMDA
+0xa3 U+03bc # GREEK SMALL LETTER MU
+0xa4 U+03bd # GREEK SMALL LETTER NU
+0xa5 U+03be # GREEK SMALL LETTER XI
+0xa6 U+03bf # GREEK SMALL LETTER OMICRON
+0xa7 U+03c0 # GREEK SMALL LETTER PI
+0xa8 U+03c1 # GREEK SMALL LETTER RHO
+0xa9 U+03c3 # GREEK SMALL LETTER SIGMA
+0xaa U+03c2 # GREEK SMALL LETTER FINAL SIGMA
+0xab U+03c4 # GREEK SMALL LETTER TAU
+0xac U+03c5 # GREEK SMALL LETTER UPSILON
+0xad U+03c6 # GREEK SMALL LETTER PHI
+0xae U+03c7 # GREEK SMALL LETTER CHI
+0xaf U+03c8 # GREEK SMALL LETTER PSI
+0xb0 U+2591 # LIGHT SHADE
+0xb1 U+2592 # MEDIUM SHADE
+0xb2 U+2593 # DARK SHADE
+0xb3 U+2502 # BOX DRAWINGS LIGHT VERTICAL
+0xb4 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5 U+2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+0xb6 U+2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+0xb7 U+2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+0xb8 U+2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+0xb9 U+2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba U+2551 # BOX DRAWINGS DOUBLE VERTICAL
+0xbb U+2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc U+255d # BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd U+255c # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+0xbe U+255b # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+0xbf U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2 U+252c # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3 U+251c # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4 U+2500 # BOX DRAWINGS LIGHT HORIZONTAL
+0xc5 U+253c # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6 U+255e # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+0xc7 U+255f # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+0xc8 U+255a # BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9 U+2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca U+2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb U+2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc U+2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd U+2550 # BOX DRAWINGS DOUBLE HORIZONTAL
+0xce U+256c # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf U+2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+0xd0 U+2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+0xd1 U+2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+0xd2 U+2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+0xd3 U+2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+0xd4 U+2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+0xd5 U+2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+0xd6 U+2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+0xd7 U+256b # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+0xd8 U+256a # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+0xd9 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT
+0xda U+250c # BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb U+2588 # FULL BLOCK
+0xdc U+2584 # LOWER HALF BLOCK
+0xdd U+258c # LEFT HALF BLOCK
+0xde U+2590 # RIGHT HALF BLOCK
+0xdf U+2580 # UPPER HALF BLOCK
+0xe0 U+03c9 # GREEK SMALL LETTER OMEGA
+0xe1 U+03ac # GREEK SMALL LETTER ALPHA WITH TONOS
+0xe2 U+03ad # GREEK SMALL LETTER EPSILON WITH TONOS
+0xe3 U+03ae # GREEK SMALL LETTER ETA WITH TONOS
+0xe4 U+03ca # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+0xe5 U+03af # GREEK SMALL LETTER IOTA WITH TONOS
+0xe6 U+03cc # GREEK SMALL LETTER OMICRON WITH TONOS
+0xe7 U+03cd # GREEK SMALL LETTER UPSILON WITH TONOS
+0xe8 U+03cb # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+0xe9 U+03ce # GREEK SMALL LETTER OMEGA WITH TONOS
+0xea U+0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+0xeb U+0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+0xec U+0389 # GREEK CAPITAL LETTER ETA WITH TONOS
+0xed U+038a # GREEK CAPITAL LETTER IOTA WITH TONOS
+0xee U+038c # GREEK CAPITAL LETTER OMICRON WITH TONOS
+0xef U+038e # GREEK CAPITAL LETTER UPSILON WITH TONOS
+0xf0 U+038f # GREEK CAPITAL LETTER OMEGA WITH TONOS
+0xf1 U+00b1 # PLUS-MINUS SIGN
+0xf2 U+2265 # GREATER-THAN OR EQUAL TO
+0xf3 U+2264 # LESS-THAN OR EQUAL TO
+0xf4 U+03aa # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+0xf5 U+03ab # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+0xf6 U+00f7 # DIVISION SIGN
+0xf7 U+2248 # ALMOST EQUAL TO
+0xf8 U+00b0 # DEGREE SIGN
+0xf9 U+2219 # BULLET OPERATOR
+0xfa U+00b7 # MIDDLE DOT
+0xfb U+221a # SQUARE ROOT
+0xfc U+207f # SUPERSCRIPT LATIN SMALL LETTER N
+0xfd U+00b2 # SUPERSCRIPT TWO
+0xfe U+25a0 # BLACK SQUARE
+0xff U+00a0 # NO-BREAK SPACE
--- /dev/null
+# cp737a (Greek)
+# This is cp737, but with positions 0-31 replaced by cp437 symbols
+# first 32 positions of cp437
+0x000 U+fffd
+0x001 U+263a
+0x002 U+263b
+0x003 U+2665
+0x004 U+2666
+0x005 U+2663
+0x006 U+2660
+0x007 U+2022
+0x008 U+25d8
+0x009 U+25cb
+0x00a U+25d9
+0x00b U+2642
+0x00c U+2640
+0x00d U+266a
+0x00e U+266b
+0x00f U+263c
+0x010 U+25ba
+0x011 U+25c4
+0x012 U+2195
+0x013 U+203c
+0x014 U+00b6
+0x015 U+00a7
+0x016 U+25ac
+0x017 U+21a8
+0x018 U+2191
+0x019 U+2193
+0x01a U+2192
+0x01b U+2190
+0x01c U+221f
+0x01d U+2194
+0x01e U+25b2
+0x01f U+25bc
+# then ASCII
+0x020-0x07f idem
+# then Greek part
+0x80 U+0391 # GREEK CAPITAL LETTER ALPHA
+0x81 U+0392 # GREEK CAPITAL LETTER BETA
+0x82 U+0393 # GREEK CAPITAL LETTER GAMMA
+0x83 U+0394 # GREEK CAPITAL LETTER DELTA
+0x84 U+0395 # GREEK CAPITAL LETTER EPSILON
+0x85 U+0396 # GREEK CAPITAL LETTER ZETA
+0x86 U+0397 # GREEK CAPITAL LETTER ETA
+0x87 U+0398 # GREEK CAPITAL LETTER THETA
+0x88 U+0399 # GREEK CAPITAL LETTER IOTA
+0x89 U+039a # GREEK CAPITAL LETTER KAPPA
+0x8a U+039b # GREEK CAPITAL LETTER LAMDA
+0x8b U+039c # GREEK CAPITAL LETTER MU
+0x8c U+039d # GREEK CAPITAL LETTER NU
+0x8d U+039e # GREEK CAPITAL LETTER XI
+0x8e U+039f # GREEK CAPITAL LETTER OMICRON
+0x8f U+03a0 # GREEK CAPITAL LETTER PI
+0x90 U+03a1 # GREEK CAPITAL LETTER RHO
+0x91 U+03a3 # GREEK CAPITAL LETTER SIGMA
+0x92 U+03a4 # GREEK CAPITAL LETTER TAU
+0x93 U+03a5 # GREEK CAPITAL LETTER UPSILON
+0x94 U+03a6 # GREEK CAPITAL LETTER PHI
+0x95 U+03a7 # GREEK CAPITAL LETTER CHI
+0x96 U+03a8 # GREEK CAPITAL LETTER PSI
+0x97 U+03a9 # GREEK CAPITAL LETTER OMEGA
+0x98 U+03b1 # GREEK SMALL LETTER ALPHA
+0x99 U+03b2 # GREEK SMALL LETTER BETA
+0x9a U+03b3 # GREEK SMALL LETTER GAMMA
+0x9b U+03b4 # GREEK SMALL LETTER DELTA
+0x9c U+03b5 # GREEK SMALL LETTER EPSILON
+0x9d U+03b6 # GREEK SMALL LETTER ZETA
+0x9e U+03b7 # GREEK SMALL LETTER ETA
+0x9f U+03b8 # GREEK SMALL LETTER THETA
+0xa0 U+03b9 # GREEK SMALL LETTER IOTA
+0xa1 U+03ba # GREEK SMALL LETTER KAPPA
+0xa2 U+03bb # GREEK SMALL LETTER LAMDA
+0xa3 U+03bc # GREEK SMALL LETTER MU
+0xa4 U+03bd # GREEK SMALL LETTER NU
+0xa5 U+03be # GREEK SMALL LETTER XI
+0xa6 U+03bf # GREEK SMALL LETTER OMICRON
+0xa7 U+03c0 # GREEK SMALL LETTER PI
+0xa8 U+03c1 # GREEK SMALL LETTER RHO
+0xa9 U+03c3 # GREEK SMALL LETTER SIGMA
+0xaa U+03c2 # GREEK SMALL LETTER FINAL SIGMA
+0xab U+03c4 # GREEK SMALL LETTER TAU
+0xac U+03c5 # GREEK SMALL LETTER UPSILON
+0xad U+03c6 # GREEK SMALL LETTER PHI
+0xae U+03c7 # GREEK SMALL LETTER CHI
+0xaf U+03c8 # GREEK SMALL LETTER PSI
+0xb0 U+2591 # LIGHT SHADE
+0xb1 U+2592 # MEDIUM SHADE
+0xb2 U+2593 # DARK SHADE
+0xb3 U+2502 # BOX DRAWINGS LIGHT VERTICAL
+0xb4 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5 U+2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+0xb6 U+2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+0xb7 U+2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+0xb8 U+2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+0xb9 U+2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba U+2551 # BOX DRAWINGS DOUBLE VERTICAL
+0xbb U+2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc U+255d # BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd U+255c # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+0xbe U+255b # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+0xbf U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2 U+252c # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3 U+251c # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4 U+2500 # BOX DRAWINGS LIGHT HORIZONTAL
+0xc5 U+253c # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6 U+255e # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+0xc7 U+255f # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+0xc8 U+255a # BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9 U+2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca U+2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb U+2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc U+2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd U+2550 # BOX DRAWINGS DOUBLE HORIZONTAL
+0xce U+256c # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf U+2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+0xd0 U+2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+0xd1 U+2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+0xd2 U+2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+0xd3 U+2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+0xd4 U+2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+0xd5 U+2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+0xd6 U+2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+0xd7 U+256b # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+0xd8 U+256a # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+0xd9 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT
+0xda U+250c # BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb U+2588 # FULL BLOCK
+0xdc U+2584 # LOWER HALF BLOCK
+0xdd U+258c # LEFT HALF BLOCK
+0xde U+2590 # RIGHT HALF BLOCK
+0xdf U+2580 # UPPER HALF BLOCK
+0xe0 U+03c9 # GREEK SMALL LETTER OMEGA
+0xe1 U+03ac # GREEK SMALL LETTER ALPHA WITH TONOS
+0xe2 U+03ad # GREEK SMALL LETTER EPSILON WITH TONOS
+0xe3 U+03ae # GREEK SMALL LETTER ETA WITH TONOS
+0xe4 U+03ca # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+0xe5 U+03af # GREEK SMALL LETTER IOTA WITH TONOS
+0xe6 U+03cc # GREEK SMALL LETTER OMICRON WITH TONOS
+0xe7 U+03cd # GREEK SMALL LETTER UPSILON WITH TONOS
+0xe8 U+03cb # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+0xe9 U+03ce # GREEK SMALL LETTER OMEGA WITH TONOS
+0xea U+0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+0xeb U+0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+0xec U+0389 # GREEK CAPITAL LETTER ETA WITH TONOS
+0xed U+038a # GREEK CAPITAL LETTER IOTA WITH TONOS
+0xee U+038c # GREEK CAPITAL LETTER OMICRON WITH TONOS
+0xef U+038e # GREEK CAPITAL LETTER UPSILON WITH TONOS
+0xf0 U+038f # GREEK CAPITAL LETTER OMEGA WITH TONOS
+0xf1 U+00b1 # PLUS-MINUS SIGN
+0xf2 U+2265 # GREATER-THAN OR EQUAL TO
+0xf3 U+2264 # LESS-THAN OR EQUAL TO
+0xf4 U+03aa # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+0xf5 U+03ab # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+0xf6 U+00f7 # DIVISION SIGN
+0xf7 U+2248 # ALMOST EQUAL TO
+0xf8 U+00b0 # DEGREE SIGN
+0xf9 U+2219 # BULLET OPERATOR
+0xfa U+00b7 # MIDDLE DOT
+0xfb U+221a # SQUARE ROOT
+0xfc U+207f # SUPERSCRIPT LATIN SMALL LETTER N
+0xfd U+00b2 # SUPERSCRIPT TWO
+0xfe U+25a0 # BLACK SQUARE
+0xff U+00a0 # NO-BREAK SPACE
--- /dev/null
+# cp737b (Greek)
+# This is cp737, but with positions 0-31 replaced by cp437 symbols
+# and positions ea-f0,f4-f5 replaced by Omega, delta, infinity,
+# varphi, varepsilon, cap, equiv, integral-top, integral-bottom.
+# (In other words, positions ea-ff replaced by cp865 symbols.)
+#
+# first 32 positions of cp437
+0x000 U+fffd
+0x001 U+263a
+0x002 U+263b
+0x003 U+2665
+0x004 U+2666
+0x005 U+2663
+0x006 U+2660
+0x007 U+2022
+0x008 U+25d8
+0x009 U+25cb
+0x00a U+25d9
+0x00b U+2642
+0x00c U+2640
+0x00d U+266a
+0x00e U+266b
+0x00f U+263c
+0x010 U+25ba
+0x011 U+25c4
+0x012 U+2195
+0x013 U+203c
+0x014 U+00b6
+0x015 U+00a7
+0x016 U+25ac
+0x017 U+21a8
+0x018 U+2191
+0x019 U+2193
+0x01a U+2192
+0x01b U+2190
+0x01c U+221f
+0x01d U+2194
+0x01e U+25b2
+0x01f U+25bc
+# then ASCII
+0x020-0x07f idem
+# then Greek part
+0x80 U+0391 # GREEK CAPITAL LETTER ALPHA
+0x81 U+0392 # GREEK CAPITAL LETTER BETA
+0x82 U+0393 # GREEK CAPITAL LETTER GAMMA
+0x83 U+0394 # GREEK CAPITAL LETTER DELTA
+0x84 U+0395 # GREEK CAPITAL LETTER EPSILON
+0x85 U+0396 # GREEK CAPITAL LETTER ZETA
+0x86 U+0397 # GREEK CAPITAL LETTER ETA
+0x87 U+0398 # GREEK CAPITAL LETTER THETA
+0x88 U+0399 # GREEK CAPITAL LETTER IOTA
+0x89 U+039a # GREEK CAPITAL LETTER KAPPA
+0x8a U+039b # GREEK CAPITAL LETTER LAMDA
+0x8b U+039c # GREEK CAPITAL LETTER MU
+0x8c U+039d # GREEK CAPITAL LETTER NU
+0x8d U+039e # GREEK CAPITAL LETTER XI
+0x8e U+039f # GREEK CAPITAL LETTER OMICRON
+0x8f U+03a0 # GREEK CAPITAL LETTER PI
+0x90 U+03a1 # GREEK CAPITAL LETTER RHO
+0x91 U+03a3 # GREEK CAPITAL LETTER SIGMA
+0x92 U+03a4 # GREEK CAPITAL LETTER TAU
+0x93 U+03a5 # GREEK CAPITAL LETTER UPSILON
+0x94 U+03a6 # GREEK CAPITAL LETTER PHI
+0x95 U+03a7 # GREEK CAPITAL LETTER CHI
+0x96 U+03a8 # GREEK CAPITAL LETTER PSI
+0x97 U+03a9 # GREEK CAPITAL LETTER OMEGA
+0x98 U+03b1 # GREEK SMALL LETTER ALPHA
+0x99 U+03b2 # GREEK SMALL LETTER BETA
+0x9a U+03b3 # GREEK SMALL LETTER GAMMA
+0x9b U+03b4 # GREEK SMALL LETTER DELTA
+0x9c U+03b5 # GREEK SMALL LETTER EPSILON
+0x9d U+03b6 # GREEK SMALL LETTER ZETA
+0x9e U+03b7 # GREEK SMALL LETTER ETA
+0x9f U+03b8 # GREEK SMALL LETTER THETA
+0xa0 U+03b9 # GREEK SMALL LETTER IOTA
+0xa1 U+03ba # GREEK SMALL LETTER KAPPA
+0xa2 U+03bb # GREEK SMALL LETTER LAMDA
+0xa3 U+03bc # GREEK SMALL LETTER MU
+0xa4 U+03bd # GREEK SMALL LETTER NU
+0xa5 U+03be # GREEK SMALL LETTER XI
+0xa6 U+03bf # GREEK SMALL LETTER OMICRON
+0xa7 U+03c0 # GREEK SMALL LETTER PI
+0xa8 U+03c1 # GREEK SMALL LETTER RHO
+0xa9 U+03c3 # GREEK SMALL LETTER SIGMA
+0xaa U+03c2 # GREEK SMALL LETTER FINAL SIGMA
+0xab U+03c4 # GREEK SMALL LETTER TAU
+0xac U+03c5 # GREEK SMALL LETTER UPSILON
+0xad U+03c6 # GREEK SMALL LETTER PHI
+0xae U+03c7 # GREEK SMALL LETTER CHI
+0xaf U+03c8 # GREEK SMALL LETTER PSI
+0xb0 U+2591 # LIGHT SHADE
+0xb1 U+2592 # MEDIUM SHADE
+0xb2 U+2593 # DARK SHADE
+0xb3 U+2502 # BOX DRAWINGS LIGHT VERTICAL
+0xb4 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5 U+2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+0xb6 U+2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+0xb7 U+2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+0xb8 U+2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+0xb9 U+2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba U+2551 # BOX DRAWINGS DOUBLE VERTICAL
+0xbb U+2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc U+255d # BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd U+255c # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+0xbe U+255b # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+0xbf U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2 U+252c # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3 U+251c # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4 U+2500 # BOX DRAWINGS LIGHT HORIZONTAL
+0xc5 U+253c # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6 U+255e # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+0xc7 U+255f # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+0xc8 U+255a # BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9 U+2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca U+2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb U+2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc U+2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd U+2550 # BOX DRAWINGS DOUBLE HORIZONTAL
+0xce U+256c # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf U+2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+0xd0 U+2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+0xd1 U+2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+0xd2 U+2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+0xd3 U+2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+0xd4 U+2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+0xd5 U+2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+0xd6 U+2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+0xd7 U+256b # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+0xd8 U+256a # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+0xd9 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT
+0xda U+250c # BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb U+2588 # FULL BLOCK
+0xdc U+2584 # LOWER HALF BLOCK
+0xdd U+258c # LEFT HALF BLOCK
+0xde U+2590 # RIGHT HALF BLOCK
+0xdf U+2580 # UPPER HALF BLOCK
+0xe0 U+03c9 # GREEK SMALL LETTER OMEGA
+0xe1 U+03ac # GREEK SMALL LETTER ALPHA WITH TONOS
+0xe2 U+03ad # GREEK SMALL LETTER EPSILON WITH TONOS
+0xe3 U+03ae # GREEK SMALL LETTER ETA WITH TONOS
+0xe4 U+03ca # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+0xe5 U+03af # GREEK SMALL LETTER IOTA WITH TONOS
+0xe6 U+03cc # GREEK SMALL LETTER OMICRON WITH TONOS
+0xe7 U+03cd # GREEK SMALL LETTER UPSILON WITH TONOS
+0xe8 U+03cb # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+0xe9 U+03ce # GREEK SMALL LETTER OMEGA WITH TONOS
+0xea U+03a9 # GREEK CAPITAL LETTER OMEGA
+0xeb U+03b4 # GREEK SMALL LETTER DELTA
+0xec U+221e # INFINITY
+0xed U+03c6 # GREEK SMALL LETTER PHI
+0xee U+03b5 # GREEK SMALL LETTER EPSILON
+0xef U+2229 # INTERSECTION
+0xf0 U+2261 # IDENTICAL TO
+0xf1 U+00b1 # PLUS-MINUS SIGN
+0xf2 U+2265 # GREATER-THAN OR EQUAL TO
+0xf3 U+2264 # LESS-THAN OR EQUAL TO
+0xf4 U+2320 # TOP HALF INTEGRAL
+0xf5 U+2321 # BOTTOM HALF INTEGRAL
+0xf6 U+00f7 # DIVISION SIGN
+0xf7 U+2248 # ALMOST EQUAL TO
+0xf8 U+00b0 # DEGREE SIGN
+0xf9 U+2219 # BULLET OPERATOR
+0xfa U+00b7 # MIDDLE DOT
+0xfb U+221a # SQUARE ROOT
+0xfc U+207f # SUPERSCRIPT LATIN SMALL LETTER N
+0xfd U+00b2 # SUPERSCRIPT TWO
+0xfe U+25a0 # BLACK SQUARE
+0xff U+00a0 # NO-BREAK SPACE
--- /dev/null
+# cp737c (Greek)
+# This is cp737, but with positions 0-31 replaced by cp437 symbols
+# and positions f4-f5 replaced by integral-top, integral-bottom.
+# (So that positions f1-ff agree with cp865.)
+#
+# first 32 positions of cp437
+0x000 U+fffd
+0x001 U+263a
+0x002 U+263b
+0x003 U+2665
+0x004 U+2666
+0x005 U+2663
+0x006 U+2660
+0x007 U+2022
+0x008 U+25d8
+0x009 U+25cb
+0x00a U+25d9
+0x00b U+2642
+0x00c U+2640
+0x00d U+266a
+0x00e U+266b
+0x00f U+263c
+0x010 U+25ba
+0x011 U+25c4
+0x012 U+2195
+0x013 U+203c
+0x014 U+00b6
+0x015 U+00a7
+0x016 U+25ac
+0x017 U+21a8
+0x018 U+2191
+0x019 U+2193
+0x01a U+2192
+0x01b U+2190
+0x01c U+221f
+0x01d U+2194
+0x01e U+25b2
+0x01f U+25bc
+# then ASCII
+0x020-0x07f idem
+# then Greek part
+0x80 U+0391 # GREEK CAPITAL LETTER ALPHA
+0x81 U+0392 # GREEK CAPITAL LETTER BETA
+0x82 U+0393 # GREEK CAPITAL LETTER GAMMA
+0x83 U+0394 # GREEK CAPITAL LETTER DELTA
+0x84 U+0395 # GREEK CAPITAL LETTER EPSILON
+0x85 U+0396 # GREEK CAPITAL LETTER ZETA
+0x86 U+0397 # GREEK CAPITAL LETTER ETA
+0x87 U+0398 # GREEK CAPITAL LETTER THETA
+0x88 U+0399 # GREEK CAPITAL LETTER IOTA
+0x89 U+039a # GREEK CAPITAL LETTER KAPPA
+0x8a U+039b # GREEK CAPITAL LETTER LAMDA
+0x8b U+039c # GREEK CAPITAL LETTER MU
+0x8c U+039d # GREEK CAPITAL LETTER NU
+0x8d U+039e # GREEK CAPITAL LETTER XI
+0x8e U+039f # GREEK CAPITAL LETTER OMICRON
+0x8f U+03a0 # GREEK CAPITAL LETTER PI
+0x90 U+03a1 # GREEK CAPITAL LETTER RHO
+0x91 U+03a3 # GREEK CAPITAL LETTER SIGMA
+0x92 U+03a4 # GREEK CAPITAL LETTER TAU
+0x93 U+03a5 # GREEK CAPITAL LETTER UPSILON
+0x94 U+03a6 # GREEK CAPITAL LETTER PHI
+0x95 U+03a7 # GREEK CAPITAL LETTER CHI
+0x96 U+03a8 # GREEK CAPITAL LETTER PSI
+0x97 U+03a9 # GREEK CAPITAL LETTER OMEGA
+0x98 U+03b1 # GREEK SMALL LETTER ALPHA
+0x99 U+03b2 # GREEK SMALL LETTER BETA
+0x9a U+03b3 # GREEK SMALL LETTER GAMMA
+0x9b U+03b4 # GREEK SMALL LETTER DELTA
+0x9c U+03b5 # GREEK SMALL LETTER EPSILON
+0x9d U+03b6 # GREEK SMALL LETTER ZETA
+0x9e U+03b7 # GREEK SMALL LETTER ETA
+0x9f U+03b8 # GREEK SMALL LETTER THETA
+0xa0 U+03b9 # GREEK SMALL LETTER IOTA
+0xa1 U+03ba # GREEK SMALL LETTER KAPPA
+0xa2 U+03bb # GREEK SMALL LETTER LAMDA
+0xa3 U+03bc # GREEK SMALL LETTER MU
+0xa4 U+03bd # GREEK SMALL LETTER NU
+0xa5 U+03be # GREEK SMALL LETTER XI
+0xa6 U+03bf # GREEK SMALL LETTER OMICRON
+0xa7 U+03c0 # GREEK SMALL LETTER PI
+0xa8 U+03c1 # GREEK SMALL LETTER RHO
+0xa9 U+03c3 # GREEK SMALL LETTER SIGMA
+0xaa U+03c2 # GREEK SMALL LETTER FINAL SIGMA
+0xab U+03c4 # GREEK SMALL LETTER TAU
+0xac U+03c5 # GREEK SMALL LETTER UPSILON
+0xad U+03c6 # GREEK SMALL LETTER PHI
+0xae U+03c7 # GREEK SMALL LETTER CHI
+0xaf U+03c8 # GREEK SMALL LETTER PSI
+0xb0 U+2591 # LIGHT SHADE
+0xb1 U+2592 # MEDIUM SHADE
+0xb2 U+2593 # DARK SHADE
+0xb3 U+2502 # BOX DRAWINGS LIGHT VERTICAL
+0xb4 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5 U+2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+0xb6 U+2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+0xb7 U+2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+0xb8 U+2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+0xb9 U+2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba U+2551 # BOX DRAWINGS DOUBLE VERTICAL
+0xbb U+2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc U+255d # BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd U+255c # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+0xbe U+255b # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+0xbf U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2 U+252c # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3 U+251c # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4 U+2500 # BOX DRAWINGS LIGHT HORIZONTAL
+0xc5 U+253c # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6 U+255e # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+0xc7 U+255f # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+0xc8 U+255a # BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9 U+2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca U+2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb U+2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc U+2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd U+2550 # BOX DRAWINGS DOUBLE HORIZONTAL
+0xce U+256c # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf U+2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+0xd0 U+2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+0xd1 U+2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+0xd2 U+2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+0xd3 U+2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+0xd4 U+2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+0xd5 U+2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+0xd6 U+2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+0xd7 U+256b # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+0xd8 U+256a # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+0xd9 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT
+0xda U+250c # BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb U+2588 # FULL BLOCK
+0xdc U+2584 # LOWER HALF BLOCK
+0xdd U+258c # LEFT HALF BLOCK
+0xde U+2590 # RIGHT HALF BLOCK
+0xdf U+2580 # UPPER HALF BLOCK
+0xe0 U+03c9 # GREEK SMALL LETTER OMEGA
+0xe1 U+03ac # GREEK SMALL LETTER ALPHA WITH TONOS
+0xe2 U+03ad # GREEK SMALL LETTER EPSILON WITH TONOS
+0xe3 U+03ae # GREEK SMALL LETTER ETA WITH TONOS
+0xe4 U+03ca # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+0xe5 U+03af # GREEK SMALL LETTER IOTA WITH TONOS
+0xe6 U+03cc # GREEK SMALL LETTER OMICRON WITH TONOS
+0xe7 U+03cd # GREEK SMALL LETTER UPSILON WITH TONOS
+0xe8 U+03cb # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+0xe9 U+03ce # GREEK SMALL LETTER OMEGA WITH TONOS
+0xea U+0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+0xeb U+0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+0xec U+0389 # GREEK CAPITAL LETTER ETA WITH TONOS
+0xed U+038a # GREEK CAPITAL LETTER IOTA WITH TONOS
+0xee U+038c # GREEK CAPITAL LETTER OMICRON WITH TONOS
+0xef U+038e # GREEK CAPITAL LETTER UPSILON WITH TONOS
+0xf0 U+038f # GREEK CAPITAL LETTER OMEGA WITH TONOS
+0xf1 U+00b1 # PLUS-MINUS SIGN
+0xf2 U+2265 # GREATER-THAN OR EQUAL TO
+0xf3 U+2264 # LESS-THAN OR EQUAL TO
+0xf4 U+2320 # TOP HALF INTEGRAL
+0xf5 U+2321 # BOTTOM HALF INTEGRAL
+0xf6 U+00f7 # DIVISION SIGN
+0xf7 U+2248 # ALMOST EQUAL TO
+0xf8 U+00b0 # DEGREE SIGN
+0xf9 U+2219 # BULLET OPERATOR
+0xfa U+00b7 # MIDDLE DOT
+0xfb U+221a # SQUARE ROOT
+0xfc U+207f # SUPERSCRIPT LATIN SMALL LETTER N
+0xfd U+00b2 # SUPERSCRIPT TWO
+0xfe U+25a0 # BLACK SQUARE
+0xff U+00a0 # NO-BREAK SPACE
--- /dev/null
+# CP850
+0x00-0x7f idem
+#
+0x80 U+00c7 # LATIN CAPITAL LETTER C WITH CEDILLA
+0x81 U+00fc # LATIN SMALL LETTER U WITH DIAERESIS
+0x82 U+00e9 # LATIN SMALL LETTER E WITH ACUTE
+0x83 U+00e2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x84 U+00e4 # LATIN SMALL LETTER A WITH DIAERESIS
+0x85 U+00e0 # LATIN SMALL LETTER A WITH GRAVE
+0x86 U+00e5 # LATIN SMALL LETTER A WITH RING ABOVE
+0x87 U+00e7 # LATIN SMALL LETTER C WITH CEDILLA
+0x88 U+00ea # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x89 U+00eb # LATIN SMALL LETTER E WITH DIAERESIS
+0x8a U+00e8 # LATIN SMALL LETTER E WITH GRAVE
+0x8b U+00ef # LATIN SMALL LETTER I WITH DIAERESIS
+0x8c U+00ee # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x8d U+00ec # LATIN SMALL LETTER I WITH GRAVE
+0x8e U+00c4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x8f U+00c5 # LATIN CAPITAL LETTER A WITH RING ABOVE
+0x90 U+00c9 # LATIN CAPITAL LETTER E WITH ACUTE
+0x91 U+00e6 # LATIN SMALL LIGATURE AE
+0x92 U+00c6 # LATIN CAPITAL LIGATURE AE
+0x93 U+00f4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x94 U+00f6 # LATIN SMALL LETTER O WITH DIAERESIS
+0x95 U+00f2 # LATIN SMALL LETTER O WITH GRAVE
+0x96 U+00fb # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x97 U+00f9 # LATIN SMALL LETTER U WITH GRAVE
+0x98 U+00ff # LATIN SMALL LETTER Y WITH DIAERESIS
+0x99 U+00d6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x9a U+00dc # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x9b U+00f8 # LATIN SMALL LETTER O WITH STROKE
+0x9c U+00a3 # POUND SIGN
+0x9d U+00d8 # LATIN CAPITAL LETTER O WITH STROKE
+0x9e U+00d7 # MULTIPLICATION SIGN
+0x9f U+0192 # LATIN SMALL LETTER F WITH HOOK
+0xa0 U+00e1 # LATIN SMALL LETTER A WITH ACUTE
+0xa1 U+00ed # LATIN SMALL LETTER I WITH ACUTE
+0xa2 U+00f3 # LATIN SMALL LETTER O WITH ACUTE
+0xa3 U+00fa # LATIN SMALL LETTER U WITH ACUTE
+0xa4 U+00f1 # LATIN SMALL LETTER N WITH TILDE
+0xa5 U+00d1 # LATIN CAPITAL LETTER N WITH TILDE
+0xa6 U+00aa # FEMININE ORDINAL INDICATOR
+0xa7 U+00ba # MASCULINE ORDINAL INDICATOR
+0xa8 U+00bf # INVERTED QUESTION MARK
+0xa9 U+00ae # REGISTERED SIGN
+0xaa U+00ac # NOT SIGN
+0xab U+00bd # VULGAR FRACTION ONE HALF
+0xac U+00bc # VULGAR FRACTION ONE QUARTER
+0xad U+00a1 # INVERTED EXCLAMATION MARK
+0xae U+00ab # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xaf U+00bb # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xb0 U+2591 # LIGHT SHADE
+0xb1 U+2592 # MEDIUM SHADE
+0xb2 U+2593 # DARK SHADE
+0xb3 U+2502 # BOX DRAWINGS LIGHT VERTICAL
+0xb4 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5 U+00c1 # LATIN CAPITAL LETTER A WITH ACUTE
+0xb6 U+00c2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xb7 U+00c0 # LATIN CAPITAL LETTER A WITH GRAVE
+0xb8 U+00a9 # COPYRIGHT SIGN
+0xb9 U+2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba U+2551 # BOX DRAWINGS DOUBLE VERTICAL
+0xbb U+2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc U+255d # BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd U+00a2 # CENT SIGN
+0xbe U+00a5 # YEN SIGN
+0xbf U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2 U+252c # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3 U+251c # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4 U+2500 # BOX DRAWINGS LIGHT HORIZONTAL
+0xc5 U+253c # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6 U+00e3 # LATIN SMALL LETTER A WITH TILDE
+0xc7 U+00c3 # LATIN CAPITAL LETTER A WITH TILDE
+0xc8 U+255a # BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9 U+2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca U+2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb U+2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc U+2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd U+2550 # BOX DRAWINGS DOUBLE HORIZONTAL
+0xce U+256c # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf U+00a4 # CURRENCY SIGN
+0xd0 U+00f0 # LATIN SMALL LETTER ETH
+0xd1 U+00d0 # LATIN CAPITAL LETTER ETH
+0xd2 U+00ca # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0xd3 U+00cb # LATIN CAPITAL LETTER E WITH DIAERESIS
+0xd4 U+00c8 # LATIN CAPITAL LETTER E WITH GRAVE
+0xd5 U+0131 # LATIN SMALL LETTER DOTLESS I
+0xd6 U+00cd # LATIN CAPITAL LETTER I WITH ACUTE
+0xd7 U+00ce # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xd8 U+00cf # LATIN CAPITAL LETTER I WITH DIAERESIS
+0xd9 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT
+0xda U+250c # BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb U+2588 # FULL BLOCK
+0xdc U+2584 # LOWER HALF BLOCK
+0xdd U+00a6 # BROKEN BAR
+0xde U+00cc # LATIN CAPITAL LETTER I WITH GRAVE
+0xdf U+2580 # UPPER HALF BLOCK
+0xe0 U+00d3 # LATIN CAPITAL LETTER O WITH ACUTE
+0xe1 U+00df # LATIN SMALL LETTER SHARP S
+0xe2 U+00d4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xe3 U+00d2 # LATIN CAPITAL LETTER O WITH GRAVE
+0xe4 U+00f5 # LATIN SMALL LETTER O WITH TILDE
+0xe5 U+00d5 # LATIN CAPITAL LETTER O WITH TILDE
+0xe6 U+00b5 # MICRO SIGN
+0xe7 U+00fe # LATIN SMALL LETTER THORN
+0xe8 U+00de # LATIN CAPITAL LETTER THORN
+0xe9 U+00da # LATIN CAPITAL LETTER U WITH ACUTE
+0xea U+00db # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0xeb U+00d9 # LATIN CAPITAL LETTER U WITH GRAVE
+0xec U+00fd # LATIN SMALL LETTER Y WITH ACUTE
+0xed U+00dd # LATIN CAPITAL LETTER Y WITH ACUTE
+0xee U+00af # MACRON
+0xef U+00b4 # ACUTE ACCENT
+0xf0 U+00ad # SOFT HYPHEN
+0xf1 U+00b1 # PLUS-MINUS SIGN
+0xf2 U+2017 # DOUBLE LOW LINE
+0xf3 U+00be # VULGAR FRACTION THREE QUARTERS
+0xf4 U+00b6 # PILCROW SIGN
+0xf5 U+00a7 # SECTION SIGN
+0xf6 U+00f7 # DIVISION SIGN
+0xf7 U+00b8 # CEDILLA
+0xf8 U+00b0 # DEGREE SIGN
+0xf9 U+00a8 # DIAERESIS
+0xfa U+00b7 # MIDDLE DOT
+0xfb U+00b9 # SUPERSCRIPT ONE
+0xfc U+00b3 # SUPERSCRIPT THREE
+0xfd U+00b2 # SUPERSCRIPT TWO
+0xfe U+25a0 # BLACK SQUARE
+0xff U+00a0 # NO-BREAK SPACE
--- /dev/null
+# cp850a
+# This is cp850, but with positions 0-31 replaced by cp437 symbols
+# first 32 positions of cp437
+0x000 U+fffd
+0x001 U+263a
+0x002 U+263b
+0x003 U+2665
+0x004 U+2666
+0x005 U+2663
+0x006 U+2660
+0x007 U+2022
+0x008 U+25d8
+0x009 U+25cb
+0x00a U+25d9
+0x00b U+2642
+0x00c U+2640
+0x00d U+266a
+0x00e U+266b
+0x00f U+263c
+0x010 U+25ba
+0x011 U+25c4
+0x012 U+2195
+0x013 U+203c
+0x014 U+00b6
+0x015 U+00a7
+0x016 U+25ac
+0x017 U+21a8
+0x018 U+2191
+0x019 U+2193
+0x01a U+2192
+0x01b U+2190
+0x01c U+221f
+0x01d U+2194
+0x01e U+25b2
+0x01f U+25bc
+# then ASCII
+0x020-0x07f idem
+#
+0x80 U+00c7 # LATIN CAPITAL LETTER C WITH CEDILLA
+0x81 U+00fc # LATIN SMALL LETTER U WITH DIAERESIS
+0x82 U+00e9 # LATIN SMALL LETTER E WITH ACUTE
+0x83 U+00e2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x84 U+00e4 # LATIN SMALL LETTER A WITH DIAERESIS
+0x85 U+00e0 # LATIN SMALL LETTER A WITH GRAVE
+0x86 U+00e5 # LATIN SMALL LETTER A WITH RING ABOVE
+0x87 U+00e7 # LATIN SMALL LETTER C WITH CEDILLA
+0x88 U+00ea # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x89 U+00eb # LATIN SMALL LETTER E WITH DIAERESIS
+0x8a U+00e8 # LATIN SMALL LETTER E WITH GRAVE
+0x8b U+00ef # LATIN SMALL LETTER I WITH DIAERESIS
+0x8c U+00ee # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x8d U+00ec # LATIN SMALL LETTER I WITH GRAVE
+0x8e U+00c4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x8f U+00c5 # LATIN CAPITAL LETTER A WITH RING ABOVE
+0x90 U+00c9 # LATIN CAPITAL LETTER E WITH ACUTE
+0x91 U+00e6 # LATIN SMALL LIGATURE AE
+0x92 U+00c6 # LATIN CAPITAL LIGATURE AE
+0x93 U+00f4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x94 U+00f6 # LATIN SMALL LETTER O WITH DIAERESIS
+0x95 U+00f2 # LATIN SMALL LETTER O WITH GRAVE
+0x96 U+00fb # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x97 U+00f9 # LATIN SMALL LETTER U WITH GRAVE
+0x98 U+00ff # LATIN SMALL LETTER Y WITH DIAERESIS
+0x99 U+00d6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x9a U+00dc # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x9b U+00f8 # LATIN SMALL LETTER O WITH STROKE
+0x9c U+00a3 # POUND SIGN
+0x9d U+00d8 # LATIN CAPITAL LETTER O WITH STROKE
+0x9e U+00d7 # MULTIPLICATION SIGN
+0x9f U+0192 # LATIN SMALL LETTER F WITH HOOK
+0xa0 U+00e1 # LATIN SMALL LETTER A WITH ACUTE
+0xa1 U+00ed # LATIN SMALL LETTER I WITH ACUTE
+0xa2 U+00f3 # LATIN SMALL LETTER O WITH ACUTE
+0xa3 U+00fa # LATIN SMALL LETTER U WITH ACUTE
+0xa4 U+00f1 # LATIN SMALL LETTER N WITH TILDE
+0xa5 U+00d1 # LATIN CAPITAL LETTER N WITH TILDE
+0xa6 U+00aa # FEMININE ORDINAL INDICATOR
+0xa7 U+00ba # MASCULINE ORDINAL INDICATOR
+0xa8 U+00bf # INVERTED QUESTION MARK
+0xa9 U+00ae # REGISTERED SIGN
+0xaa U+00ac # NOT SIGN
+0xab U+00bd # VULGAR FRACTION ONE HALF
+0xac U+00bc # VULGAR FRACTION ONE QUARTER
+0xad U+00a1 # INVERTED EXCLAMATION MARK
+0xae U+00ab # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xaf U+00bb # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xb0 U+2591 # LIGHT SHADE
+0xb1 U+2592 # MEDIUM SHADE
+0xb2 U+2593 # DARK SHADE
+0xb3 U+2502 # BOX DRAWINGS LIGHT VERTICAL
+0xb4 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5 U+00c1 # LATIN CAPITAL LETTER A WITH ACUTE
+0xb6 U+00c2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xb7 U+00c0 # LATIN CAPITAL LETTER A WITH GRAVE
+0xb8 U+00a9 # COPYRIGHT SIGN
+0xb9 U+2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba U+2551 # BOX DRAWINGS DOUBLE VERTICAL
+0xbb U+2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc U+255d # BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd U+00a2 # CENT SIGN
+0xbe U+00a5 # YEN SIGN
+0xbf U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2 U+252c # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3 U+251c # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4 U+2500 # BOX DRAWINGS LIGHT HORIZONTAL
+0xc5 U+253c # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6 U+00e3 # LATIN SMALL LETTER A WITH TILDE
+0xc7 U+00c3 # LATIN CAPITAL LETTER A WITH TILDE
+0xc8 U+255a # BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9 U+2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca U+2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb U+2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc U+2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd U+2550 # BOX DRAWINGS DOUBLE HORIZONTAL
+0xce U+256c # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf U+00a4 # CURRENCY SIGN
+0xd0 U+00f0 # LATIN SMALL LETTER ETH
+0xd1 U+00d0 # LATIN CAPITAL LETTER ETH
+0xd2 U+00ca # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0xd3 U+00cb # LATIN CAPITAL LETTER E WITH DIAERESIS
+0xd4 U+00c8 # LATIN CAPITAL LETTER E WITH GRAVE
+0xd5 U+0131 # LATIN SMALL LETTER DOTLESS I
+0xd6 U+00cd # LATIN CAPITAL LETTER I WITH ACUTE
+0xd7 U+00ce # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xd8 U+00cf # LATIN CAPITAL LETTER I WITH DIAERESIS
+0xd9 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT
+0xda U+250c # BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb U+2588 # FULL BLOCK
+0xdc U+2584 # LOWER HALF BLOCK
+0xdd U+00a6 # BROKEN BAR
+0xde U+00cc # LATIN CAPITAL LETTER I WITH GRAVE
+0xdf U+2580 # UPPER HALF BLOCK
+0xe0 U+00d3 # LATIN CAPITAL LETTER O WITH ACUTE
+0xe1 U+00df # LATIN SMALL LETTER SHARP S
+0xe2 U+00d4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xe3 U+00d2 # LATIN CAPITAL LETTER O WITH GRAVE
+0xe4 U+00f5 # LATIN SMALL LETTER O WITH TILDE
+0xe5 U+00d5 # LATIN CAPITAL LETTER O WITH TILDE
+0xe6 U+00b5 # MICRO SIGN
+0xe7 U+00fe # LATIN SMALL LETTER THORN
+0xe8 U+00de # LATIN CAPITAL LETTER THORN
+0xe9 U+00da # LATIN CAPITAL LETTER U WITH ACUTE
+0xea U+00db # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0xeb U+00d9 # LATIN CAPITAL LETTER U WITH GRAVE
+0xec U+00fd # LATIN SMALL LETTER Y WITH ACUTE
+0xed U+00dd # LATIN CAPITAL LETTER Y WITH ACUTE
+0xee U+00af # MACRON
+0xef U+00b4 # ACUTE ACCENT
+0xf0 U+00ad # SOFT HYPHEN
+0xf1 U+00b1 # PLUS-MINUS SIGN
+0xf2 U+2017 # DOUBLE LOW LINE
+0xf3 U+00be # VULGAR FRACTION THREE QUARTERS
+0xf4 U+00b6 # PILCROW SIGN
+0xf5 U+00a7 # SECTION SIGN
+0xf6 U+00f7 # DIVISION SIGN
+0xf7 U+00b8 # CEDILLA
+0xf8 U+00b0 # DEGREE SIGN
+0xf9 U+00a8 # DIAERESIS
+0xfa U+00b7 # MIDDLE DOT
+0xfb U+00b9 # SUPERSCRIPT ONE
+0xfc U+00b3 # SUPERSCRIPT THREE
+0xfd U+00b2 # SUPERSCRIPT TWO
+0xfe U+25a0 # BLACK SQUARE
+0xff U+00a0 # NO-BREAK SPACE
--- /dev/null
+# cp865
+0x00-0x7f idem
+#
+0x80 U+00c7 # LATIN CAPITAL LETTER C WITH CEDILLA
+0x81 U+00fc # LATIN SMALL LETTER U WITH DIAERESIS
+0x82 U+00e9 # LATIN SMALL LETTER E WITH ACUTE
+0x83 U+00e2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x84 U+00e4 # LATIN SMALL LETTER A WITH DIAERESIS
+0x85 U+00e0 # LATIN SMALL LETTER A WITH GRAVE
+0x86 U+00e5 # LATIN SMALL LETTER A WITH RING ABOVE
+0x87 U+00e7 # LATIN SMALL LETTER C WITH CEDILLA
+0x88 U+00ea # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x89 U+00eb # LATIN SMALL LETTER E WITH DIAERESIS
+0x8a U+00e8 # LATIN SMALL LETTER E WITH GRAVE
+0x8b U+00ef # LATIN SMALL LETTER I WITH DIAERESIS
+0x8c U+00ee # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x8d U+00ec # LATIN SMALL LETTER I WITH GRAVE
+0x8e U+00c4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x8f U+00c5 # LATIN CAPITAL LETTER A WITH RING ABOVE
+0x90 U+00c9 # LATIN CAPITAL LETTER E WITH ACUTE
+0x91 U+00e6 # LATIN SMALL LIGATURE AE
+0x92 U+00c6 # LATIN CAPITAL LIGATURE AE
+0x93 U+00f4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x94 U+00f6 # LATIN SMALL LETTER O WITH DIAERESIS
+0x95 U+00f2 # LATIN SMALL LETTER O WITH GRAVE
+0x96 U+00fb # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x97 U+00f9 # LATIN SMALL LETTER U WITH GRAVE
+0x98 U+00ff # LATIN SMALL LETTER Y WITH DIAERESIS
+0x99 U+00d6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x9a U+00dc # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x9b U+00f8 # LATIN SMALL LETTER O WITH STROKE
+0x9c U+00a3 # POUND SIGN
+0x9d U+00d8 # LATIN CAPITAL LETTER O WITH STROKE
+0x9e U+20a7 # PESETA SIGN
+0x9f U+0192 # LATIN SMALL LETTER F WITH HOOK
+0xa0 U+00e1 # LATIN SMALL LETTER A WITH ACUTE
+0xa1 U+00ed # LATIN SMALL LETTER I WITH ACUTE
+0xa2 U+00f3 # LATIN SMALL LETTER O WITH ACUTE
+0xa3 U+00fa # LATIN SMALL LETTER U WITH ACUTE
+0xa4 U+00f1 # LATIN SMALL LETTER N WITH TILDE
+0xa5 U+00d1 # LATIN CAPITAL LETTER N WITH TILDE
+0xa6 U+00aa # FEMININE ORDINAL INDICATOR
+0xa7 U+00ba # MASCULINE ORDINAL INDICATOR
+0xa8 U+00bf # INVERTED QUESTION MARK
+0xa9 U+2310 # REVERSED NOT SIGN
+0xaa U+00ac # NOT SIGN
+0xab U+00bd # VULGAR FRACTION ONE HALF
+0xac U+00bc # VULGAR FRACTION ONE QUARTER
+0xad U+00a1 # INVERTED EXCLAMATION MARK
+0xae U+00ab # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xaf U+00a4 # CURRENCY SIGN
+0xb0 U+2591 # LIGHT SHADE
+0xb1 U+2592 # MEDIUM SHADE
+0xb2 U+2593 # DARK SHADE
+0xb3 U+2502 # BOX DRAWINGS LIGHT VERTICAL
+0xb4 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5 U+2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+0xb6 U+2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+0xb7 U+2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+0xb8 U+2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+0xb9 U+2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba U+2551 # BOX DRAWINGS DOUBLE VERTICAL
+0xbb U+2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc U+255d # BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd U+255c # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+0xbe U+255b # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+0xbf U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2 U+252c # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3 U+251c # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4 U+2500 # BOX DRAWINGS LIGHT HORIZONTAL
+0xc5 U+253c # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6 U+255e # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+0xc7 U+255f # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+0xc8 U+255a # BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9 U+2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca U+2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb U+2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc U+2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd U+2550 # BOX DRAWINGS DOUBLE HORIZONTAL
+0xce U+256c # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf U+2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+0xd0 U+2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+0xd1 U+2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+0xd2 U+2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+0xd3 U+2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+0xd4 U+2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+0xd5 U+2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+0xd6 U+2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+0xd7 U+256b # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+0xd8 U+256a # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+0xd9 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT
+0xda U+250c # BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb U+2588 # FULL BLOCK
+0xdc U+2584 # LOWER HALF BLOCK
+0xdd U+258c # LEFT HALF BLOCK
+0xde U+2590 # RIGHT HALF BLOCK
+0xdf U+2580 # UPPER HALF BLOCK
+0xe0 U+03b1 # GREEK SMALL LETTER ALPHA
+0xe1 U+00df # LATIN SMALL LETTER SHARP S
+0xe2 U+0393 # GREEK CAPITAL LETTER GAMMA
+0xe3 U+03c0 # GREEK SMALL LETTER PI
+0xe4 U+03a3 # GREEK CAPITAL LETTER SIGMA
+0xe5 U+03c3 # GREEK SMALL LETTER SIGMA
+0xe6 U+00b5 # MICRO SIGN
+0xe7 U+03c4 # GREEK SMALL LETTER TAU
+0xe8 U+03a6 # GREEK CAPITAL LETTER PHI
+0xe9 U+0398 # GREEK CAPITAL LETTER THETA
+0xea U+03a9 # GREEK CAPITAL LETTER OMEGA
+0xeb U+03b4 # GREEK SMALL LETTER DELTA
+0xec U+221e # INFINITY
+0xed U+03c6 # GREEK SMALL LETTER PHI
+0xee U+03b5 # GREEK SMALL LETTER EPSILON
+0xef U+2229 # INTERSECTION
+0xf0 U+2261 # IDENTICAL TO
+0xf1 U+00b1 # PLUS-MINUS SIGN
+0xf2 U+2265 # GREATER-THAN OR EQUAL TO
+0xf3 U+2264 # LESS-THAN OR EQUAL TO
+0xf4 U+2320 # TOP HALF INTEGRAL
+0xf5 U+2321 # BOTTOM HALF INTEGRAL
+0xf6 U+00f7 # DIVISION SIGN
+0xf7 U+2248 # ALMOST EQUAL TO
+0xf8 U+00b0 # DEGREE SIGN
+0xf9 U+2219 # BULLET OPERATOR
+0xfa U+00b7 # MIDDLE DOT
+0xfb U+221a # SQUARE ROOT
+0xfc U+207f # SUPERSCRIPT LATIN SMALL LETTER N
+0xfd U+00b2 # SUPERSCRIPT TWO
+0xfe U+25a0 # BLACK SQUARE
+0xff U+00a0 # NO-BREAK SPACE
--- /dev/null
+# cp865
+# This is cp865, but with positions 0-31 replaced by cp437 symbols
+# first 32 positions of cp437
+0x000 U+fffd
+0x001 U+263a
+0x002 U+263b
+0x003 U+2665
+0x004 U+2666
+0x005 U+2663
+0x006 U+2660
+0x007 U+2022
+0x008 U+25d8
+0x009 U+25cb
+0x00a U+25d9
+0x00b U+2642
+0x00c U+2640
+0x00d U+266a
+0x00e U+266b
+0x00f U+263c
+0x010 U+25ba
+0x011 U+25c4
+0x012 U+2195
+0x013 U+203c
+0x014 U+00b6
+0x015 U+00a7
+0x016 U+25ac
+0x017 U+21a8
+0x018 U+2191
+0x019 U+2193
+0x01a U+2192
+0x01b U+2190
+0x01c U+221f
+0x01d U+2194
+0x01e U+25b2
+0x01f U+25bc
+# then ASCII
+0x020-0x07f idem
+#
+0x80 U+00c7 # LATIN CAPITAL LETTER C WITH CEDILLA
+0x81 U+00fc # LATIN SMALL LETTER U WITH DIAERESIS
+0x82 U+00e9 # LATIN SMALL LETTER E WITH ACUTE
+0x83 U+00e2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x84 U+00e4 # LATIN SMALL LETTER A WITH DIAERESIS
+0x85 U+00e0 # LATIN SMALL LETTER A WITH GRAVE
+0x86 U+00e5 # LATIN SMALL LETTER A WITH RING ABOVE
+0x87 U+00e7 # LATIN SMALL LETTER C WITH CEDILLA
+0x88 U+00ea # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x89 U+00eb # LATIN SMALL LETTER E WITH DIAERESIS
+0x8a U+00e8 # LATIN SMALL LETTER E WITH GRAVE
+0x8b U+00ef # LATIN SMALL LETTER I WITH DIAERESIS
+0x8c U+00ee # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x8d U+00ec # LATIN SMALL LETTER I WITH GRAVE
+0x8e U+00c4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x8f U+00c5 # LATIN CAPITAL LETTER A WITH RING ABOVE
+0x90 U+00c9 # LATIN CAPITAL LETTER E WITH ACUTE
+0x91 U+00e6 # LATIN SMALL LIGATURE AE
+0x92 U+00c6 # LATIN CAPITAL LIGATURE AE
+0x93 U+00f4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x94 U+00f6 # LATIN SMALL LETTER O WITH DIAERESIS
+0x95 U+00f2 # LATIN SMALL LETTER O WITH GRAVE
+0x96 U+00fb # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x97 U+00f9 # LATIN SMALL LETTER U WITH GRAVE
+0x98 U+00ff # LATIN SMALL LETTER Y WITH DIAERESIS
+0x99 U+00d6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x9a U+00dc # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x9b U+00f8 # LATIN SMALL LETTER O WITH STROKE
+0x9c U+00a3 # POUND SIGN
+0x9d U+00d8 # LATIN CAPITAL LETTER O WITH STROKE
+0x9e U+20a7 # PESETA SIGN
+0x9f U+0192 # LATIN SMALL LETTER F WITH HOOK
+0xa0 U+00e1 # LATIN SMALL LETTER A WITH ACUTE
+0xa1 U+00ed # LATIN SMALL LETTER I WITH ACUTE
+0xa2 U+00f3 # LATIN SMALL LETTER O WITH ACUTE
+0xa3 U+00fa # LATIN SMALL LETTER U WITH ACUTE
+0xa4 U+00f1 # LATIN SMALL LETTER N WITH TILDE
+0xa5 U+00d1 # LATIN CAPITAL LETTER N WITH TILDE
+0xa6 U+00aa # FEMININE ORDINAL INDICATOR
+0xa7 U+00ba # MASCULINE ORDINAL INDICATOR
+0xa8 U+00bf # INVERTED QUESTION MARK
+0xa9 U+2310 # REVERSED NOT SIGN
+0xaa U+00ac # NOT SIGN
+0xab U+00bd # VULGAR FRACTION ONE HALF
+0xac U+00bc # VULGAR FRACTION ONE QUARTER
+0xad U+00a1 # INVERTED EXCLAMATION MARK
+0xae U+00ab # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xaf U+00a4 # CURRENCY SIGN
+0xb0 U+2591 # LIGHT SHADE
+0xb1 U+2592 # MEDIUM SHADE
+0xb2 U+2593 # DARK SHADE
+0xb3 U+2502 # BOX DRAWINGS LIGHT VERTICAL
+0xb4 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5 U+2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+0xb6 U+2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+0xb7 U+2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+0xb8 U+2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+0xb9 U+2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba U+2551 # BOX DRAWINGS DOUBLE VERTICAL
+0xbb U+2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc U+255d # BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd U+255c # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+0xbe U+255b # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+0xbf U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2 U+252c # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3 U+251c # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4 U+2500 # BOX DRAWINGS LIGHT HORIZONTAL
+0xc5 U+253c # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6 U+255e # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+0xc7 U+255f # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+0xc8 U+255a # BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9 U+2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca U+2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb U+2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc U+2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd U+2550 # BOX DRAWINGS DOUBLE HORIZONTAL
+0xce U+256c # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf U+2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+0xd0 U+2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+0xd1 U+2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+0xd2 U+2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+0xd3 U+2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+0xd4 U+2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+0xd5 U+2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+0xd6 U+2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+0xd7 U+256b # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+0xd8 U+256a # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+0xd9 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT
+0xda U+250c # BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb U+2588 # FULL BLOCK
+0xdc U+2584 # LOWER HALF BLOCK
+0xdd U+258c # LEFT HALF BLOCK
+0xde U+2590 # RIGHT HALF BLOCK
+0xdf U+2580 # UPPER HALF BLOCK
+0xe0 U+03b1 # GREEK SMALL LETTER ALPHA
+0xe1 U+00df # LATIN SMALL LETTER SHARP S
+0xe2 U+0393 # GREEK CAPITAL LETTER GAMMA
+0xe3 U+03c0 # GREEK SMALL LETTER PI
+0xe4 U+03a3 # GREEK CAPITAL LETTER SIGMA
+0xe5 U+03c3 # GREEK SMALL LETTER SIGMA
+0xe6 U+00b5 # MICRO SIGN
+0xe7 U+03c4 # GREEK SMALL LETTER TAU
+0xe8 U+03a6 # GREEK CAPITAL LETTER PHI
+0xe9 U+0398 # GREEK CAPITAL LETTER THETA
+0xea U+03a9 # GREEK CAPITAL LETTER OMEGA
+0xeb U+03b4 # GREEK SMALL LETTER DELTA
+0xec U+221e # INFINITY
+0xed U+03c6 # GREEK SMALL LETTER PHI
+0xee U+03b5 # GREEK SMALL LETTER EPSILON
+0xef U+2229 # INTERSECTION
+0xf0 U+2261 # IDENTICAL TO
+0xf1 U+00b1 # PLUS-MINUS SIGN
+0xf2 U+2265 # GREATER-THAN OR EQUAL TO
+0xf3 U+2264 # LESS-THAN OR EQUAL TO
+0xf4 U+2320 # TOP HALF INTEGRAL
+0xf5 U+2321 # BOTTOM HALF INTEGRAL
+0xf6 U+00f7 # DIVISION SIGN
+0xf7 U+2248 # ALMOST EQUAL TO
+0xf8 U+00b0 # DEGREE SIGN
+0xf9 U+2219 # BULLET OPERATOR
+0xfa U+00b7 # MIDDLE DOT
+0xfb U+221a # SQUARE ROOT
+0xfc U+207f # SUPERSCRIPT LATIN SMALL LETTER N
+0xfd U+00b2 # SUPERSCRIPT TWO
+0xfe U+25a0 # BLACK SQUARE
+0xff U+00a0 # NO-BREAK SPACE
--- /dev/null
+# cp866
+0x00-0x7f idem
+#
+0x80 U+0410 # CYRILLIC CAPITAL LETTER A
+0x81 U+0411 # CYRILLIC CAPITAL LETTER BE
+0x82 U+0412 # CYRILLIC CAPITAL LETTER VE
+0x83 U+0413 # CYRILLIC CAPITAL LETTER GHE
+0x84 U+0414 # CYRILLIC CAPITAL LETTER DE
+0x85 U+0415 # CYRILLIC CAPITAL LETTER IE
+0x86 U+0416 # CYRILLIC CAPITAL LETTER ZHE
+0x87 U+0417 # CYRILLIC CAPITAL LETTER ZE
+0x88 U+0418 # CYRILLIC CAPITAL LETTER I
+0x89 U+0419 # CYRILLIC CAPITAL LETTER SHORT I
+0x8a U+041a # CYRILLIC CAPITAL LETTER KA
+0x8b U+041b # CYRILLIC CAPITAL LETTER EL
+0x8c U+041c # CYRILLIC CAPITAL LETTER EM
+0x8d U+041d # CYRILLIC CAPITAL LETTER EN
+0x8e U+041e # CYRILLIC CAPITAL LETTER O
+0x8f U+041f # CYRILLIC CAPITAL LETTER PE
+0x90 U+0420 # CYRILLIC CAPITAL LETTER ER
+0x91 U+0421 # CYRILLIC CAPITAL LETTER ES
+0x92 U+0422 # CYRILLIC CAPITAL LETTER TE
+0x93 U+0423 # CYRILLIC CAPITAL LETTER U
+0x94 U+0424 # CYRILLIC CAPITAL LETTER EF
+0x95 U+0425 # CYRILLIC CAPITAL LETTER HA
+0x96 U+0426 # CYRILLIC CAPITAL LETTER TSE
+0x97 U+0427 # CYRILLIC CAPITAL LETTER CHE
+0x98 U+0428 # CYRILLIC CAPITAL LETTER SHA
+0x99 U+0429 # CYRILLIC CAPITAL LETTER SHCHA
+0x9a U+042a # CYRILLIC CAPITAL LETTER HARD SIGN
+0x9b U+042b # CYRILLIC CAPITAL LETTER YERU
+0x9c U+042c # CYRILLIC CAPITAL LETTER SOFT SIGN
+0x9d U+042d # CYRILLIC CAPITAL LETTER E
+0x9e U+042e # CYRILLIC CAPITAL LETTER YU
+0x9f U+042f # CYRILLIC CAPITAL LETTER YA
+0xa0 U+0430 # CYRILLIC SMALL LETTER A
+0xa1 U+0431 # CYRILLIC SMALL LETTER BE
+0xa2 U+0432 # CYRILLIC SMALL LETTER VE
+0xa3 U+0433 # CYRILLIC SMALL LETTER GHE
+0xa4 U+0434 # CYRILLIC SMALL LETTER DE
+0xa5 U+0435 # CYRILLIC SMALL LETTER IE
+0xa6 U+0436 # CYRILLIC SMALL LETTER ZHE
+0xa7 U+0437 # CYRILLIC SMALL LETTER ZE
+0xa8 U+0438 # CYRILLIC SMALL LETTER I
+0xa9 U+0439 # CYRILLIC SMALL LETTER SHORT I
+0xaa U+043a # CYRILLIC SMALL LETTER KA
+0xab U+043b # CYRILLIC SMALL LETTER EL
+0xac U+043c # CYRILLIC SMALL LETTER EM
+0xad U+043d # CYRILLIC SMALL LETTER EN
+0xae U+043e # CYRILLIC SMALL LETTER O
+0xaf U+043f # CYRILLIC SMALL LETTER PE
+0xb0 U+2591 # LIGHT SHADE
+0xb1 U+2592 # MEDIUM SHADE
+0xb2 U+2593 # DARK SHADE
+0xb3 U+2502 # BOX DRAWINGS LIGHT VERTICAL
+0xb4 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5 U+2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+0xb6 U+2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+0xb7 U+2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+0xb8 U+2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+0xb9 U+2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba U+2551 # BOX DRAWINGS DOUBLE VERTICAL
+0xbb U+2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc U+255d # BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd U+255c # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+0xbe U+255b # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+0xbf U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2 U+252c # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3 U+251c # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4 U+2500 # BOX DRAWINGS LIGHT HORIZONTAL
+0xc5 U+253c # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6 U+255e # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+0xc7 U+255f # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+0xc8 U+255a # BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9 U+2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca U+2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb U+2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc U+2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd U+2550 # BOX DRAWINGS DOUBLE HORIZONTAL
+0xce U+256c # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf U+2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+0xd0 U+2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+0xd1 U+2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+0xd2 U+2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+0xd3 U+2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+0xd4 U+2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+0xd5 U+2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+0xd6 U+2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+0xd7 U+256b # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+0xd8 U+256a # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+0xd9 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT
+0xda U+250c # BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb U+2588 # FULL BLOCK
+0xdc U+2584 # LOWER HALF BLOCK
+0xdd U+258c # LEFT HALF BLOCK
+0xde U+2590 # RIGHT HALF BLOCK
+0xdf U+2580 # UPPER HALF BLOCK
+0xe0 U+0440 # CYRILLIC SMALL LETTER ER
+0xe1 U+0441 # CYRILLIC SMALL LETTER ES
+0xe2 U+0442 # CYRILLIC SMALL LETTER TE
+0xe3 U+0443 # CYRILLIC SMALL LETTER U
+0xe4 U+0444 # CYRILLIC SMALL LETTER EF
+0xe5 U+0445 # CYRILLIC SMALL LETTER HA
+0xe6 U+0446 # CYRILLIC SMALL LETTER TSE
+0xe7 U+0447 # CYRILLIC SMALL LETTER CHE
+0xe8 U+0448 # CYRILLIC SMALL LETTER SHA
+0xe9 U+0449 # CYRILLIC SMALL LETTER SHCHA
+0xea U+044a # CYRILLIC SMALL LETTER HARD SIGN
+0xeb U+044b # CYRILLIC SMALL LETTER YERU
+0xec U+044c # CYRILLIC SMALL LETTER SOFT SIGN
+0xed U+044d # CYRILLIC SMALL LETTER E
+0xee U+044e # CYRILLIC SMALL LETTER YU
+0xef U+044f # CYRILLIC SMALL LETTER YA
+0xf0 U+0401 # CYRILLIC CAPITAL LETTER IO
+0xf1 U+0451 # CYRILLIC SMALL LETTER IO
+0xf2 U+0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0xf3 U+0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
+0xf4 U+0407 # CYRILLIC CAPITAL LETTER YI
+0xf5 U+0457 # CYRILLIC SMALL LETTER YI
+0xf6 U+040e # CYRILLIC CAPITAL LETTER SHORT U
+0xf7 U+045e # CYRILLIC SMALL LETTER SHORT U
+0xf8 U+00b0 # DEGREE SIGN
+0xf9 U+2219 # BULLET OPERATOR
+0xfa U+00b7 # MIDDLE DOT
+0xfb U+221a # SQUARE ROOT
+0xfc U+2116 # NUMERO SIGN
+0xfd U+00a4 # CURRENCY SIGN
+0xfe U+25a0 # BLACK SQUARE
+0xff U+00a0 # NO-BREAK SPACE
--- /dev/null
+# This is cp865, but with positions 0-31 replaced by cp437 symbols
+# first 32 positions of cp437
+0x000 U+fffd
+0x001 U+263a
+0x002 U+263b
+0x003 U+2665
+0x004 U+2666
+0x005 U+2663
+0x006 U+2660
+0x007 U+2022
+0x008 U+25d8
+0x009 U+25cb
+0x00a U+25d9
+0x00b U+2642
+0x00c U+2640
+0x00d U+266a
+0x00e U+266b
+0x00f U+263c
+0x010 U+25ba
+0x011 U+25c4
+0x012 U+2195
+0x013 U+203c
+0x014 U+00b6
+0x015 U+00a7
+0x016 U+25ac
+0x017 U+21a8
+0x018 U+2191
+0x019 U+2193
+0x01a U+2192
+0x01b U+2190
+0x01c U+221f
+0x01d U+2194
+0x01e U+25b2
+0x01f U+25bc
+# then ASCII
+0x20-0x7f idem
+#
+0x80 U+0410 # CYRILLIC CAPITAL LETTER A
+0x81 U+0411 # CYRILLIC CAPITAL LETTER BE
+0x82 U+0412 # CYRILLIC CAPITAL LETTER VE
+0x83 U+0413 # CYRILLIC CAPITAL LETTER GHE
+0x84 U+0414 # CYRILLIC CAPITAL LETTER DE
+0x85 U+0415 # CYRILLIC CAPITAL LETTER IE
+0x86 U+0416 # CYRILLIC CAPITAL LETTER ZHE
+0x87 U+0417 # CYRILLIC CAPITAL LETTER ZE
+0x88 U+0418 # CYRILLIC CAPITAL LETTER I
+0x89 U+0419 # CYRILLIC CAPITAL LETTER SHORT I
+0x8a U+041a # CYRILLIC CAPITAL LETTER KA
+0x8b U+041b # CYRILLIC CAPITAL LETTER EL
+0x8c U+041c # CYRILLIC CAPITAL LETTER EM
+0x8d U+041d # CYRILLIC CAPITAL LETTER EN
+0x8e U+041e # CYRILLIC CAPITAL LETTER O
+0x8f U+041f # CYRILLIC CAPITAL LETTER PE
+0x90 U+0420 # CYRILLIC CAPITAL LETTER ER
+0x91 U+0421 # CYRILLIC CAPITAL LETTER ES
+0x92 U+0422 # CYRILLIC CAPITAL LETTER TE
+0x93 U+0423 # CYRILLIC CAPITAL LETTER U
+0x94 U+0424 # CYRILLIC CAPITAL LETTER EF
+0x95 U+0425 # CYRILLIC CAPITAL LETTER HA
+0x96 U+0426 # CYRILLIC CAPITAL LETTER TSE
+0x97 U+0427 # CYRILLIC CAPITAL LETTER CHE
+0x98 U+0428 # CYRILLIC CAPITAL LETTER SHA
+0x99 U+0429 # CYRILLIC CAPITAL LETTER SHCHA
+0x9a U+042a # CYRILLIC CAPITAL LETTER HARD SIGN
+0x9b U+042b # CYRILLIC CAPITAL LETTER YERU
+0x9c U+042c # CYRILLIC CAPITAL LETTER SOFT SIGN
+0x9d U+042d # CYRILLIC CAPITAL LETTER E
+0x9e U+042e # CYRILLIC CAPITAL LETTER YU
+0x9f U+042f # CYRILLIC CAPITAL LETTER YA
+0xa0 U+0430 # CYRILLIC SMALL LETTER A
+0xa1 U+0431 # CYRILLIC SMALL LETTER BE
+0xa2 U+0432 # CYRILLIC SMALL LETTER VE
+0xa3 U+0433 # CYRILLIC SMALL LETTER GHE
+0xa4 U+0434 # CYRILLIC SMALL LETTER DE
+0xa5 U+0435 # CYRILLIC SMALL LETTER IE
+0xa6 U+0436 # CYRILLIC SMALL LETTER ZHE
+0xa7 U+0437 # CYRILLIC SMALL LETTER ZE
+0xa8 U+0438 # CYRILLIC SMALL LETTER I
+0xa9 U+0439 # CYRILLIC SMALL LETTER SHORT I
+0xaa U+043a # CYRILLIC SMALL LETTER KA
+0xab U+043b # CYRILLIC SMALL LETTER EL
+0xac U+043c # CYRILLIC SMALL LETTER EM
+0xad U+043d # CYRILLIC SMALL LETTER EN
+0xae U+043e # CYRILLIC SMALL LETTER O
+0xaf U+043f # CYRILLIC SMALL LETTER PE
+0xb0 U+2591 # LIGHT SHADE
+0xb1 U+2592 # MEDIUM SHADE
+0xb2 U+2593 # DARK SHADE
+0xb3 U+2502 # BOX DRAWINGS LIGHT VERTICAL
+0xb4 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5 U+2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+0xb6 U+2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+0xb7 U+2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+0xb8 U+2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+0xb9 U+2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba U+2551 # BOX DRAWINGS DOUBLE VERTICAL
+0xbb U+2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc U+255d # BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd U+255c # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+0xbe U+255b # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+0xbf U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2 U+252c # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3 U+251c # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4 U+2500 # BOX DRAWINGS LIGHT HORIZONTAL
+0xc5 U+253c # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6 U+255e # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+0xc7 U+255f # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+0xc8 U+255a # BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9 U+2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca U+2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb U+2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc U+2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd U+2550 # BOX DRAWINGS DOUBLE HORIZONTAL
+0xce U+256c # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf U+2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+0xd0 U+2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+0xd1 U+2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+0xd2 U+2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+0xd3 U+2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+0xd4 U+2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+0xd5 U+2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+0xd6 U+2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+0xd7 U+256b # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+0xd8 U+256a # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+0xd9 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT
+0xda U+250c # BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb U+2588 # FULL BLOCK
+0xdc U+2584 # LOWER HALF BLOCK
+0xdd U+258c # LEFT HALF BLOCK
+0xde U+2590 # RIGHT HALF BLOCK
+0xdf U+2580 # UPPER HALF BLOCK
+0xe0 U+0440 # CYRILLIC SMALL LETTER ER
+0xe1 U+0441 # CYRILLIC SMALL LETTER ES
+0xe2 U+0442 # CYRILLIC SMALL LETTER TE
+0xe3 U+0443 # CYRILLIC SMALL LETTER U
+0xe4 U+0444 # CYRILLIC SMALL LETTER EF
+0xe5 U+0445 # CYRILLIC SMALL LETTER HA
+0xe6 U+0446 # CYRILLIC SMALL LETTER TSE
+0xe7 U+0447 # CYRILLIC SMALL LETTER CHE
+0xe8 U+0448 # CYRILLIC SMALL LETTER SHA
+0xe9 U+0449 # CYRILLIC SMALL LETTER SHCHA
+0xea U+044a # CYRILLIC SMALL LETTER HARD SIGN
+0xeb U+044b # CYRILLIC SMALL LETTER YERU
+0xec U+044c # CYRILLIC SMALL LETTER SOFT SIGN
+0xed U+044d # CYRILLIC SMALL LETTER E
+0xee U+044e # CYRILLIC SMALL LETTER YU
+0xef U+044f # CYRILLIC SMALL LETTER YA
+0xf0 U+0401 # CYRILLIC CAPITAL LETTER IO
+0xf1 U+0451 # CYRILLIC SMALL LETTER IO
+0xf2 U+0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0xf3 U+0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
+0xf4 U+0407 # CYRILLIC CAPITAL LETTER YI
+0xf5 U+0457 # CYRILLIC SMALL LETTER YI
+0xf6 U+040e # CYRILLIC CAPITAL LETTER SHORT U
+0xf7 U+045e # CYRILLIC SMALL LETTER SHORT U
+0xf8 U+00b0 # DEGREE SIGN
+0xf9 U+2219 # BULLET OPERATOR
+0xfa U+00b7 # MIDDLE DOT
+0xfb U+221a # SQUARE ROOT
+0xfc U+2116 # NUMERO SIGN
+0xfd U+00a4 # CURRENCY SIGN
+0xfe U+25a0 # BLACK SQUARE
+0xff U+00a0 # NO-BREAK SPACE
--- /dev/null
+# Identical to ruscii.uni, except for the tail 0xf2-0xff
+#
+# Basic IBM dingbats, some of which will never have a purpose clear
+# to mankind
+#
+0x00 U+0000
+0x01 U+263a
+0x02 U+263b
+0x03 U+2665
+0x04 U+2666 U+25c6
+0x05 U+2663
+0x06 U+2660
+0x07 U+2022
+0x08 U+25d8
+0x09 U+25cb
+0x0a U+25d9
+0x0b U+2642
+0x0c U+2640
+0x0d U+266a
+0x0e U+266b
+0x0f U+263c
+0x10 U+25b6 U+25ba
+0x11 U+25c0 U+25c4
+0x12 U+2195
+0x13 U+203c
+0x14 U+00b6
+0x15 U+00a7
+0x16 U+25ac
+0x17 U+21a8
+0x18 U+2191
+0x19 U+2193
+0x1a U+2192
+0x1b U+2190
+0x1c U+221f
+0x1d U+2194
+0x1e U+25b2
+0x1f U+25bc
+#
+# The ASCII range is identity-mapped, but some of the characters also
+# have to act as substitutes, especially the upper-case characters.
+#
+0x20 U+0020
+0x21 U+0021
+0x22 U+0022 U+00a8
+0x23 U+0023
+0x24 U+0024
+0x25 U+0025
+0x26 U+0026
+0x27 U+0027
+0x28 U+0028
+0x29 U+0029
+0x2a U+002a
+0x2b U+002b
+0x2c U+002c U+00b8
+0x2d U+002d U+00ad
+0x2e U+002e
+0x2f U+002f
+0x30 U+0030
+0x31 U+0031
+0x32 U+0032
+0x33 U+0033
+0x34 U+0034
+0x35 U+0035
+0x36 U+0036
+0x37 U+0037
+0x38 U+0038
+0x39 U+0039
+0x3a U+003a
+0x3b U+003b
+0x3c U+003c
+0x3d U+003d
+0x3e U+003e
+0x3f U+003f
+0x40 U+0040
+0x41 U+0041 U+00c0 U+00c1 U+00c2 U+00c3
+0x42 U+0042
+0x43 U+0043 U+00a9
+0x44 U+0044
+0x45 U+0045 U+00c8 U+00ca U+00cb
+0x46 U+0046
+0x47 U+0047
+0x48 U+0048
+0x49 U+0049 U+00cc U+00cd U+00ce U+00cf
+0x4a U+004a
+0x4b U+004b U+212a
+0x4c U+004c
+0x4d U+004d
+0x4e U+004e
+0x4f U+004f U+00d2 U+00d3 U+00d4 U+00d5
+0x50 U+0050
+0x51 U+0051
+0x52 U+0052 U+00ae
+0x53 U+0053
+0x54 U+0054
+0x55 U+0055 U+00d9 U+00da U+00db
+0x56 U+0056
+0x57 U+0057
+0x58 U+0058
+0x59 U+0059 U+00dd
+0x5a U+005a
+0x5b U+005b
+0x5c U+005c
+0x5d U+005d
+0x5e U+005e
+0x5f U+005f U+f804
+0x60 U+0060
+0x61 U+0061 U+00e3
+0x62 U+0062
+0x63 U+0063
+0x64 U+0064
+0x65 U+0065
+0x66 U+0066
+0x67 U+0067
+0x68 U+0068
+0x69 U+0069
+0x6a U+006a
+0x6b U+006b
+0x6c U+006c
+0x6d U+006d
+0x6e U+006e
+0x6f U+006f U+00f5
+0x70 U+0070
+0x71 U+0071
+0x72 U+0072
+0x73 U+0073
+0x74 U+0074
+0x75 U+0075
+0x76 U+0076
+0x77 U+0077
+0x78 U+0078 U+00d7
+0x79 U+0079 U+00fd
+0x7a U+007a
+0x7b U+007b
+0x7c U+007c U+00a5
+0x7d U+007d
+0x7e U+007e
+#
+# Okay, what on Earth is this one supposed to be used for?
+#
+0x7f U+2302
+#
+# cyrillic capital letters from A to JA
+#
+0x80 U+0410
+0x81 U+0411
+0x82 U+0412
+0x83 U+0413
+0x84 U+0414
+0x85 U+0415
+0x86 U+0416
+0x87 U+0417
+0x88 U+0418
+0x89 U+0419
+0x8a U+041a
+0x8b U+041b
+0x8c U+041c
+0x8d U+041d
+0x8e U+041e
+0x8f U+041f
+0x90 U+0420
+0x91 U+0421
+0x92 U+0422
+0x93 U+0423
+0x94 U+0424
+0x95 U+0425
+0x96 U+0426
+0x97 U+0427
+0x98 U+0428
+0x99 U+0429
+0x9a U+042a
+0x9b U+042b
+0x9c U+042c
+0x9d U+042d
+0x9e U+042e
+0x9f U+042f
+#
+# cyrillic small letters from a to pe
+#
+0xa0 U+0430
+0xa1 U+0431
+0xa2 U+0432
+0xa3 U+0433
+0xa4 U+0434
+0xa5 U+0435
+0xa6 U+0436
+0xa7 U+0437
+0xa8 U+0438
+0xa9 U+0439
+0xaa U+043a
+0xab U+043b
+0xac U+043c
+0xad U+043d
+0xae U+043e
+0xaf U+043f
+#
+# Block graphics
+#
+0xb0 U+2591
+0xb1 U+2592
+0xb2 U+2593
+0xb3 U+2502
+0xb4 U+2524
+0xb5 U+2561
+0xb6 U+2562
+0xb7 U+2556
+0xb8 U+2555
+0xb9 U+2563
+0xba U+2551
+0xbb U+2557
+0xbc U+255d
+0xbd U+255c
+0xbe U+255b
+0xbf U+2510
+0xc0 U+2514
+0xc1 U+2534
+0xc2 U+252c
+0xc3 U+251c
+0xc4 U+2500
+0xc5 U+253c
+0xc6 U+255e
+0xc7 U+255f
+0xc8 U+255a
+0xc9 U+2554
+0xca U+2569
+0xcb U+2566
+0xcc U+2560
+0xcd U+2550
+0xce U+256c
+0xcf U+2567
+0xd0 U+2568
+0xd1 U+2564
+0xd2 U+2565
+0xd3 U+2559
+0xd4 U+2558
+0xd5 U+2552
+0xd6 U+2553
+0xd7 U+256b
+0xd8 U+256a
+0xd9 U+2518
+0xda U+250c
+0xdb U+2588
+0xdc U+2584
+0xdd U+258c
+0xde U+2590
+0xdf U+2580
+#
+# cyrillic small letters from er to ja
+#
+0xe0 U+0440
+0xe1 U+0441
+0xe2 U+0442
+0xe3 U+0443
+0xe4 U+0444
+0xe5 U+0445
+0xe6 U+0446
+0xe7 U+0447
+0xe8 U+0448
+0xe9 U+0449
+0xea U+044a
+0xeb U+044b
+0xec U+044c
+0xed U+044d
+0xee U+044e
+0xef U+044f
+#
+# ukrainian diacritic letters
+#
+0xf0 U+0401
+0xf1 U+0451
+#
+#
+# The range 0xf2-0xfd differs from ruscii.uni
+0xf2 U+0404
+0xf3 U+0454
+0xf4 U+0407
+0xf5 U+0457
+0xf6 U+040e
+0xf7 U+045e
+0xf8 U+00b0
+0xf9 U+2219
+0xfa U+00b7
+0xfb U+221a
+0xfc U+2116
+0xfd U+00a4
+#
+# Square bullet, non-spacing blank
+# Mapping U+fffd to the square bullet means it is the substitution
+# character
+#
+0xfe U+25a0 U+fffd
+0xff U+00a0
--- /dev/null
+# Unicode (ISO 10646) mapping for the KOI8-R charset.
+# (only the upper half of the code table makes sense,
+# as the lower half of the table is fully coinciding with ASCII character set)
+#
+# Using IBM cp850 table lower half here... (excerpt from `cp850.uni' file)
+#
+#------------------------------------------------------------------
+#
+# Unicode table for IBM Codepage 850.
+# This allows to properly use a cp850 encoded font to display unicode.
+#
+0x00 U+0000
+0x01 U+263a
+0x02 U+263b
+0x03 U+2665
+0x04 U+2666 U+25c6
+0x05 U+2663
+0x06 U+2660
+0x07 U+2022
+0x08 U+25d8
+0x09 U+25cb
+0x0a U+25d9
+0x0b U+2642
+0x0c U+2640
+0x0d U+266a
+0x0e U+266b U+266c
+0x0f U+263c
+0x10 U+25b6 U+25ba
+0x11 U+25c0 U+25c4
+0x12 U+2195
+0x13 U+203c
+0x14 U+00b6
+0x15 U+00a7
+0x16 U+25ac
+0x17 U+21a8
+0x18 U+2191
+0x19 U+2193
+0x1a U+2192
+0x1b U+2190
+0x1c U+221f U+2319
+0x1d U+2194
+0x1e U+25b2
+0x1f U+25bc
+#
+# The ASCII range is identity-mapped, but some of the characters also
+# have to act as substitutes, especially the upper-case characters.
+#
+0x20 U+0020
+0x21 U+0021
+0x22 U+0022 U+00a8
+0x23 U+0023
+0x24 U+0024
+0x25 U+0025
+0x26 U+0026
+0x27 U+0027
+0x28 U+0028
+0x29 U+0029
+0x2a U+002a
+0x2b U+002b
+0x2c U+002c U+00b8
+0x2d U+002d U+00ad
+0x2e U+002e
+0x2f U+002f
+0x30 U+0030
+0x31 U+0031
+0x32 U+0032
+0x33 U+0033
+0x34 U+0034
+0x35 U+0035
+0x36 U+0036
+0x37 U+0037
+0x38 U+0038
+0x39 U+0039
+0x3a U+003a
+0x3b U+003b
+0x3c U+003c
+0x3d U+003d
+0x3e U+003e
+0x3f U+003f
+0x40 U+0040
+0x41 U+0041
+0x42 U+0042
+0x43 U+0043
+0x44 U+0044
+0x45 U+0045
+0x46 U+0046
+0x47 U+0047
+0x48 U+0048
+0x49 U+0049
+0x4a U+004a
+0x4b U+004b U+212a
+0x4c U+004c
+0x4d U+004d
+0x4e U+004e
+0x4f U+004f
+0x50 U+0050
+0x51 U+0051
+0x52 U+0052
+0x53 U+0053
+0x54 U+0054
+0x55 U+0055
+0x56 U+0056
+0x57 U+0057
+0x58 U+0058
+0x59 U+0059
+0x5a U+005a
+0x5b U+005b
+0x5c U+005c
+0x5d U+005d
+0x5e U+005e
+0x5f U+005f U+f804
+0x60 U+0060
+0x61 U+0061
+0x62 U+0062
+0x63 U+0063
+0x64 U+0064
+0x65 U+0065
+0x66 U+0066
+0x67 U+0067
+0x68 U+0068
+0x69 U+0069
+0x6a U+006a
+0x6b U+006b
+0x6c U+006c
+0x6d U+006d
+0x6e U+006e
+0x6f U+006f
+0x70 U+0070
+0x71 U+0071
+0x72 U+0072
+0x73 U+0073
+0x74 U+0074
+0x75 U+0075
+0x76 U+0076
+0x77 U+0077
+0x78 U+0078
+0x79 U+0079
+0x7a U+007a
+0x7b U+007b
+0x7c U+007c
+0x7d U+007d
+0x7e U+007e
+#
+# Okay, what on Earth is this one supposed to be used for?
+#
+0x7f U+2302
+#------------------------------------------------------------------
+#
+# Russian characters and pseudographics
+#
+0x80 U+2500
+0x81 U+2502
+0x82 U+250c
+0x83 U+2510
+0x84 U+2514
+0x85 U+2518
+0x86 U+251c
+0x87 U+2524
+0x88 U+252c
+0x89 U+2534
+0x8a U+253c
+0x8b U+2580
+0x8c U+2584
+0x8d U+2588
+0x8e U+258c
+0x8f U+2590
+0x90 U+2591
+0x91 U+2592
+0x92 U+2593
+0x93 U+2320
+0x94 U+25a0
+0x95 U+2219
+0x96 U+221a
+0x97 U+2248
+0x98 U+2264
+0x99 U+2265
+0x9a U+00a0
+0x9b U+2321
+0x9c U+00b0
+0x9d U+00b2
+0x9e U+00b7
+0x9f U+00f7
+0xa0 U+2550
+0xa1 U+2551
+0xa2 U+2552
+0xa3 U+0451
+0xa4 U+2553
+0xa5 U+2554
+0xa6 U+2555
+0xa7 U+2556
+0xa8 U+2557
+0xa9 U+2558
+0xaa U+2559
+0xab U+255a
+0xac U+255b
+0xad U+255c
+0xae U+255d
+0xaf U+255e
+0xb0 U+255f
+0xb1 U+2560
+0xb2 U+2561
+0xb3 U+0401
+0xb4 U+2562
+0xb5 U+2563
+0xb6 U+2564
+0xb7 U+2565
+0xb8 U+2566
+0xb9 U+2567
+0xba U+2568
+0xbb U+2569
+0xbc U+256a
+0xbd U+256b
+0xbe U+256c
+0xbf U+00a9
+0xc0 U+044e
+0xc1 U+0430
+0xc2 U+0431
+0xc3 U+0446
+0xc4 U+0434
+0xc5 U+0435
+0xc6 U+0444
+0xc7 U+0433
+0xc8 U+0445
+0xc9 U+0438
+0xca U+0439
+0xcb U+043a
+0xcc U+043b
+0xcd U+043c
+0xce U+043d
+0xcf U+043e
+0xd0 U+043f
+0xd1 U+044f
+0xd2 U+0440
+0xd3 U+0441
+0xd4 U+0442
+0xd5 U+0443
+0xd6 U+0436
+0xd7 U+0432
+0xd8 U+044c
+0xd9 U+044b
+0xda U+0437
+0xdb U+0448
+0xdc U+044d
+0xdd U+0449
+0xde U+0447
+0xdf U+044a
+0xe0 U+042e
+0xe1 U+0410
+0xe2 U+0411
+0xe3 U+0426
+0xe4 U+0414
+0xe5 U+0415
+0xe6 U+0424
+0xe7 U+0413
+0xe8 U+0425
+0xe9 U+0418
+0xea U+0419
+0xeb U+041a
+0xec U+041b
+0xed U+041c
+0xee U+041d
+0xef U+041e
+0xf0 U+041f
+0xf1 U+042f
+0xf2 U+0420
+0xf3 U+0421
+0xf4 U+0422
+0xf5 U+0423
+0xf6 U+0416
+0xf7 U+0412
+0xf8 U+042c
+0xf9 U+042b
+0xfa U+0417
+0xfb U+0428
+0xfc U+042d
+0xfd U+0429
+0xfe U+0427
+0xff U+042a
--- /dev/null
+# unimap for some lat2 fonts
+0x001 U+2248
+0x002 U+0152
+0x003 U+0153
+0x004 U+25c6
+0x005 U+2409
+0x006 U+240c
+0x007 U+240d
+0x008 U+240a
+0x009 U+2591
+0x00a U+2592
+0x00b U+2593
+0x00c U+2588
+0x00d U+2584
+0x00e U+2580
+0x00f U+258c
+0x010 U+2590
+0x011 U+2424
+0x012 U+240b
+0x013 U+2264
+0x014 U+2265
+0x015 U+2260
+0x016 U+25c0
+0x017 U+25b6
+0x018 U+2191
+0x019 U+2193
+0x01a U+2192
+0x01b U+2190
+0x01c U+2195
+0x01d U+2194
+0x01e U+21b5
+0x01f U+03c0
+#
+0x020-0x07e idem
+0x07f U+2302
+#
+0x080 U+f801
+0x081 U+2575
+0x082 U+2576
+0x083 U+2514
+0x084 U+2577
+0x085 U+2502
+0x086 U+250c
+0x087 U+251c
+0x088 U+2574
+0x089 U+2518
+0x08a U+2500
+0x08b U+2534
+0x08c U+2510
+0x08d U+2524
+0x08e U+252c
+0x08f U+253c
+0x090 U+f803
+0x091 U+2579
+0x092 U+257a
+0x093 U+2517 U+255a
+0x094 U+257b
+0x095 U+2503 U+2551
+0x096 U+250f U+2554
+0x097 U+2523 U+2560
+0x098 U+2578
+0x099 U+251b U+255d
+0x09a U+2501 U+2550
+0x09b U+253b U+2569
+0x09c U+2513 U+2557
+0x09d U+2563 U+252b
+0x09e U+2533 U+2566
+0x09f U+254b U+256c
+# ISO 8859-2 (2nd half)
+0xA0 U+00A0 # NO-BREAK SPACE
+0xA1 U+0104 # LATIN CAPITAL LETTER A WITH OGONEK
+0xA2 U+02D8 # BREVE
+0xA3 U+0141 # LATIN CAPITAL LETTER L WITH STROKE
+0xA4 U+00A4 # CURRENCY SIGN
+0xA5 U+013D # LATIN CAPITAL LETTER L WITH CARON
+0xA6 U+015A # LATIN CAPITAL LETTER S WITH ACUTE
+0xA7 U+00A7 # SECTION SIGN
+0xA8 U+00A8 # DIAERESIS
+0xA9 U+0160 # LATIN CAPITAL LETTER S WITH CARON
+0xAA U+015E # LATIN CAPITAL LETTER S WITH CEDILLA
+0xAB U+0164 # LATIN CAPITAL LETTER T WITH CARON
+0xAC U+0179 # LATIN CAPITAL LETTER Z WITH ACUTE
+0xAD U+00AD # SOFT HYPHEN
+0xAE U+017D # LATIN CAPITAL LETTER Z WITH CARON
+0xAF U+017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+0xB0 U+00B0 # DEGREE SIGN
+0xB1 U+0105 # LATIN SMALL LETTER A WITH OGONEK
+0xB2 U+02DB # OGONEK
+0xB3 U+0142 # LATIN SMALL LETTER L WITH STROKE
+0xB4 U+00B4 # ACUTE ACCENT
+0xB5 U+013E # LATIN SMALL LETTER L WITH CARON
+0xB6 U+015B # LATIN SMALL LETTER S WITH ACUTE
+0xB7 U+02C7 # CARON
+0xB8 U+00B8 # CEDILLA
+0xB9 U+0161 # LATIN SMALL LETTER S WITH CARON
+0xBA U+015F # LATIN SMALL LETTER S WITH CEDILLA
+0xBB U+0165 # LATIN SMALL LETTER T WITH CARON
+0xBC U+017A # LATIN SMALL LETTER Z WITH ACUTE
+0xBD U+02DD # DOUBLE ACUTE ACCENT
+0xBE U+017E # LATIN SMALL LETTER Z WITH CARON
+0xBF U+017C # LATIN SMALL LETTER Z WITH DOT ABOVE
+0xC0 U+0154 # LATIN CAPITAL LETTER R WITH ACUTE
+0xC1 U+00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+0xC2 U+00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xC3 U+0102 # LATIN CAPITAL LETTER A WITH BREVE
+0xC4 U+00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+0xC5 U+0139 # LATIN CAPITAL LETTER L WITH ACUTE
+0xC6 U+0106 # LATIN CAPITAL LETTER C WITH ACUTE
+0xC7 U+00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
+0xC8 U+010C # LATIN CAPITAL LETTER C WITH CARON
+0xC9 U+00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+0xCA U+0118 # LATIN CAPITAL LETTER E WITH OGONEK
+0xCB U+00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
+0xCC U+011A # LATIN CAPITAL LETTER E WITH CARON
+0xCD U+00CD # LATIN CAPITAL LETTER I WITH ACUTE
+0xCE U+00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xCF U+010E # LATIN CAPITAL LETTER D WITH CARON
+0xD0 U+0110 # LATIN CAPITAL LETTER D WITH STROKE
+0xD1 U+0143 # LATIN CAPITAL LETTER N WITH ACUTE
+0xD2 U+0147 # LATIN CAPITAL LETTER N WITH CARON
+0xD3 U+00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+0xD4 U+00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xD5 U+0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0xD6 U+00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+0xD7 U+00D7 # MULTIPLICATION SIGN
+0xD8 U+0158 # LATIN CAPITAL LETTER R WITH CARON
+0xD9 U+016E # LATIN CAPITAL LETTER U WITH RING ABOVE
+0xDA U+00DA # LATIN CAPITAL LETTER U WITH ACUTE
+0xDB U+0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0xDC U+00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
+0xDD U+00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+0xDE U+0162 # LATIN CAPITAL LETTER T WITH CEDILLA
+0xDF U+00DF # LATIN SMALL LETTER SHARP S
+0xE0 U+0155 # LATIN SMALL LETTER R WITH ACUTE
+0xE1 U+00E1 # LATIN SMALL LETTER A WITH ACUTE
+0xE2 U+00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0xE3 U+0103 # LATIN SMALL LETTER A WITH BREVE
+0xE4 U+00E4 # LATIN SMALL LETTER A WITH DIAERESIS
+0xE5 U+013A # LATIN SMALL LETTER L WITH ACUTE
+0xE6 U+0107 # LATIN SMALL LETTER C WITH ACUTE
+0xE7 U+00E7 # LATIN SMALL LETTER C WITH CEDILLA
+0xE8 U+010D # LATIN SMALL LETTER C WITH CARON
+0xE9 U+00E9 # LATIN SMALL LETTER E WITH ACUTE
+0xEA U+0119 # LATIN SMALL LETTER E WITH OGONEK
+0xEB U+00EB # LATIN SMALL LETTER E WITH DIAERESIS
+0xEC U+011B # LATIN SMALL LETTER E WITH CARON
+0xED U+00ED # LATIN SMALL LETTER I WITH ACUTE
+0xEE U+00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0xEF U+010F # LATIN SMALL LETTER D WITH CARON
+0xF0 U+0111 # LATIN SMALL LETTER D WITH STROKE
+0xF1 U+0144 # LATIN SMALL LETTER N WITH ACUTE
+0xF2 U+0148 # LATIN SMALL LETTER N WITH CARON
+0xF3 U+00F3 # LATIN SMALL LETTER O WITH ACUTE
+0xF4 U+00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0xF5 U+0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0xF6 U+00F6 # LATIN SMALL LETTER O WITH DIAERESIS
+0xF7 U+00F7 # DIVISION SIGN
+0xF8 U+0159 # LATIN SMALL LETTER R WITH CARON
+0xF9 U+016F # LATIN SMALL LETTER U WITH RING ABOVE
+0xFA U+00FA # LATIN SMALL LETTER U WITH ACUTE
+0xFB U+0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0xFC U+00FC # LATIN SMALL LETTER U WITH DIAERESIS
+0xFD U+00FD # LATIN SMALL LETTER Y WITH ACUTE
+0xFE U+0163 # LATIN SMALL LETTER T WITH CEDILLA
+0xFF U+02D9 # DOT ABOVE
--- /dev/null
+#
+# Unicode mapping table for ISO 8859-7 fonts iso07.* WITH SuSE-extension.
+# Symbols that differ from the original: 0x80-0x9f [graphic symbols]
+# 0xa0, 0xa4, 0xa5, 0xaa, 0xae, 0xff
+0x20-0x7e idem
+0x7f U+2302
+#
+0x00 U+fffd
+0x01 U+263A
+0x02 U+263B
+0x03 U+2665
+0x04 U+2666
+0x05 U+2663
+0x06 U+2660
+0x07 U+2022
+0x08 U+240a
+0x09 U+2591
+0x0a U+2592
+0x0b U+2593
+0x0c U+2588
+0x0d U+2584
+0x0e U+2580
+0x0f U+258c
+
+0x10 U+25B6
+0x10 U+25BA
+0x11 U+25C0
+0x11 U+25C4
+0x12 U+2195
+0x13 U+203C
+0x14 U+00B6
+0x15 U+00A7
+0x16 U+25AC
+0x17 U+21A8
+0x18 U+2191
+0x19 U+2193
+0x1A U+2192
+0x1B U+2190
+0x1C U+221F
+0x1C U+2319
+0x1D U+2194
+0x1E U+25B2
+0x1F U+25BC
+# old
+0x80 U+f801 # medium-high line
+0x81 U+2575
+0x82 U+2576
+0x83 U+2514
+0x84 U+2577
+0x85 U+2502
+0x86 U+250c
+0x87 U+251c
+0x88 U+2574
+0x89 U+2518
+#0x8a U+2500 see 0xd2
+0x8b U+2534
+0x8c U+2510
+0x8d U+2524
+0x8e U+252c
+0x8f U+253c
+0x90 U+f803 # medium-low line
+0x91 U+2579
+0x92 U+257a
+0x93 U+2517 U+255a
+0x94 U+257b
+0x95 U+2503 U+2551
+0x96 U+250f U+2554
+0x97 U+2523 U+2560
+0x98 U+2578
+0x99 U+251b U+255d
+0x9a U+2501 U+2550
+0x9b U+253b U+2569
+0x9c U+2513 U+2557
+0x9d U+2563 U+252b
+0x9e U+2533 U+2566
+0x9f U+254b U+256c
+#
+0xa0 U+fffd
+0xa1 U+0371
+0xa2 U+0372
+0xa3 U+00a3
+0xa4 U+2591 #prior non existent
+0xa5 U+2592 #prior non existent
+0xa6 U+00a6
+0xa7 U+00a7
+0xa8 U+00a8
+0xa9 U+00a9
+0xaa U+2593 #prior non existent
+0xab U+00ab
+0xac U+00ac
+0xad U+00ad
+0xae U+2588 #prior non existent
+0xaf U+2015
+0xb0 U+00b0
+0xb1 U+00b1
+0xb2 U+00b2
+0xb3 U+00b3
+0xb4 U+03f3
+0xb5 U+03f4
+0xb6 U+0386
+0xb7 U+00b7
+0xb8 U+0388
+0xb9 U+0389
+0xba U+038a
+0xbb U+00bb
+0xbc U+038c
+0xbd U+00bd
+0xbe U+038e
+0xbf U+038f
+0xc0 U+0390
+0xc1 U+0391
+0xc2 U+0392
+0xc3 U+0393
+0xc4 U+0394
+0xc5 U+0395
+0xc6 U+0396
+0xc7 U+0397
+0xc8 U+0398
+0xc9 U+0399
+0xca U+039a
+0xcb U+039b
+0xcc U+039c
+0xcd U+039d
+0xce U+039e
+0xcf U+039f
+0xd0 U+03a0
+0xd1 U+03a1
+0xd2 U+2500
+0xd3 U+03a3
+0xd4 U+03a4
+0xd5 U+03a5
+0xd6 U+03a6
+0xd7 U+03a7
+0xd8 U+03a8
+0xd9 U+03a9
+0xda U+03aa
+0xdb U+03ab
+0xdc U+03ac
+0xdd U+03ad
+0xde U+03ae
+0xdf U+03af
+0xe0 U+03b0
+0xe1 U+03b1
+0xe2 U+03b2
+0xe3 U+03b3
+0xe4 U+03b4
+0xe5 U+03b5
+0xe6 U+03b6
+0xe7 U+03b7
+0xe8 U+03b8
+0xe9 U+03b9
+0xea U+03ba
+0xeb U+03bb
+0xec U+03bc
+0xed U+03bd
+0xee U+03be
+0xef U+03bf
+0xf0 U+03c0
+0xf1 U+03c1
+0xf2 U+03c2
+0xf3 U+03c3
+0xf4 U+03c4
+0xf5 U+03c5
+0xf6 U+03c6
+0xf7 U+03c7
+0xf8 U+03c8
+0xf9 U+03c9
+0xfa U+03ca
+0xfb U+03cb
+0xfc U+03cc
+0xfd U+03cd
+0xfe U+03ce
+0xff U+00ff #prior non existent
--- /dev/null
+#
+# Character table extracted from font lat9u-16.psf
+#
+0x00 U+fffd
+0x01 U+2248
+0x02 U+0152
+0x03 U+0153
+0x04 U+25c6
+0x05 U+2409
+0x06 U+240c
+0x07 U+240d
+0x08 U+240a
+0x09 U+2591
+0x0a U+2592
+0x0b U+2593
+0x0c U+2588
+0x0d U+2584
+0x0e U+2580
+0x0f U+258c
+0x10 U+2590
+0x11 U+2424
+0x12 U+240b
+0x13 U+2264
+0x14 U+2265
+0x15 U+2260
+0x16 U+25c0
+0x17 U+25b6
+0x18 U+2191
+0x19 U+2193
+0x1a U+2192
+0x1b U+2190
+0x1c U+2195
+0x1d U+2194
+0x1e U+21b5
+0x1f U+03c0
+0x20 U+0020 U+00a0
+0x21 U+0021
+0x22 U+0022
+0x23 U+0023
+0x24 U+0024
+0x25 U+0025
+0x26 U+0026
+0x27 U+0027
+0x28 U+0028
+0x29 U+0029
+0x2a U+002a
+0x2b U+002b
+0x2c U+002c
+0x2d U+002d
+0x2e U+002e
+0x2f U+002f
+0x30 U+0030
+0x31 U+0031
+0x32 U+0032
+0x33 U+0033
+0x34 U+0034
+0x35 U+0035
+0x36 U+0036
+0x37 U+0037
+0x38 U+0038
+0x39 U+0039
+0x3a U+003a
+0x3b U+003b
+0x3c U+003c
+0x3d U+003d
+0x3e U+003e
+0x3f U+003f
+0x40 U+0040
+0x41 U+0041
+0x42 U+0042
+0x43 U+0043
+0x44 U+0044
+0x45 U+0045
+0x46 U+0046
+0x47 U+0047
+0x48 U+0048
+0x49 U+0049
+0x4a U+004a
+0x4b U+004b U+212a
+0x4c U+004c
+0x4d U+004d
+0x4e U+004e
+0x4f U+004f
+0x50 U+0050
+0x51 U+0051
+0x52 U+0052
+0x53 U+0053
+0x54 U+0054
+0x55 U+0055
+0x56 U+0056
+0x57 U+0057
+0x58 U+0058
+0x59 U+0059
+0x5a U+005a
+0x5b U+005b
+0x5c U+005c
+0x5d U+005d
+0x5e U+005e
+0x5f U+005f U+f804
+0x60 U+0060
+0x61 U+0061
+0x62 U+0062
+0x63 U+0063
+0x64 U+0064
+0x65 U+0065
+0x66 U+0066
+0x67 U+0067
+0x68 U+0068
+0x69 U+0069
+0x6a U+006a
+0x6b U+006b
+0x6c U+006c
+0x6d U+006d
+0x6e U+006e
+0x6f U+006f
+0x70 U+0070
+0x71 U+0071
+0x72 U+0072
+0x73 U+0073
+0x74 U+0074
+0x75 U+0075
+0x76 U+0076
+0x77 U+0077
+0x78 U+0078
+0x79 U+0079
+0x7a U+007a
+0x7b U+007b
+0x7c U+007c
+0x7d U+007d
+0x7e U+007e
+0x7f U+0178
+0x80 U+00c0
+0x81 U+00c1
+0x82 U+00c2
+0x83 U+00c3
+0x84 U+00c4
+0x85 U+00c5 U+212b
+0x86 U+00c6
+0x87 U+00c7
+0x88 U+00c8
+0x89 U+00c9
+0x8a U+00ca
+0x8b U+00cb
+0x8c U+00cc
+0x8d U+00cd
+0x8e U+00ce
+0x8f U+00cf
+0x90 U+00d0
+0x91 U+00d1
+0x92 U+00d2
+0x93 U+00d3
+0x94 U+00d4
+0x95 U+00d5
+0x96 U+00d6
+0x97 U+00d7
+0x98 U+00d8
+0x99 U+00d9
+0x9a U+00da
+0x9b U+00db
+0x9c U+00dc
+0x9d U+00dd
+0x9e U+00de
+0x9f U+00df
+0xa0 U+2423
+0xa1 U+00a1
+0xa2 U+00a2
+0xa3 U+00a3
+0xa4 U+20ac
+0xa5 U+00a5
+0xa6 U+0160
+0xa7 U+00a7
+0xa8 U+0161
+0xa9 U+00a9
+0xaa U+00aa
+0xab U+00ab
+0xac U+00ac
+0xad U+00ad
+0xae U+00ae
+0xaf U+00af U+f800
+0xb0 U+00b0
+0xb1 U+00b1
+0xb2 U+00b2
+0xb3 U+00b3
+0xb4 U+017d
+0xb5 U+00b5
+0xb6 U+00b6
+0xb7 U+00b7
+0xb8 U+017e
+0xb9 U+00b9
+0xba U+00ba
+0xbb U+00bb
+0xbc U+0152
+0xbd U+0153
+0xbe U+0178
+0xbf U+00bf
+0xc0 U+f801
+0xc1 U+2575
+0xc2 U+2576
+0xc3 U+2514
+0xc4 U+2577
+0xc5 U+2502
+0xc6 U+250c
+0xc7 U+251c
+0xc8 U+2574
+0xc9 U+2518
+0xca U+2500
+0xcb U+2534
+0xcc U+2510
+0xcd U+2524
+0xce U+252c
+0xcf U+253c
+0xd0 U+f803
+0xd1 U+2579
+0xd2 U+257a
+0xd3 U+2517 U+255a
+0xd4 U+257b
+0xd5 U+2503 U+2551
+0xd6 U+250f U+2554
+0xd7 U+2523 U+2560
+0xd8 U+2578
+0xd9 U+251b U+255d
+0xda U+2501 U+2550
+0xdb U+253b U+2569
+0xdc U+2513 U+2557
+0xdd U+2563 U+252b
+0xde U+2533 U+2566
+0xdf U+254b U+256c
+0xe0 U+00e0
+0xe1 U+00e1
+0xe2 U+00e2
+0xe3 U+00e3
+0xe4 U+00e4
+0xe5 U+00e5
+0xe6 U+00e6
+0xe7 U+00e7
+0xe8 U+00e8
+0xe9 U+00e9
+0xea U+00ea
+0xeb U+00eb
+0xec U+00ec
+0xed U+00ed
+0xee U+00ee
+0xef U+00ef
+0xf0 U+00f0
+0xf1 U+00f1
+0xf2 U+00f2
+0xf3 U+00f3
+0xf4 U+00f4
+0xf5 U+00f5
+0xf6 U+00f6
+0xf7 U+00f7
+0xf8 U+00f8
+0xf9 U+00f9
+0xfa U+00fa
+0xfb U+00fb
+0xfc U+00fc
+0xfd U+00fd
+0xfe U+00fe
+0xff U+00ff
--- /dev/null
+#
+# Character table extracted from font lat9v-16.psf
+#
+0x00 U+fffd
+0x01 U+2248
+0x02 U+0152
+0x03 U+0153
+0x04 U+25c6
+0x05 U+2409
+0x06 U+240c
+0x07 U+240d
+0x08 U+240a
+0x09 U+2591
+0x0a U+2592
+0x0b U+2593
+0x0c U+2588
+0x0d U+2584
+0x0e U+2580
+0x0f U+258c
+0x10 U+2590
+0x11 U+2424
+0x12 U+240b
+0x13 U+2264
+0x14 U+2265
+0x15 U+2260
+0x16 U+25c0
+0x17 U+25b6
+0x18 U+2191
+0x19 U+2193
+0x1a U+2192
+0x1b U+2190
+0x1c U+2195
+0x1d U+2194
+0x1e U+21b5
+0x1f U+03c0
+0x20 U+0020 U+00a0
+0x21 U+0021
+0x22 U+0022
+0x23 U+0023
+0x24 U+0024
+0x25 U+0025
+0x26 U+0026
+0x27 U+0027
+0x28 U+0028
+0x29 U+0029
+0x2a U+002a
+0x2b U+002b
+0x2c U+002c
+0x2d U+002d
+0x2e U+002e
+0x2f U+002f
+0x30 U+0030
+0x31 U+0031
+0x32 U+0032
+0x33 U+0033
+0x34 U+0034
+0x35 U+0035
+0x36 U+0036
+0x37 U+0037
+0x38 U+0038
+0x39 U+0039
+0x3a U+003a
+0x3b U+003b
+0x3c U+003c
+0x3d U+003d
+0x3e U+003e
+0x3f U+003f
+0x40 U+0040
+0x41 U+0041
+0x42 U+0042
+0x43 U+0043
+0x44 U+0044
+0x45 U+0045
+0x46 U+0046
+0x47 U+0047
+0x48 U+0048
+0x49 U+0049
+0x4a U+004a
+0x4b U+004b U+212a
+0x4c U+004c
+0x4d U+004d
+0x4e U+004e
+0x4f U+004f
+0x50 U+0050
+0x51 U+0051
+0x52 U+0052
+0x53 U+0053
+0x54 U+0054
+0x55 U+0055
+0x56 U+0056
+0x57 U+0057
+0x58 U+0058
+0x59 U+0059
+0x5a U+005a
+0x5b U+005b
+0x5c U+005c
+0x5d U+005d
+0x5e U+005e
+0x5f U+005f U+f804
+0x60 U+0060
+0x61 U+0061
+0x62 U+0062
+0x63 U+0063
+0x64 U+0064
+0x65 U+0065
+0x66 U+0066
+0x67 U+0067
+0x68 U+0068
+0x69 U+0069
+0x6a U+006a
+0x6b U+006b
+0x6c U+006c
+0x6d U+006d
+0x6e U+006e
+0x6f U+006f
+0x70 U+0070
+0x71 U+0071
+0x72 U+0072
+0x73 U+0073
+0x74 U+0074
+0x75 U+0075
+0x76 U+0076
+0x77 U+0077
+0x78 U+0078
+0x79 U+0079
+0x7a U+007a
+0x7b U+007b
+0x7c U+007c
+0x7d U+007d
+0x7e U+007e
+0x7f U+0178
+0x80 U+f801
+0x81 U+2575
+0x82 U+2576
+0x83 U+2514
+0x84 U+2577
+0x85 U+2502
+0x86 U+250c
+0x87 U+251c
+0x88 U+2574
+0x89 U+2518
+0x8a U+2500
+0x8b U+2534
+0x8c U+2510
+0x8d U+2524
+0x8e U+252c
+0x8f U+253c
+0x90 U+f803
+0x91 U+2579
+0x92 U+257a
+0x93 U+2517 U+255a
+0x94 U+257b
+0x95 U+2503 U+2551
+0x96 U+250f U+2554
+0x97 U+2523 U+2560
+0x98 U+2578
+0x99 U+251b U+255d
+0x9a U+2501 U+2550
+0x9b U+253b U+2569
+0x9c U+2513 U+2557
+0x9d U+2563 U+252b
+0x9e U+2533 U+2566
+0x9f U+254b U+256c
+0xa0 U+2423
+0xa1 U+00a1
+0xa2 U+00a2
+0xa3 U+00a3
+0xa4 U+20ac
+0xa5 U+00a5
+0xa6 U+0160
+0xa7 U+00a7
+0xa8 U+0161
+0xa9 U+00a9
+0xaa U+00aa
+0xab U+00ab
+0xac U+00ac
+0xad U+00ad
+0xae U+00ae
+0xaf U+00af U+f800
+0xb0 U+00b0
+0xb1 U+00b1
+0xb2 U+00b2
+0xb3 U+00b3
+0xb4 U+017d
+0xb5 U+00b5
+0xb6 U+00b6
+0xb7 U+00b7
+0xb8 U+017e
+0xb9 U+00b9
+0xba U+00ba
+0xbb U+00bb
+0xbc U+0152
+0xbd U+0153
+0xbe U+0178
+0xbf U+00bf
+0xc0 U+00c0
+0xc1 U+00c1
+0xc2 U+00c2
+0xc3 U+00c3
+0xc4 U+00c4
+0xc5 U+00c5 U+212b
+0xc6 U+00c6
+0xc7 U+00c7
+0xc8 U+00c8
+0xc9 U+00c9
+0xca U+00ca
+0xcb U+00cb
+0xcc U+00cc
+0xcd U+00cd
+0xce U+00ce
+0xcf U+00cf
+0xd0 U+00d0
+0xd1 U+00d1
+0xd2 U+00d2
+0xd3 U+00d3
+0xd4 U+00d4
+0xd5 U+00d5
+0xd6 U+00d6
+0xd7 U+00d7
+0xd8 U+00d8
+0xd9 U+00d9
+0xda U+00da
+0xdb U+00db
+0xdc U+00dc
+0xdd U+00dd
+0xde U+00de
+0xdf U+00df
+0xe0 U+00e0
+0xe1 U+00e1
+0xe2 U+00e2
+0xe3 U+00e3
+0xe4 U+00e4
+0xe5 U+00e5
+0xe6 U+00e6
+0xe7 U+00e7
+0xe8 U+00e8
+0xe9 U+00e9
+0xea U+00ea
+0xeb U+00eb
+0xec U+00ec
+0xed U+00ed
+0xee U+00ee
+0xef U+00ef
+0xf0 U+00f0
+0xf1 U+00f1
+0xf2 U+00f2
+0xf3 U+00f3
+0xf4 U+00f4
+0xf5 U+00f5
+0xf6 U+00f6
+0xf7 U+00f7
+0xf8 U+00f8
+0xf9 U+00f9
+0xfa U+00fa
+0xfb U+00fb
+0xfc U+00fc
+0xfd U+00fd
+0xfe U+00fe
+0xff U+00ff
--- /dev/null
+#
+# Character table extracted from font lat9w-16.psf
+#
+0x00 U+fffd
+0x01 U+2248
+0x02 U+0152
+0x03 U+0153
+0x04 U+25c6
+0x05 U+2409
+0x06 U+240c
+0x07 U+240d
+0x08 U+240a
+0x09 U+2591
+0x0a U+2592
+0x0b U+2593
+0x0c U+2588
+0x0d U+2584
+0x0e U+2580
+0x0f U+258c
+0x10 U+2590
+0x11 U+2424
+0x12 U+240b
+0x13 U+2264
+0x14 U+2265
+0x15 U+2260
+0x16 U+25c0
+0x17 U+25b6
+0x18 U+2191
+0x19 U+2193
+0x1a U+2192
+0x1b U+2190
+0x1c U+2195
+0x1d U+2194
+0x1e U+21b5
+0x1f U+03c0
+0x20 U+0020 U+00a0
+0x21 U+0021
+0x22 U+0022
+0x23 U+0023
+0x24 U+0024
+0x25 U+0025
+0x26 U+0026
+0x27 U+0027
+0x28 U+0028
+0x29 U+0029
+0x2a U+002a
+0x2b U+002b
+0x2c U+002c
+0x2d U+002d
+0x2e U+002e
+0x2f U+002f
+0x30 U+0030
+0x31 U+0031
+0x32 U+0032
+0x33 U+0033
+0x34 U+0034
+0x35 U+0035
+0x36 U+0036
+0x37 U+0037
+0x38 U+0038
+0x39 U+0039
+0x3a U+003a
+0x3b U+003b
+0x3c U+003c
+0x3d U+003d
+0x3e U+003e
+0x3f U+003f
+0x40 U+0040
+0x41 U+0041
+0x42 U+0042
+0x43 U+0043
+0x44 U+0044
+0x45 U+0045
+0x46 U+0046
+0x47 U+0047
+0x48 U+0048
+0x49 U+0049
+0x4a U+004a
+0x4b U+004b U+212a
+0x4c U+004c
+0x4d U+004d
+0x4e U+004e
+0x4f U+004f
+0x50 U+0050
+0x51 U+0051
+0x52 U+0052
+0x53 U+0053
+0x54 U+0054
+0x55 U+0055
+0x56 U+0056
+0x57 U+0057
+0x58 U+0058
+0x59 U+0059
+0x5a U+005a
+0x5b U+005b
+0x5c U+005c
+0x5d U+005d
+0x5e U+005e
+0x5f U+005f U+f804
+0x60 U+0060
+0x61 U+0061
+0x62 U+0062
+0x63 U+0063
+0x64 U+0064
+0x65 U+0065
+0x66 U+0066
+0x67 U+0067
+0x68 U+0068
+0x69 U+0069
+0x6a U+006a
+0x6b U+006b
+0x6c U+006c
+0x6d U+006d
+0x6e U+006e
+0x6f U+006f
+0x70 U+0070
+0x71 U+0071
+0x72 U+0072
+0x73 U+0073
+0x74 U+0074
+0x75 U+0075
+0x76 U+0076
+0x77 U+0077
+0x78 U+0078
+0x79 U+0079
+0x7a U+007a
+0x7b U+007b
+0x7c U+007c
+0x7d U+007d
+0x7e U+007e
+0x7f U+0178
+0x80 U+f801
+0x81 U+2575
+0x82 U+2576
+0x83 U+2514
+0x84 U+2577
+0x85 U+2502
+0x86 U+250c
+0x87 U+251c
+0x88 U+2574
+0x89 U+2518
+0x8a U+2500
+0x8b U+2534
+0x8c U+2510
+0x8d U+2524
+0x8e U+252c
+0x8f U+253c
+0x90 U+f803
+0x91 U+2579
+0x92 U+257a
+0x93 U+2517 U+255a
+0x94 U+257b
+0x95 U+2503 U+2551
+0x96 U+250f U+2554
+0x97 U+2523 U+2560
+0x98 U+2578
+0x99 U+251b U+255d
+0x9a U+2501 U+2550
+0x9b U+253b U+2569
+0x9c U+2513 U+2557
+0x9d U+2563 U+252b
+0x9e U+2533 U+2566
+0x9f U+254b U+256c
+0xa0 U+2423
+0xa1 U+00a1
+0xa2 U+00a2
+0xa3 U+00a3
+0xa4 U+00a4 U+20ac
+0xa5 U+00a5
+0xa6 U+00a6 U+0160
+0xa7 U+00a7
+0xa8 U+00a8 U+0161
+0xa9 U+00a9
+0xaa U+00aa
+0xab U+00ab
+0xac U+00ac
+0xad U+00ad
+0xae U+00ae
+0xaf U+00af U+f800
+0xb0 U+00b0
+0xb1 U+00b1
+0xb2 U+00b2
+0xb3 U+00b3
+0xb4 U+00b4 U+017d
+0xb5 U+00b5
+0xb6 U+00b6
+0xb7 U+00b7
+0xb8 U+00b8 U+017e
+0xb9 U+00b9
+0xba U+00ba
+0xbb U+00bb
+0xbc U+00bc U+0152
+0xbd U+00bd U+0153
+0xbe U+00be U+0178
+0xbf U+00bf
+0xc0 U+00c0
+0xc1 U+00c1
+0xc2 U+00c2
+0xc3 U+00c3
+0xc4 U+00c4
+0xc5 U+00c5 U+212b
+0xc6 U+00c6
+0xc7 U+00c7
+0xc8 U+00c8
+0xc9 U+00c9
+0xca U+00ca
+0xcb U+00cb
+0xcc U+00cc
+0xcd U+00cd
+0xce U+00ce
+0xcf U+00cf
+0xd0 U+00d0
+0xd1 U+00d1
+0xd2 U+00d2
+0xd3 U+00d3
+0xd4 U+00d4
+0xd5 U+00d5
+0xd6 U+00d6
+0xd7 U+00d7
+0xd8 U+00d8
+0xd9 U+00d9
+0xda U+00da
+0xdb U+00db
+0xdc U+00dc
+0xdd U+00dd
+0xde U+00de
+0xdf U+00df
+0xe0 U+00e0
+0xe1 U+00e1
+0xe2 U+00e2
+0xe3 U+00e3
+0xe4 U+00e4
+0xe5 U+00e5
+0xe6 U+00e6
+0xe7 U+00e7
+0xe8 U+00e8
+0xe9 U+00e9
+0xea U+00ea
+0xeb U+00eb
+0xec U+00ec
+0xed U+00ed
+0xee U+00ee
+0xef U+00ef
+0xf0 U+00f0
+0xf1 U+00f1
+0xf2 U+00f2
+0xf3 U+00f3
+0xf4 U+00f4
+0xf5 U+00f5
+0xf6 U+00f6
+0xf7 U+00f7
+0xf8 U+00f8
+0xf9 U+00f9
+0xfa U+00fa
+0xfb U+00fb
+0xfc U+00fc
+0xfd U+00fd
+0xfe U+00fe
+0xff U+00ff
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Useful programs</TITLE>
<LINK HREF="kbd.FAQ-2.html" REL=next>
console!programs related to
-->
<P>The following packages contain keyboard or console related programs.
-<P><CODE>kbd-0.96.tar.gz</CODE> contains <CODE>loadkeys</CODE>, <CODE>dumpkeys</CODE>, <CODE>showkey</CODE>,
+<P><CODE>kbd-1.00.tar.gz</CODE> contains <CODE>loadkeys</CODE>, <CODE>dumpkeys</CODE>, <CODE>showkey</CODE>,
<CODE>setmetamode</CODE>, <CODE>setleds</CODE>, <CODE>setfont</CODE>, <CODE>showfont</CODE>, <CODE>mapscrn</CODE>,
-<CODE>kbd_mode</CODE>, <CODE>loadunimap</CODE>, <CODE>chvt</CODE>, <CODE>resizecons</CODE>, <CODE>deallocvt</CODE>,
-<CODE>getkeycodes</CODE>, <CODE>setkeycodes</CODE>.
-<P><CODE>util-linux-2.6</CODE> contains <CODE>setterm</CODE>, <CODE>kbdrate</CODE>.
-(Yes, the <CODE>more</CODE> in <CODE>util-linux-2.6</CODE> dumps core due to a name
-conflict. Preserve your old copy, or use <CODE>util-linux-2.5</CODE>, or
-change `savetty' to `my_savetty' in <CODE>more.c</CODE>.)
-<P><CODE>sh-utils-1.12</CODE> contains <CODE>stty</CODE>.
-<P><CODE>open-1.4.tgz</CODE> contains <CODE>open</CODE> (that should be renamed to
-<CODE>openvt</CODE>). (See also <CODE>dynamic-vc-1.1.tar.gz</CODE> and <CODE>consd-1.1.tgz</CODE>.)
+<CODE>kbd_mode</CODE>, <CODE>kbdrate</CODE>, <CODE>loadunimap</CODE>, <CODE>chvt</CODE>, <CODE>resizecons</CODE>,
+<CODE>deallocvt</CODE>, <CODE>getkeycodes</CODE>, <CODE>setkeycodes</CODE>.
+It also contains <CODE>openvt</CODE>, formerly called <CODE>open</CODE>.
<P><CODE>SVGATextMode-1.8.tar.gz</CODE> contains <CODE>SVGATextMode</CODE>, a program that
obsoletes <CODE>resizecons</CODE>.
+<P><CODE>util-linux-2.9</CODE> contains <CODE>setterm</CODE>, <CODE>kbdrate</CODE>.
+<P><CODE>sh-utils-1.12</CODE> contains <CODE>stty</CODE>.
+<P>See also <CODE>dynamic-vc-1.1.tar.gz</CODE> and <CODE>consd-1.1.tgz</CODE> for
+programs that exploit the `Keyboard Signal' key. Very primitive
+versions are <CODE>spawn_login</CODE> or <CODE>spawn_console</CODE> found in the kbd package.
+<P>See
+<A HREF="http://www.cix.co.uk/~mayday/font.tgz">font.tgz</A>
+for a package that handles console fonts.
+<P>
<P>The X distribution contains <CODE>xmodmap</CODE>, <CODE>xset</CODE>, <CODE>kbd_mode</CODE>.
(See also X386keybd(1) for the situation under XFree86 1.3,
and Xserver(1) for the XKEYBOARD extension under X11R6.)
+A handy interface to <CODE>xmodmap</CODE> is <CODE>xkeycaps</CODE>, see
+<A HREF="www.jwz.org/xkeycaps/">http://www.jwz.org/xkeycaps/</A>.
<P><CODE>termcap-2.0.8.tar.gz</CODE> contains <CODE>termcap</CODE>, an old terminal
capabilities data base. <CODE>ncurses-1.9.9e.tar.gz</CODE> contains the
<CODE>termlib</CODE> data base which obsoletes <CODE>termcap</CODE>. (However,
by the terminfo compiler <CODE>/usr/lib/terminfo/tic</CODE>, see tic(1).
Their contents can be examined using the program <CODE>infocmp</CODE>,
see infocmp(1).
-The Linux console sequences are documented in console_codes(4).
+<P>The Linux console sequences are documented in console_codes(4).
+<P>
<P>
<P>
<HR>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: The keyboard LEDs</TITLE>
<LINK HREF="kbd.FAQ-11.html" REL=next>
<LINK HREF="kbd.FAQ-9.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: The TERM variable</TITLE>
<LINK HREF="kbd.FAQ-12.html" REL=next>
<LINK HREF="kbd.FAQ-10.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: How to make other programs work with non-ASCII chars</TITLE>
<LINK HREF="kbd.FAQ-13.html" REL=next>
<LINK HREF="kbd.FAQ-11.html" REL=previous>
<CODE>LC_CTYPE=ISO-8859-1</CODE> in the environment.
<P>K. For <CODE>rlogin</CODE>, use option <CODE>-8</CODE>.
<P>L. For <CODE>joe</CODE>,
-<CODE>sunsite.unc.edu:/pub/Linux/apps/editors/joe-1.0.8-linux.tar.gz</CODE>
+<CODE>metalab.unc.edu:/pub/Linux/apps/editors/joe-1.0.8-linux.tar.gz</CODE>
is said to work after editing the configuration file. Someone else said:
<CODE>joe</CODE>: Put the <CODE>-asis</CODE> option in <CODE>/isr/lib/joerc</CODE> in the
first column.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: X</TITLE>
<LINK HREF="kbd.FAQ-14.html" REL=next>
<LINK HREF="kbd.FAQ-12.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Unusual keys and keyboards</TITLE>
<LINK HREF="kbd.FAQ-15.html" REL=next>
<LINK HREF="kbd.FAQ-13.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Examples of use of loadkeys and xmodmap</TITLE>
<LINK HREF="kbd.FAQ-16.html" REL=next>
<LINK HREF="kbd.FAQ-14.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Changing the video mode</TITLE>
<LINK HREF="kbd.FAQ-17.html" REL=next>
<LINK HREF="kbd.FAQ-15.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Changing the keyboard repeat rate</TITLE>
<LINK HREF="kbd.FAQ-18.html" REL=next>
<LINK HREF="kbd.FAQ-16.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Scrolling</TITLE>
<LINK HREF="kbd.FAQ-19.html" REL=next>
<LINK HREF="kbd.FAQ-17.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Screensaving</TITLE>
<LINK HREF="kbd.FAQ-20.html" REL=next>
<LINK HREF="kbd.FAQ-18.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Keyboard generalities</TITLE>
<LINK HREF="kbd.FAQ-3.html" REL=next>
<LINK HREF="kbd.FAQ-1.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Screen dumps</TITLE>
<LINK HREF="kbd.FAQ-21.html" REL=next>
<LINK HREF="kbd.FAQ-19.html" REL=previous>
(where `vcs' stands for `virtual console screen').
For example, you could have a clock program that displays the
current time in the upper right hand corner of the console screen
-(see the program <CODE>vcstime</CODE> in <CODE>kbd-0.96.tar.gz</CODE>).
+(see the program <CODE>vcstime</CODE> in <CODE>kbd-0.99.tar.gz</CODE>).
Just dumping the contents goes with <CODE>cat /dev/vcs</CODE><I>N</I>.
These device files <CODE>/dev/vcs</CODE><I>N</I> do not contain
newlines, and do not contain attributes, like colors. From a program
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Some properties of the VT100 - application key mode</TITLE>
<LINK HREF="kbd.FAQ-22.html" REL=next>
<LINK HREF="kbd.FAQ-20.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Hardware incompatibility</TITLE>
<LINK HREF="kbd.FAQ-23.html" REL=next>
<LINK HREF="kbd.FAQ-21.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Copyright</TITLE>
<LINK HREF="kbd.FAQ-22.html" REL=previous>
<LINK HREF="kbd.FAQ.html#toc23" REL=contents>
<P>Copyright (c) 1993-1999 by Andries Brouwer. This document may be
distributed under the terms set forth in the LDP license
at
-<A HREF="http://sunsite.unc.edu/LDP/COPYRIGHT.html">http://sunsite.unc.edu/LDP/COPYRIGHT.html</A> or
+<A HREF="http://metalab.unc.edu/LDP/COPYRIGHT.html">http://metalab.unc.edu/LDP/COPYRIGHT.html</A> or
<A HREF="ftp://www.win.tue.nl/pub/linux/LDP/COPYRIGHT.txt">ftp://www.win.tue.nl/pub/linux/LDP/COPYRIGHT.txt</A>.
<P>Additions and corrections are welcome.
Andries Brouwer - <CODE>aeb@cwi.nl</CODE>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Console generalities</TITLE>
<LINK HREF="kbd.FAQ-4.html" REL=next>
<LINK HREF="kbd.FAQ-2.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Resetting your terminal</TITLE>
<LINK HREF="kbd.FAQ-5.html" REL=next>
<LINK HREF="kbd.FAQ-3.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Delete and Backspace</TITLE>
<LINK HREF="kbd.FAQ-6.html" REL=next>
<LINK HREF="kbd.FAQ-4.html" REL=previous>
How come this is not right by default? It is, if you use the right
<CODE>getty</CODE>.
<P>Note that many programs (like <CODE>bash</CODE>, <CODE>emacs</CODE> etc.) have their own
-keybindings (defined in <CODE>~/.inputrc</CODE>, <CODE>~/.emacs</CODE> etc.) and
-are unaffected by the setting of the erase character.
+keybindings (defined in <CODE>~/.inputrc</CODE>,
+<CODE>~/.emacs</CODE> etc.) and are unaffected by the setting
+of the erase character.
<P>The standard Unix tty driver does not recognize a cursor, or keys
(like the arrow keys) to move the current position, and hence does not
have a command `delete current character' either. But for example
keymaps) and this may not yet be available in single user boot before
<CODE>/usr</CODE> has been mounted.
<P>
+<H3>`How do I get a dvorak keyboard?'</H3>
+
+<P>
+<!--
+dvorak keyboard
+-->
+
+The command
+<BLOCKQUOTE><CODE>
+<PRE>
+ % loadkeys dvorak
+</PRE>
+</CODE></BLOCKQUOTE>
+
+will give you a dvorak layout, probably by loading
+something like <CODE>/usr/lib/kbd/keymaps/i386/dvorak/dvorak.map.gz</CODE>.
+Under <CODE>X</CODE>, put
+<BLOCKQUOTE><CODE>
+<PRE>
+ XkbLayout "dvorak"
+</PRE>
+</CODE></BLOCKQUOTE>
+
+in <CODE>XF86Config</CODE>.
+<P>
<H3>`Why doesn't the Backspace key generate BackSpace by default?'</H3>
<P>
</CODE></BLOCKQUOTE>
in <CODE>.xinitrc</CODE>, and you are settled.
+<P>For a much more extensive discussion of these things, and
+alternative solutions, see
+<A HREF="http://www.ibbnet.nl/~anne/keyboard.html">Anne Baretta's page</A>.
<P>
<HR>
<A HREF="kbd.FAQ-6.html">Next</A>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: The console character sets</TITLE>
<LINK HREF="kbd.FAQ-7.html" REL=next>
<LINK HREF="kbd.FAQ-5.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Console switching</TITLE>
<LINK HREF="kbd.FAQ-8.html" REL=next>
<LINK HREF="kbd.FAQ-6.html" REL=previous>
command.
Fortunately it is possible to create a new console upon a single
keystroke, regardless of what is happening at the current console.
-<P>If you have <CODE>spawn_login</CODE> from <CODE>kbd-0.96.tar.gz</CODE> and you put
+<P>If you have <CODE>spawn_login</CODE> from <CODE>kbd-0.99.tar.gz</CODE> and you put
<BLOCKQUOTE><CODE>
<PRE>
loadkeys << EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: Ctrl-Alt-Del and other special key combinations</TITLE>
<LINK HREF="kbd.FAQ-9.html" REL=next>
<LINK HREF="kbd.FAQ-7.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO: How to get out of raw mode</TITLE>
<LINK HREF="kbd.FAQ-10.html" REL=next>
<LINK HREF="kbd.FAQ-8.html" REL=previous>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux keyboard and console HOWTO</TITLE>
<LINK HREF="kbd.FAQ-1.html" REL=next>
The following packages contain keyboard or console related programs.
<p>
-<tt/kbd-0.96.tar.gz/ contains <tt/loadkeys/, <tt/dumpkeys/, <tt/showkey/,
+<tt/kbd-1.00.tar.gz/ contains <tt/loadkeys/, <tt/dumpkeys/, <tt/showkey/,
<tt/setmetamode/, <tt/setleds/, <tt/setfont/, <tt/showfont/, <tt/mapscrn/,
-<tt/kbd_mode/, <tt/loadunimap/, <tt/chvt/, <tt/resizecons/, <tt/deallocvt/,
-<tt/getkeycodes/, <tt/setkeycodes/.
+<tt/kbd_mode/, <tt/kbdrate/, <tt/loadunimap/, <tt/chvt/, <tt/resizecons/,
+<tt/deallocvt/, <tt/getkeycodes/, <tt/setkeycodes/.
+It also contains <tt/openvt/, formerly called <tt/open/.
<p>
-<tt/util-linux-2.6/ contains <tt/setterm/, <tt/kbdrate/.
-(Yes, the <tt/more/ in <tt/util-linux-2.6/ dumps core due to a name
-conflict. Preserve your old copy, or use <tt/util-linux-2.5/, or
-change `savetty' to `my_savetty' in <tt/more.c/.)
+<tt/SVGATextMode-1.8.tar.gz/ contains <tt/SVGATextMode/, a program that
+obsoletes <tt/resizecons/.
+<p>
+<tt/util-linux-2.9/ contains <tt/setterm/, <tt/kbdrate/.
<p>
<tt/sh-utils-1.12/ contains <tt/stty/.
<p>
-<tt/open-1.4.tgz/ contains <tt/open/ (that should be renamed to
-<tt/openvt/). (See also <tt/dynamic-vc-1.1.tar.gz/ and <tt/consd-1.1.tgz/.)
-
-<tt/SVGATextMode-1.8.tar.gz/ contains <tt/SVGATextMode/, a program that
-obsoletes <tt/resizecons/.
+See also <tt/dynamic-vc-1.1.tar.gz/ and <tt/consd-1.1.tgz/ for
+programs that exploit the `Keyboard Signal' key. Very primitive
+versions are <tt/spawn_login/ or <tt/spawn_console/ found in the kbd package.
+<p>
+See <htmlurl name="font.tgz" url="http://www.cix.co.uk/~mayday/font.tgz">
+for a package that handles console fonts.
+<p>
The X distribution contains <tt/xmodmap/, <tt/xset/, <tt/kbd_mode/.
(See also X386keybd(1) for the situation under XFree86 1.3,
and Xserver(1) for the XKEYBOARD extension under X11R6.)
+A handy interface to <tt/xmodmap/ is <tt/xkeycaps/, see
+<htmlurl name="http://www.jwz.org/xkeycaps/" url="www.jwz.org/xkeycaps/">.
<tt/termcap-2.0.8.tar.gz/ contains <tt/termcap/, an old terminal
capabilities data base. <tt/ncurses-1.9.9e.tar.gz/ contains the
by the terminfo compiler <tt>/usr/lib/terminfo/tic</tt>, see tic(1).
Their contents can be examined using the program <tt/infocmp/,
see infocmp(1).
+
The Linux console sequences are documented in console_codes(4).
+
<sect>Keyboard generalities<p>
<nidx>keyboard!theory of operation</nidx>
<tt/getty/.
Note that many programs (like <tt/bash/, <tt/emacs/ etc.) have their own
-keybindings (defined in <tt>˜/.inputrc</tt>, <tt>˜/.emacs</tt> etc.) and
-are unaffected by the setting of the erase character.
+keybindings (defined in <tt>˜/.inputrc</tt>,
+<tt>˜/.emacs</tt> etc.) and are unaffected by the setting
+of the erase character.
The standard Unix tty driver does not recognize a cursor, or keys
(like the arrow keys) to move the current position, and hence does not
keymaps) and this may not yet be available in single user boot before
<tt>/usr</tt> has been mounted.
+<sect2>`How do I get a dvorak keyboard?'<p>
+<nidx>dvorak keyboard</nidx>
+The command
+<tscreen><verb>
+ % loadkeys dvorak
+</verb></tscreen>
+will give you a dvorak layout, probably by loading
+something like <tt>/usr/lib/kbd/keymaps/i386/dvorak/dvorak.map.gz</tt>.
+Under <tt/X/, put
+<tscreen><verb>
+ XkbLayout "dvorak"
+</verb></tscreen>
+in <tt>XF86Config</tt>.
+
<sect2>`Why doesn't the Backspace key generate BackSpace by default?'<p>
<nidx>backspace key!not generating correct keycode</nidx>
</verb></tscreen>
in <tt/.xinitrc/, and you are settled.
+For a much more extensive discussion of these things, and
+alternative solutions, see
+<htmlurl url="http://www.ibbnet.nl/~anne/keyboard.html"
+name="Anne Baretta's page">.
+
<sect>The console character sets<p>
<nidx>console character sets</nidx>
<nidx>character sets, console</nidx>
Fortunately it is possible to create a new console upon a single
keystroke, regardless of what is happening at the current console.
-If you have <tt/spawn_login/ from <tt/kbd-0.96.tar.gz/ and you put
+If you have <tt/spawn_login/ from <tt/kbd-0.99.tar.gz/ and you put
<tscreen><verb>
loadkeys << EOF
alt keycode 103 = Spawn_Console
K. For <tt/rlogin/, use option <tt/-8/.
L. For <tt/joe/,
-<tt>sunsite.unc.edu:/pub/Linux/apps/editors/joe-1.0.8-linux.tar.gz</tt>
+<tt>metalab.unc.edu:/pub/Linux/apps/editors/joe-1.0.8-linux.tar.gz</tt>
is said to work after editing the configuration file. Someone else said:
<tt/joe/: Put the <tt/-asis/ option in <tt>/isr/lib/joerc</tt> in the
first column.
(where `vcs' stands for `virtual console screen').
For example, you could have a clock program that displays the
current time in the upper right hand corner of the console screen
-(see the program <tt/vcstime/ in <tt/kbd-0.96.tar.gz/).
+(see the program <tt/vcstime/ in <tt/kbd-0.99.tar.gz/).
Just dumping the contents goes with <tt>cat /dev/vcs</tt><it/N/.
These device files <tt>/dev/vcs</tt><it/N/ do not contain
newlines, and do not contain attributes, like colors. From a program
<sect>Copyright<p>
Copyright (c) 1993-1999 by Andries Brouwer. This document may be
distributed under the terms set forth in the LDP license
-at <htmlurl url="http://sunsite.unc.edu/LDP/COPYRIGHT.html"
-name="http://sunsite.unc.edu/LDP/COPYRIGHT.html"> or
+at <htmlurl url="http://metalab.unc.edu/LDP/COPYRIGHT.html"
+name="http://metalab.unc.edu/LDP/COPYRIGHT.html"> or
<htmlurl url="ftp://www.win.tue.nl/pub/linux/LDP/COPYRIGHT.txt"
name="ftp://www.win.tue.nl/pub/linux/LDP/COPYRIGHT.txt">.
5.1.1 `Getty used to do the right thing with DEL and BS but is broken now?'
5.1.2 `Login behaves differently at the first and second login attempts?'
5.2 How to tell Linux what code to generate when a key is pressed
- 5.2.1 `Why doesn't the Backspace key generate BackSpace by default?'
+ 5.2.1 `How do I get a dvorak keyboard?'
+ 5.2.2 `Why doesn't the Backspace key generate BackSpace by default?'
5.3 How to tell X to interchange Delete and Backspace
5.4 How to tell emacs what to do when it receives a Delete or Backspace
5.5 How to tell emacs to interchange Delete and Backspace
16. Changing the video mode
16.1 Instructions for the use of resizecons
+
17. Changing the keyboard repeat rate
18. Scrolling
The following packages contain keyboard or console related programs.
- kbd-0.96.tar.gz contains loadkeys, dumpkeys, showkey, setmetamode,
- setleds, setfont, showfont, mapscrn, kbd_mode, loadunimap, chvt,
- resizecons, deallocvt, getkeycodes, setkeycodes.
+ kbd-1.00.tar.gz contains loadkeys, dumpkeys, showkey, setmetamode,
+ setleds, setfont, showfont, mapscrn, kbd_mode, kbdrate, loadunimap,
+ chvt, resizecons, deallocvt, getkeycodes, setkeycodes. It also
+ contains openvt, formerly called open.
- util-linux-2.6 contains setterm, kbdrate. (Yes, the more in util-
- linux-2.6 dumps core due to a name conflict. Preserve your old copy,
- or use util-linux-2.5, or change `savetty' to `my_savetty' in more.c.)
+ SVGATextMode-1.8.tar.gz contains SVGATextMode, a program that
+ obsoletes resizecons.
+
+ util-linux-2.9 contains setterm, kbdrate.
sh-utils-1.12 contains stty.
- open-1.4.tgz contains open (that should be renamed to openvt). (See
- also dynamic-vc-1.1.tar.gz and consd-1.1.tgz.)
+ See also dynamic-vc-1.1.tar.gz and consd-1.1.tgz for programs that
+ exploit the `Keyboard Signal' key. Very primitive versions are
+ spawn_login or spawn_console found in the kbd package.
+
+ See font.tgz for a package that handles console fonts.
- SVGATextMode-1.8.tar.gz contains SVGATextMode, a program that
- obsoletes resizecons.
The X distribution contains xmodmap, xset, kbd_mode. (See also
X386keybd(1) for the situation under XFree86 1.3, and Xserver(1) for
- the XKEYBOARD extension under X11R6.)
+ the XKEYBOARD extension under X11R6.) A handy interface to xmodmap is
+ xkeycaps, see http://www.jwz.org/xkeycaps/.
termcap-2.0.8.tar.gz contains termcap, an old terminal capabilities
data base. ncurses-1.9.9e.tar.gz contains the termlib data base which
See setterm(1) and kbdrate(8) for properties such as foreground and
background colors, screen blanking and character repeat rate when not
under X. Under X, see xset(1), also for key click and bell volume.
-
The file /etc/termcap defines the escape sequences used by many
programs addressing the console (or any other terminal). See
termcap(5). A more modern version is found in /usr/lib/terminfo. See
terminfo(5). Terminfo files are compiled by the terminfo compiler
/usr/lib/terminfo/tic, see tic(1). Their contents can be examined
- using the program infocmp, see infocmp(1). The Linux console
- sequences are documented in console_codes(4).
+ using the program infocmp, see infocmp(1).
+
+ The Linux console sequences are documented in console_codes(4).
+
without resetting other console attributes. For example, after
- % cat
- ^N
- ^D
+
+
+ % cat
+ ^N
+ ^D
your shell prompt will be all line-drawing characters. Now do (typing
blindly)
+
+
% cat
^O
^D
going back to the previous font with
- % setfont
+ % setfont
% loadunimap
+
+
+
which loads the default Unicode map (which is right for the default
font) all works correctly again. Usually loadunimap is not invoked
directly, but via setfont. Thus, the previous two commands may be
there are four main types of keyboards: QWERTY, QWERTZ, AZERTY and
DVORAK. The first three are named after the first six letter keys,
and roughly represent the English, German and French speaking coun-
- tries. Compared to QWERTY, the QWERTZ map interchanges Y and Z. Com-
- pared to QWERTY, the AZERTY map interchanges Q and A, W and Z, and has
- its M right of the L, at the semicolon position. DVORAK has an
+ tries. Compared to QWERTY, the QWERTZ map interchanges Y and Z.
+ Compared to QWERTY, the AZERTY map interchanges Q and A, W and Z, and
+ has its M right of the L, at the semicolon position. DVORAK has an
entirely different letter ordering. There are two types of Turkish
keyboard. The so-called `Q'-keyboard has a QWERTY layout, while the
`F'-keyboard has an entirely different layout, let us say fgGIod,
If the character is erased, but in a funny way, then something is
wrong with your tty settings. If echoprt is set, then erased charac-
ters are enclosed between \ and /. If echoe is not set, then the
- erase char is echoed (which is reasonable when it is a printing char-
- acter, like #). Most people will want stty echoe -echoprt. Saying
+ erase char is echoed (which is reasonable when it is a printing
+ character, like #). Most people will want stty echoe -echoprt. Saying
stty sane will do this and more. Saying stty -a shows your current
settings. How come this is not right by default? It is, if you use
the right getty.
have a command `delete current character' either. But for example you
can get bash on the console to recognize the Delete key by putting
- set editing-mode emacs
- "\e[3~":delete-char
+
+ set editing-mode emacs
+ "\e[3~":delete-char
/usr has been mounted.
- 5\b5.\b.2\b2.\b.1\b1.\b. `\b`W\bWh\bhy\by d\bdo\boe\bes\bsn\bn'\b't\bt t\bth\bhe\be B\bBa\bac\bck\bks\bsp\bpa\bac\bce\be k\bke\bey\by g\bge\ben\bne\ber\bra\bat\bte\be B\bBa\bac\bck\bkS\bSp\bpa\bac\bce\be b\bby\by d\bde\bef\bfa\bau\bul\blt\bt?\b?'\b'
+ 5\b5.\b.2\b2.\b.1\b1.\b. `\b`H\bHo\bow\bw d\bdo\bo I\bI g\bge\bet\bt a\ba d\bdv\bvo\bor\bra\bak\bk k\bke\bey\byb\bbo\boa\bar\brd\bd?\b?'\b'
+
+ The command
+
+
+ % loadkeys dvorak
+
+
+
+
+ will give you a dvorak layout, probably by loading something like
+ /usr/lib/kbd/keymaps/i386/dvorak/dvorak.map.gz. Under X, put
+
+
+ XkbLayout "dvorak"
+
+
+
+
+ in XF86Config.
+
+
+
+
+
+ 5\b5.\b.2\b2.\b.2\b2.\b. `\b`W\bWh\bhy\by d\bdo\boe\bes\bsn\bn'\b't\bt t\bth\bhe\be B\bBa\bac\bck\bks\bsp\bpa\bac\bce\be k\bke\bey\by g\bge\ben\bne\ber\bra\bat\bte\be B\bBa\bac\bck\bkS\bSp\bpa\bac\bce\be b\bby\by d\bde\bef\bfa\bau\bul\blt\bt?\b?'\b'
(i) Because the VT100 had a Delete key above the Enter key.
(but usually this is the default binding already).
-
-
-
5\b5.\b.4\b4.\b. H\bHo\bow\bw t\bto\bo t\bte\bel\bll\bl e\bem\bma\bac\bcs\bs w\bwh\bha\bat\bt t\bto\bo d\bdo\bo w\bwh\bhe\ben\bn i\bit\bt r\bre\bec\bce\bei\biv\bve\bes\bs a\ba D\bDe\bel\ble\bet\bte\be o\bor\br
B\bBa\bac\bck\bks\bsp\bpa\bac\bce\be
bound to Ctrl-H). One can distinguish Backspace and Delete, e.g. by
- (global-unset-key [backspace] )
- (global-set-key [backspace] 'delete-backward-char)
- (global-unset-key [delete] )
- (global-set-key [delete] 'delete-char)
+ (global-unset-key [backspace] )
+ (global-set-key [backspace] 'delete-backward-char)
+ (global-unset-key [delete] )
+ (global-set-key [delete] 'delete-char)
- XTerm*VT100.Translations: #override\n\
- <KeyPress> BackSpace : string(0x7f)\n\
- <KeyPress> Delete : string(0x08)\n
+
+
+
+ XTerm*VT100.Translations: #override\n\
+ <KeyPress> BackSpace : string(0x7f)\n\
+ <KeyPress> Delete : string(0x08)\n
Putting
- *XmText.translations: #override\n\
- <Key>osfDelete: delete-previous-character()
- *XmTextField.translations: #override\n\
- <Key>osfDelete: delete-previous-character()
+ *XmText.translations: #override\n\
+ <Key>osfDelete: delete-previous-character()
+ *XmTextField.translations: #override\n\
+ <Key>osfDelete: delete-previous-character()
The netscape FAQ, however, says:
+
+
+
+
+
+
+
+
+
+
+
+
+
Why doesn't my Backspace key work in text fields?
By default, Linux and XFree86 come with the Backspace and Delete keys
misconfigured. All Motif programs (including, of course, Netscape
Add the following lines to your .xinitrc file:
+ xmodmap <<-EOF
+ keycode 22 = BackSpace osfBackSpace
+ keycode 107 = Delete
+ EOF
+ # start your window manager here, for example:
+ #(fvwm) 2>&1 | tee /dev/tty /dev/console
-
-
- xmodmap <<-EOF
- keycode 22 = BackSpace osfBackSpace
- keycode 107 = Delete
- EOF
-
- # start your window manager here, for example:
- #(fvwm) 2>&1 | tee /dev/tty /dev/console
-
- stty sane
- stty erase ^H
- loadmap <<-EOF
- keycode 14 = BackSpace
- keycode 111 = Delete
- EOF
-
+ stty sane
+ stty erase ^H
+ loadmap <<-EOF
+ keycode 14 = BackSpace
+ keycode 111 = Delete
+ EOF
in .Xresources, and
- xrdb -merge .Xresources
+
+ xrdb -merge .Xresources
in .xinitrc, and you are settled.
+ For a much more extensive discussion of these things, and alternative
+ solutions, see Anne Baretta's page.
+
6\b6.\b. T\bTh\bhe\be c\bco\bon\bns\bso\bol\ble\be c\bch\bha\bar\bra\bac\bct\bte\ber\br s\bse\bet\bts\bs
to create a new console upon a single keystroke, regardless of what is
happening at the current console.
- If you have spawn_login from kbd-0.96.tar.gz and you put
-
-
+ If you have spawn_login from kbd-0.99.tar.gz and you put
-
- loadkeys << EOF
- alt keycode 103 = Spawn_Console
- EOF
- spawn_login &
+ loadkeys << EOF
+ alt keycode 103 = Spawn_Console
+ EOF
+ spawn_login &
Ctrl-AltGr-Del is no longer by default assigned to Boot.
-
-
8\b8.\b.2\b2.\b. O\bOt\bth\bhe\ber\br c\bco\bom\bmb\bbi\bin\bna\bat\bti\bio\bon\bns\bs
Caps_On (CapsLock is a toggle; this key sets)
Compose Ctrl-.
-
-
-
8\b8.\b.3\b3.\b. X\bX C\bCo\bom\bmb\bbi\bin\bna\bat\bti\bio\bon\bns\bs
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.
application key mode will not change the NumLock status, but produce
an escape sequence. If you want the NumLock key to always change the
Numlock status, bind it to Bare_Num_Lock.)
+
2. Next, there are per-tty default keyboard flags, to initialize the
keyboard flags when a reset occurs. Thus if you want NumLock on all
the time, that is possible. The usual way to change them is by
/usr/lib/terminfo/c/console.
-
1\b11\b1.\b.1\b1.\b. T\bTe\ber\brm\bmi\bin\bnf\bfo\bo
A. For emacs the details strongly depend on the version. The
information below is for version 19.34. Put lines
-
-
(set-input-mode nil nil 1)
(standard-display-european t)
(require 'iso-syntax)
The command
- (iso-accents-mode)
+
+ (iso-accents-mode)
into your $HOME/.inputrc.
-
E. For tcsh, use
K. For rlogin, use option -8.
L. For joe,
- sunsite.unc.edu:/pub/Linux/apps/editors/joe-1.0.8-linux.tar.gz is said
+ metalab.unc.edu:/pub/Linux/apps/editors/joe-1.0.8-linux.tar.gz is said
to work after editing the configuration file. Someone else said: joe:
Put the -asis option in /isr/lib/joerc in the first column.
which substitutes its own handling. However, it seems useful to
document some of the Linux keyboard and console related properties of
X.
+
First of all, when X is started (say using startx or xinit) it opens
the first unused console, unless the desired console has been
indicated explicitly, as in xinit -- vt12. Note that this will fail
definition of Compose in Xconfig will override its value as found in
the Linux keymap.)
-
What happens to the strings associated with the function keys?
Nothing, X does not have such a concept. (But it is possible to define
strings for function keys in xterm - note however that the window
the current keymap, make a copy and edit that:
- % dumpkeys > my_keymap
- % cp my_keymap trial_keymap
- % emacs trial_keymap
- % loadkeys trial_keymap
- %
+
+
+ % dumpkeys > my_keymap
+ % cp my_keymap trial_keymap
+ % emacs trial_keymap
+ % loadkeys trial_keymap
+ %
1\b15\b5.\b.1\b1.\b. `\b`I\bI c\bca\ban\bn u\bus\bse\be o\bon\bnl\bly\by o\bon\bne\be f\bfi\bin\bng\bge\ber\br t\bto\bo t\bty\byp\bpe\be w\bwi\bit\bth\bh'\b'
-
"Can the Shift, Ctrl and Alt keys be made to behave as toggles?"
Yes, after saying
+
1\b16\b6.\b. C\bCh\bha\ban\bng\bgi\bin\bng\bg t\bth\bhe\be v\bvi\bid\bde\beo\bo m\bmo\bod\bde\be
corresponding symbol. Use the program kbdrate(8) to change the repeat
rate, or, if that doesn't help, edit or remove the section
-
-
-
-
-
______________________________________________________________________
! set the keyboard repeat rate to the max
the device /dev/vcs_\bN (where `vcs' stands for `virtual console
screen'). For example, you could have a clock program that displays
the current time in the upper right hand corner of the console screen
- (see the program vcstime in kbd-0.96.tar.gz). Just dumping the
+ (see the program vcstime in kbd-0.99.tar.gz). Just dumping the
contents goes with cat /dev/vcs_\bN. These device files /dev/vcs_\bN do not
contain newlines, and do not contain attributes, like colors. From a
program it is usually better to use /dev/vcsa_\bN (`virtual console
: Sometimes my cursor keys or keypad keys produce strange codes?
+
When the terminal is in application cursor key mode the cursor keys
produce Esc O x and otherwise Esc [ x where x is one of A,B,C,D.
Certain programs put the terminal in application cursor key mode; if
clears it again.
-
-
2\b22\b2.\b. H\bHa\bar\brd\bdw\bwa\bar\bre\be i\bin\bnc\bco\bom\bmp\bpa\bat\bti\bib\bbi\bil\bli\bit\bty\by
There may be a relation between keyboard problems and the video card
in use.
-
Shawn K. Quinn (skquinn@wt.net) wrote: `I have a Zeos Pantera
Pentium-90 that originally came with a Diamond Stealth 64 S3-based
video card. Under X I frequently got q's inserted into my text (how
Copyright (c) 1993-1999 by Andries Brouwer. This document may be
distributed under the terms set forth in the LDP license at
- http://sunsite.unc.edu/LDP/COPYRIGHT.html or
+ http://metalab.unc.edu/LDP/COPYRIGHT.html or
ftp://www.win.tue.nl/pub/linux/LDP/COPYRIGHT.txt.
Additions and corrections are welcome. Andries Brouwer - aeb@cwi.nl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
% less -r utfdemo
% unicode_stop # idem
-2008 ¿ PUNCTUATION SPACE
-263A ☺¿ WHITE SMILING FACE
-263B ☻¿ BLACK SMILING FACE
-2665 ♥¿ BLACK HEART SUIT
-2666 ♦¿ BLACK DIAMOND SUIT
-2663 ♣¿ BLACK CLUB SUIT
-2660 ♠¿ BLACK SPADE SUIT
-2022 •¿ BULLET
-25D8 ◘¿ INVERSE BULLET
-25CB ○¿ WHITE CIRCLE
-25D9 ◙¿ INVERSE WHITE CIRCLE
-2642 ♂¿ MALE SIGN
-2640 ♀¿ FEMALE SIGN
-266A ♪¿ EIGHTH NOTE
-266C ♬¿ BEAMED SIXTEENTH NOTES
-263C ☼¿ WHITE SUN WITH RAYS
-25B6 ▶¿ BLACK RIGHT-POINTING TRIANGLE
-25C0 ◀¿ BLACK LEFT-POINTING TRIANGLE
-2195 ↕¿ UP DOWN ARROW
-203C ‼¿ DOUBLE EXCLAMATION MARK
-25AC ▬¿ BLACK RECTANGLE
-21A8 ↨¿ UP DOWN ARROW WITH BASE
-2191 ↑¿ UPWARDS ARROW
-2193 ↓¿ DOWNWARDS ARROW
-2192 →¿ RIGHTWARDS ARROW
-2190 ←¿ LEFTWARDS ARROW
-2319 ⌙¿ TURNED NOT SIGN
-2194 ↔¿ LEFT RIGHT ARROW
-25B2 ▲¿ BLACK UP-POINTING TRIANGLE
-25BC ▼¿ BLACK DOWN-POINTING TRIANGLE
-2302 ⌂¿ HOUSE
-20A7 ₧¿ PESETA SIGN
-0192 ƒ§¿ LATIN SMALL LETTER F WITH HOOK
-2310 ⌐¿ REVERSED NOT SIGN
-2591 ░¿ LIGHT SHADE
-2592 ▒¿ MEDIUM SHADE
-2593 ▓¿ DARK SHADE
-2502 │¿ BOX DRAWINGS LIGHT VERTICAL
-2524 ┤¿ BOX DRAWINGS LIGHT VERTICAL AND LEFT
-2561 ╡¿ BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-2562 ╢¿ BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-2556 ╖¿ BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-2555 ╕¿ BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-2563 ╣¿ BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-2551 ║¿ BOX DRAWINGS DOUBLE VERTICAL
-2557 ╗¿ BOX DRAWINGS DOUBLE DOWN AND LEFT
-255D ╝¿ BOX DRAWINGS DOUBLE UP AND LEFT
-255C ╜¿ BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-255B ╛¿ BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-2510 ┐¿ BOX DRAWINGS LIGHT DOWN AND LEFT
-2514 └¿ BOX DRAWINGS LIGHT UP AND RIGHT
-2534 ┴¿ BOX DRAWINGS LIGHT UP AND HORIZONTAL
-252C ¨ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-251C è BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-2500 ─¿ BOX DRAWINGS LIGHT HORIZONTAL
-253C Ũ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-255E ƨ BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-255F Ǩ BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-255A Ȩ BOX DRAWINGS DOUBLE UP AND RIGHT
-2554 ɨ BOX DRAWINGS DOUBLE DOWN AND RIGHT
-2569 ʨ BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-2566 ˨ BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-2560 ̨ BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-2550 ͨ BOX DRAWINGS DOUBLE HORIZONTAL
-256C Ψ BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-2567 Ϩ BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-2568 Ш BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-2564 Ѩ BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-2565 Ҩ BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-2559 Ө BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-2558 Ԩ BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-2552 ը BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-2553 ֨ BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-256B ר BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-256A ب BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-2518 ٨ BOX DRAWINGS LIGHT UP AND LEFT
-250C ڨ BOX DRAWINGS LIGHT DOWN AND RIGHT
-2588 ۨ FULL BLOCK
-2584 ܨ LOWER HALF BLOCK
-258C ݨ LEFT HALF BLOCK
-2590 ި RIGHT HALF BLOCK
-2580 ߨ UPPER HALF BLOCK
-03B1 α\80¿ GREEK SMALL LETTER ALPHA
-0393 Γ\80¿ GREEK CAPITAL LETTER GAMMA
-03C0 π\80¿ GREEK SMALL LETTER PI
-03A3 Σ\80¿ GREEK CAPITAL LETTER SIGMA
-03C3 σ\80¿ GREEK SMALL LETTER SIGMA
-03C4 τ\80¿ GREEK SMALL LETTER TAU
-03A6 Φ\80¿ GREEK CAPITAL LETTER PHI
-0398 Θ\80¿ GREEK CAPITAL LETTER THETA
-2126 Ω¿ OHM SIGN
-03B4 δ¦¿ GREEK SMALL LETTER DELTA
-221E ∞¿ INFINITY
-2205 ∅¿ EMPTY SET
-2208 ∈¿ ELEMENT OF
-2229 ∩¿ INTERSECTION
-2261 ≡¿ IDENTICAL TO
-2265 ≥¿ GREATER-THAN OR EQUAL TO
-2264 ≤¿ LESS-THAN OR EQUAL TO
-2320 ⌠¿ TOP HALF INTEGRAL
-2321 ⌡¿ BOTTOM HALF INTEGRAL
-2248 ≈¿ ALMOST EQUAL TO
-22C5 ⋅¿ DOT OPERATOR
-221A √¿ SQUARE ROOT
-207F ⁿ¿ SUPERSCRIPT LATIN SMALL LETTER N
-220E ∎¿ END OF PROOF
+2008 PUNCTUATION SPACE
+263A ☺ WHITE SMILING FACE
+263B ☻ BLACK SMILING FACE
+2665 ♥ BLACK HEART SUIT
+2666 ♦ BLACK DIAMOND SUIT
+2663 ♣ BLACK CLUB SUIT
+2660 ♠ BLACK SPADE SUIT
+2022 • BULLET
+25D8 ◘ INVERSE BULLET
+25CB ○ WHITE CIRCLE
+25D9 ◙ INVERSE WHITE CIRCLE
+2642 ♂ MALE SIGN
+2640 ♀ FEMALE SIGN
+266A ♪ EIGHTH NOTE
+266C ♬ BEAMED SIXTEENTH NOTES
+263C ☼ WHITE SUN WITH RAYS
+25B6 ▶ BLACK RIGHT-POINTING TRIANGLE
+25C0 ◀ BLACK LEFT-POINTING TRIANGLE
+2195 ↕ UP DOWN ARROW
+203C ‼ DOUBLE EXCLAMATION MARK
+25AC ▬ BLACK RECTANGLE
+21A8 ↨ UP DOWN ARROW WITH BASE
+2191 ↑ UPWARDS ARROW
+2193 ↓ DOWNWARDS ARROW
+2192 → RIGHTWARDS ARROW
+2190 ← LEFTWARDS ARROW
+2319 ⌙ TURNED NOT SIGN
+2194 ↔ LEFT RIGHT ARROW
+25B2 ▲ BLACK UP-POINTING TRIANGLE
+25BC ▼ BLACK DOWN-POINTING TRIANGLE
+2302 ⌂ HOUSE
+20A7 ₧ PESETA SIGN
+0192 ƒ LATIN SMALL LETTER F WITH HOOK
+2310 ⌐ REVERSED NOT SIGN
+2591 ░ LIGHT SHADE
+2592 ▒ MEDIUM SHADE
+2593 ▓ DARK SHADE
+2502 │ BOX DRAWINGS LIGHT VERTICAL
+2524 ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT
+2561 ╡ BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562 ╢ BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2556 ╖ BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2555 ╕ BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2563 ╣ BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2551 ║ BOX DRAWINGS DOUBLE VERTICAL
+2557 ╗ BOX DRAWINGS DOUBLE DOWN AND LEFT
+255D ╝ BOX DRAWINGS DOUBLE UP AND LEFT
+255C ╜ BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255B ╛ BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+2510 ┐ BOX DRAWINGS LIGHT DOWN AND LEFT
+2514 └ BOX DRAWINGS LIGHT UP AND RIGHT
+2534 ┴ BOX DRAWINGS LIGHT UP AND HORIZONTAL
+252C ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+251C ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+2500 ─ BOX DRAWINGS LIGHT HORIZONTAL
+253C ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+255E ╞ BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F ╟ BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+255A ╚ BOX DRAWINGS DOUBLE UP AND RIGHT
+2554 ╔ BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2569 ╩ BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+2566 ╦ BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2560 ╠ BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2550 ═ BOX DRAWINGS DOUBLE HORIZONTAL
+256C ╬ BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+2567 ╧ BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568 ╨ BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2564 ╤ BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565 ╥ BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2559 ╙ BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+2558 ╘ BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2552 ╒ BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553 ╓ BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+256B ╫ BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256A ╪ BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+2518 ┘ BOX DRAWINGS LIGHT UP AND LEFT
+250C ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT
+2588 █ FULL BLOCK
+2584 ▄ LOWER HALF BLOCK
+258C ▌ LEFT HALF BLOCK
+2590 ▐ RIGHT HALF BLOCK
+2580 ▀ UPPER HALF BLOCK
+03B1 α GREEK SMALL LETTER ALPHA
+0393 Γ GREEK CAPITAL LETTER GAMMA
+03C0 π GREEK SMALL LETTER PI
+03A3 Σ GREEK CAPITAL LETTER SIGMA
+03C3 σ GREEK SMALL LETTER SIGMA
+03C4 τ GREEK SMALL LETTER TAU
+03A6 Φ GREEK CAPITAL LETTER PHI
+0398 Θ GREEK CAPITAL LETTER THETA
+2126 Ω OHM SIGN
+03B4 δ GREEK SMALL LETTER DELTA
+221E ∞ INFINITY
+2205 ∅ EMPTY SET
+2208 ∈ ELEMENT OF
+2229 ∩ INTERSECTION
+2261 ≡ IDENTICAL TO
+2265 ≥ GREATER-THAN OR EQUAL TO
+2264 ≤ LESS-THAN OR EQUAL TO
+2320 ⌠ TOP HALF INTEGRAL
+2321 ⌡ BOTTOM HALF INTEGRAL
+2248 ≈ ALMOST EQUAL TO
+22C5 ⋅ DOT OPERATOR
+221A √ SQUARE ROOT
+207F ⁿ SUPERSCRIPT LATIN SMALL LETTER N
+220E ∎ END OF PROOF
+++ /dev/null
-charset "iso-8859-9"
-strings as usual
-
-keycode 1 = Escape Escape
- alt keycode 1 = Meta_Escape
-keycode 2 = one exclam asciitilde
- alt keycode 2 = Meta_one
- alt shift keycode 2 = Meta_exclam
-keycode 3 = two at ampersand
- control keycode 3 = nul
- control shift keycode 3 = nul
- alt keycode 3 = Meta_two
- alt shift keycode 3 = Meta_at
-keycode 4 = three quotedbl numbersign
- control keycode 4 = Escape
- alt keycode 4 = Meta_three
- alt shift keycode 4 = Meta_quotedbl
-keycode 5 = four apostrophe dollar
- control keycode 5 = Control_backslash
- alt keycode 5 = Meta_four
- alt shift keycode 5 = Meta_apostrophe
-keycode 6 = five parenleft less
- control keycode 6 = Control_bracketright
- alt keycode 6 = Meta_five
- alt shift keycode 6 = Meta_parenleft
-keycode 7 = six slash greater
- control keycode 7 = Control_asciicircum
- alt keycode 7 = Meta_six
- alt shift keycode 7 = Meta_slash
-keycode 8 = seven parenright braceleft
- control keycode 8 = Control_underscore
- alt keycode 8 = Meta_seven
- alt shift keycode 8 = Meta_parenright
-keycode 9 = eight underscore braceleft
- control keycode 9 = Delete
- alt keycode 9 = Meta_eight
- alt shift keycode 9 = Meta_underscore
-keycode 10 = nine percent bracketleft
- alt keycode 10 = Meta_nine
- alt shift keycode 10 = Meta_percent
-keycode 11 = zero colon bracketright
- alt keycode 11 = Meta_zero
- alt shift keycode 11 = Meta_colon
-keycode 12 = x
- control keycode 12 = Control_underscore
- control shift keycode 12 = Control_underscore
-keycode 13 = q
-keycode 14 = Delete Delete
- alt keycode 14 = Meta_Delete
-keycode 15 = Tab
- alt keycode 15 = Meta_Tab
-keycode 16 = f
-keycode 17 = g
-keycode 18 = +0360 +0320
-keycode 19 = +0375 +I
- altgr keycode 19 = +0356
- altgr shift keycode 19 = +0316
-keycode 20 = o
- altgr keycode 20 = +0364
- altgr shift keycode 20 = +0324
-keycode 21 = d
-keycode 22 = r
-keycode 23 = n
-keycode 24 = h
-keycode 25 = p
-keycode 26 = semicolon asterisk
- control keycode 26 = Escape
- alt keycode 26 = Meta_semicolon
- alt shift keycode 26 = Meta_asterisk
-keycode 27 = asciicircum grave
- control keycode 27 = Control_bracketright
- alt keycode 27 = Meta_asciicircum
- alt shift keycode 27 = Meta_grave
-keycode 28 = Return
- alt keycode 28 = 0x080d
-keycode 29 = Control
-keycode 30 = u
- altgr keycode 30 = +0373
- altgr shift keycode 30 = +0333
-keycode 31 = +i +0335
-keycode 32 = e
-keycode 33 = a
- altgr keycode 33 = +0342
- altgr shift keycode 33 = +0302
-keycode 34 = +0374 +0334
-keycode 35 = t
-keycode 36 = k
-keycode 37 = m
-keycode 38 = l
-keycode 39 = y
-keycode 40 = +0376 +0336
- control keycode 40 = Control_g
-keycode 41 = w
- control keycode 41 = nul
-keycode 42 = Shift
-keycode 43 = equal plus
- control keycode 43 = Control_backslash
- alt keycode 43 = Meta_equal
- alt shift keycode 43 = Meta_plus
-keycode 44 = j
-keycode 45 = +0366 +0326
-keycode 46 = v
-keycode 47 = c
-keycode 48 = +0347 +0307
-keycode 49 = z
-keycode 50 = s
-keycode 51 = b
-keycode 52 = period question
- control keycode 52 = Delete
- alt keycode 52 = Meta_period
- alt shift keycode 52 = Meta_question
-keycode 53 = comma minus slash
- alt keycode 53 = Meta_comma
- alt shift keycode 53 = Meta_minus
-keycode 54 = Shift
-keycode 55 = KP_Multiply
-keycode 56 = Alt
-keycode 57 = space
- control keycode 57 = nul
- alt keycode 57 = Meta_space
-keycode 58 = Caps_Lock
-keycode 59 = F1 F11 Console_13
- control keycode 59 = F1
- alt keycode 59 = Console_1
- control alt keycode 59 = Console_1
-keycode 60 = F2 F12 Console_14
- control keycode 60 = F2
- alt keycode 60 = Console_2
- control alt keycode 60 = Console_2
-keycode 61 = F3 F13 Console_15
- control keycode 61 = F3
- alt keycode 61 = Console_3
- control alt keycode 61 = Console_3
-keycode 62 = F4 F14 Console_16
- control keycode 62 = F4
- alt keycode 62 = Console_4
- control alt keycode 62 = Console_4
-keycode 63 = F5 F15 Console_17
- control keycode 63 = F5
- alt keycode 63 = Console_5
- control alt keycode 63 = Console_5
-keycode 64 = F6 F16 Console_18
- control keycode 64 = F6
- alt keycode 64 = Console_6
- control alt keycode 64 = Console_6
-keycode 65 = F7 F17 Console_19
- control keycode 65 = F7
- alt keycode 65 = Console_7
- control alt keycode 65 = Console_7
-keycode 66 = F8 F18 Console_20
- control keycode 66 = F8
- alt keycode 66 = Console_8
- control alt keycode 66 = Console_8
-keycode 67 = F9 F19 Console_21
- control keycode 67 = F9
- alt keycode 67 = Console_9
- control alt keycode 67 = Console_9
-keycode 68 = F10 F20 Console_22
- control keycode 68 = F10
- alt keycode 68 = Console_10
- control alt keycode 68 = Console_10
-keycode 69 = Num_Lock
-keycode 70 = Scroll_Lock Show_Memory Show_Registers
- control keycode 70 = Show_State
- alt keycode 70 = Scroll_Lock
-keycode 71 = KP_7
- alt keycode 71 = Ascii_7
-keycode 72 = KP_8
- alt keycode 72 = Ascii_8
-keycode 73 = KP_9
- alt keycode 73 = Ascii_9
-keycode 74 = KP_Subtract
-keycode 75 = KP_4
- alt keycode 75 = Ascii_4
-keycode 76 = KP_5
- alt keycode 76 = Ascii_5
-keycode 77 = KP_6
- alt keycode 77 = Ascii_6
-keycode 78 = KP_Add
-keycode 79 = KP_1
- alt keycode 79 = Ascii_1
-keycode 80 = KP_2
- alt keycode 80 = Ascii_2
-keycode 81 = KP_3
- alt keycode 81 = Ascii_3
-keycode 82 = KP_0
- alt keycode 82 = Ascii_0
-keycode 83 = KP_Period
- altgr control keycode 83 = Boot
- control alt keycode 83 = Boot
-keycode 84 = Last_Console
-keycode 85 =
-keycode 86 = backslash bar
- alt keycode 86 = Meta_backslash
- alt shift keycode 86 = Meta_bar
-keycode 87 = F11 F11 Console_23
- control keycode 87 = F11
- alt keycode 87 = Console_11
- control alt keycode 87 = Console_11
-keycode 88 = F12 F12 Console_24
- control keycode 88 = F12
- alt keycode 88 = Console_12
- control alt keycode 88 = Console_12
-keycode 89 =
-keycode 90 =
-keycode 91 =
-keycode 92 =
-keycode 93 =
-keycode 94 =
-keycode 95 =
-keycode 96 = KP_Enter
-keycode 97 = Control
-keycode 98 = KP_Divide
-keycode 99 = Control_backslash
- control keycode 99 = Control_backslash
- alt keycode 99 = Control_backslash
-keycode 100 = AltGr
-keycode 101 = Break
-keycode 102 = Find
-keycode 103 = Up
-keycode 104 = Prior
- shift keycode 104 = Scroll_Backward
-keycode 105 = Left
- alt keycode 105 = Decr_Console
-keycode 106 = Right
- alt keycode 106 = Incr_Console
-keycode 107 = Select
-keycode 108 = Down
-keycode 109 = Next
- shift keycode 109 = Scroll_Forward
-keycode 110 = Insert
-keycode 111 = Delete Delete
- alt keycode 111 = Meta_Delete
-keycode 112 =
-keycode 113 =
-keycode 114 =
-keycode 115 =
-keycode 116 =
-keycode 117 =
-keycode 118 =
-keycode 119 =
-keycode 120 =
-keycode 121 =
-keycode 122 =
-keycode 123 =
-keycode 124 =
-keycode 125 =
-keycode 126 =
-keycode 127 =
+++ /dev/null
-#encoding: UTF-8
-# Lithuanian key-map for PC 101/102 keyboard in ISO 8859-4 mode. V1.0.
-# Comments & bug reports to: Ričardas Čepas <rch@pub.osf.lt>
-# Load after loading lt.map. See lt.map for more info.
-# Usage: kbd_mode -a; loadkeys lt.map lt.l4.map; setfont lat4u* -m vga2iso
-
-charset "iso-8859-4"
-
-# U+0105 U+0104
-AltGr keycode 2 = +aogonek
-Shift AltGr keycode 2 = +Aogonek
-
-# U+010d U+010c
-AltGr keycode 3 = +ccaron
-Shift AltGr keycode 3 = +Ccaron
-
-# U+0119 U+0118
-AltGr keycode 4 = +eogonek
-Shift AltGr keycode 4 = +Eogonek
-
-# U+0117 U+0116
-AltGr keycode 5 = +eabovedot
-Shift AltGr keycode 5 = +Eabovedot
-
-# U+012f U+012e
-AltGr keycode 6 = +iogonek
-Shift AltGr keycode 6 = +Iogonek
-
-# U+0161 U+0160
-AltGr keycode 7 = +scaron
-Shift AltGr keycode 7 = +Scaron
-
-# U+0173 U+0172
-AltGr keycode 8 = +uogonek
-Shift AltGr keycode 8 = +Uogonek
-
-# U+016b U+016a
-AltGr keycode 9 = +umacron
-Shift AltGr keycode 9 = +Umacron
-
-# not available in ISO 8859-4 low_double_comma_quotation_mark „ U+201e
-AltGr keycode 10 = 0x90
-
-# not available in ISO 8859-4 double_turned_comma_quotation_mark “ U+201c
-AltGr keycode 11 = 0x91
-
-Shift Control keycode 12 = hyphen
-Shift AltGr Control keycode 12 = hyphen
-Shift Alt keycode 12 = minus
-Shift AltGr Alt keycode 12 = minus
-Shift Control Alt keycode 12 = hyphen
-Shift AltGr Control Alt keycode 12 = hyphen
-
-# U+017e U+017d
-AltGr keycode 13 = +zcaron
-Shift AltGr keycode 13 = +Zcaron
-
- Control Alt keycode 40 = quotedbl
- AltGr Control Alt keycode 40 = quotedbl
-Shift Control Alt keycode 40 = quotedbl
-Shift AltGr Control Alt keycode 40 = quotedbl
-
-Shift Control keycode 57 = nobreakspace
-Shift AltGr Control keycode 57 = nobreakspace
-Shift Control Alt keycode 57 = nobreakspace
-Shift AltGr Control Alt keycode 57 = nobreakspace
+++ /dev/null
-The swedish maps are identical to the finnish ones.
-Use fi*.map.
--- /dev/null
+install:
+ for i in man?; do \
+ install -d -m 755 $(MANDIR)/$$i; \
+ install -m 644 $$i/*.[0-9] $(MANDIR)/$$i; \
+ done
+ rm -f $(MANDIR)/man5/keytables.5
+
+clean:
+ rm -f man1/dumpkeys.1 man1/loadkeys.1 man8/setfont.8
psfaddtable \- add a Unicode character table to a console font
.SH SYNOPSIS
.B psfaddtable
-.I fontfile tablefile
-.RI [ outfile ]
+.I fontfile tablefile outfile
.SH DESCRIPTION
.IX "psfaddtable command" "" "\fLpsfaddtable\fR command"
.LP
.I tablefile
to produce a font file with an embedded character table, which is
written to
-.I outfile
-if given, or else to standard output. Either
-.I fontfile
-or
-.I outfile
-(but not both) can be replaced by a single dash (\-) to read from
-standard input instead. If the
+.IR outfile .
+An input file name of "\-" denotes standard input,
+and an output file name of "\-" denotes standard output.
+If the
.I fontfile
already contains an embedded character table, it is ignored.
.SH TABLE FILE FORMAT
.IR 0 ),
or hexadecimal (preceded by
.IR 0x )
-format. The first number on each line indicates the glyph slot in the
+format, separated by spaces or tabs.
+The first number on each line indicates the glyph slot in the
font that is being referred to, this is between 0 and 0xff for a
256-character font and 0 and 0x1ff for a 512-character font. Any
subsequent numbers on the same line are Unicodes matched by this
-specific glyph slot. It is permissible to have multiple lines for the
-same glyph.
+specific glyph slot. Instead of a single Unicode one may have
+a sequence of Unicodes separates by commas, to denote that the
+glyph depicts the corresponding composed symbol.
+It is permissible to have multiple lines for the same glyph.
.SH "SEE ALSO"
.BR setfont (8),
.BR psfgettable (1),
psfstriptable \- remove the embedded Unicode character table from a console font
.SH SYNOPSIS
.B psfstriptable
-.I fontfile
-.RI [ outfile ]
+.I fontfile outfile
.SH DESCRIPTION
.IX "psfstriptable command" "" "\fLpsfstriptable\fR command"
.LP
.B psfstriptable
reads a .psf format console font from
.IR fontfile ,
-or standard input if
-.I fontfile
-is a single dash (\-), which may have
-an embedded Unicode font table, and writes (to standard output or the
-specified file) a .psf format console font file without an embedded
-character table.
+removes the embedded Unicode font table if there is one,
+and writes the result to
+.IR outfile .
+An input file name of "\-" denotes standard input,
+and an output file name of "\-" denotes standard output.
.SH "SEE ALSO"
.BR setfont (8),
.BR psfaddtable (1),
+.\" keymaps.5 - Copyright (C) Andries Brouwer 1998
+.\" May be freely distributed.
.\" @(#)keymaps.5 1.10 940130 aeb
.TH KEYMAPS 5 "24 April 1998"
.SH NAME
--- /dev/null
+.\" Copyright 1992, 1994 Rickard E. Faith (faith@cs.unc.edu)
+.\" May be distributed under the GNU General Public License
+.\" Updated Wed Jun 22 21:09:43 1994, faith@cs.unc.edu
+.\"
+.TH KBDRATE 8 "22 June 1994" "Linux 1.1.19" "Linux Programmer's Manual"
+.SH NAME
+kbdrate \- reset the keyboard repeat rate and delay time
+.SH SYNOPSIS
+.B "kbdrate [ \-s ] [ \-r"
+rate
+.B "] [ \-d"
+delay
+.B ]
+.SH DESCRIPTION
+.B kbdrate
+is used to change the keyboard repeat rate and delay time. The delay
+is the amount of time that a key must be depressed before it will start to
+repeat.
+
+Using
+.B kbdrate
+without any options will reset the repeat rate to 10.9 characters per second (cps)
+and the delay to 250 milliseconds (ms) for Intel- and M68K-based systems.
+These are the IBM defaults. On SPARC-based systems it will reset the repeat rate
+to 5 cps and the delay to 200 ms.
+
+.SH OPTIONS
+.TP
+.B \-s
+Silent. No messages are printed.
+.TP
+.BI \-r " rate"
+Change the keyboard repeat rate to
+.I rate
+cps. For Intel-based systems, the allowable range is from 2.0 to 30.0 cps.
+Only certain, specific values are possible, and the program will select the
+nearest possible value to the one specified. The possible values are given,
+in characters per second, as follows: 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.
+For SPARC-based systems, the allowable range is from 0 (no repeat) to 50 cps.
+.TP
+.BI \-d " delay"
+Change the delay to
+.I delay
+milliseconds.
+For Intel-based systems, the allowable range is from 250 to 1000 ms,
+in 250 ms steps. For SPARC systems, possible values are between 10 ms and 1440 ms,
+in 10 ms steps.
+.SH BUGS
+Not all keyboards support all rates.
+.PP
+Not all keyboards have the rates mapped in the same way.
+.PP
+Setting the repeat rate on the Gateway AnyKey keyboard does not work. If
+someone with a Gateway figures out how to program the keyboard, please send
+mail to util-linux@math.uio.no.
+.PP
+All this is very architecture dependent.
+Nowadays
+.B kbdrate
+first tries the KDKBDREP and KIOCSRATE ioctls.
+(The former usually works on an m68k machine, the latter for SPARC.)
+When these ioctls fail an ioport interface as on i386 is assumed.
+.SH FILES
+.I /etc/rc.local
+.br
+.I /dev/port
.B setfont
.RI "[-O " "font+umap.orig" ]
.RI "[-o " "font.orig" "] [-om " "cmap.orig" "] [-ou " "umap.orig" ]
-.RI "[-" "N" "] [" "font.new" ]
-.RI "[-m " "cmap"
-.RI "[-u " "umap" "]
+.RI "[-" "N" "] [" "font.new ..." ]
+.RI "[-m " "cmap" ]
+.RI "[-u " "umap" ]
.RI "[-h" "H" ]
.RI "[-v] [-V]"
.IX "setfont command" "" "\fLsetfont\fR command"
for some number
.IR N ),
then a default font is loaded (see below).
+One may give several fonts small fonts, all containing
+a unicode table, and
+.B setfont will combine them and load the union.
With the \-v option,
.B setfont
will be verbose.
bit images for each of 256 characters, one byte per scan line, and
N bytes per character (0 < N <= 32).
Also .psf files are accepted; these files have the same format
-but an additional 4 byte header, and may have 512 instead of 256
+but an additional header, and may have an arbitrary number of
characters, and additional Unicode mapping info.
The ordering of the symbols in the font is described by a
PROG=openvt
PROGS=$(PROG)
MAN=openvt.1
-BINDIR=/usr/bin
-MANDIR=/usr/man/man1
+BINDIR=${DESTDIR}/usr/bin
+MANDIR=${DESTDIR}/usr/man/man1
all: $(PROGS)
-rm -f $(PROGS)
install: $(PROGS)
+ install -d -m 755 $(BINDIR) $(MANDIR)
install -c $(PROGS) $(BINDIR)
install -c $(MAN) $(MANDIR)
--- /dev/null
+
+#include "../defines.h" /* for HAVE_locale_h */
+
+#ifndef PACKAGE
+#define PACKAGE "kbd"
+#endif
+
+#ifndef LOCALEDIR
+#define LOCALEDIR "/usr/share/locale"
+#endif
+
+#ifdef HAVE_locale_h
+# include <locale.h>
+#endif
+
+#ifdef ENABLE_NLS
+# include <libintl.h>
+# define _(Text) gettext (Text)
+# ifdef gettext_noop
+# define N_(String) gettext_noop (String)
+# else
+# define N_(String) (String)
+# endif
+#else
+# undef bindtextdomain
+# define bindtextdomain(Domain, Directory) /* empty */
+# undef textdomain
+# define textdomain(Domain) /* empty */
+# define _(Text) (Text)
+# define N_(Text) (Text)
+#endif
+
+
*
* Fixed some bugs; made it a bit more robust; renamed to openvt
* aeb@cwi.nl, 1998-06-06.
+ * Applied patch by Chuck Martin <cmartin@bigfoot.com>, i18n, aeb, 990316.
*/
#include "openvt.h"
+#include "nls.h"
-const char *version = "openvt 1.4a - (c) Jon Tombs 1994";
+const char *version = "openvt 1.4b - (c) Jon Tombs 1994";
#ifndef VTNAME
#error vt device name must be defined in openvt.h
struct vt_stat vtstat;
int vtno = -1;
int fd = -1;
+ int consfd = -1;
char optc = FALSE;
char show = FALSE;
char login = FALSE;
optc = 1; /* vtno was specified by the user */
vtno = (int) atol(optarg);
if (vtno <= 0 || vtno > 63) {
- fprintf(stderr, "openvt: %s illegal vt number\n", optarg);
+ fprintf(stderr, _("openvt: %s: illegal vt number\n"), optarg);
return 5;
}
/* close security holes - until we can do this safely */
case 'u':
/* we'll let 'em get away with the meaningless -ul combo */
if(getuid()) {
- fprintf(stderr,"%s: only root can use the -u flag.\n",argv[0]);
+ fprintf(stderr, _("openvt: only root can use the -u flag.\n"));
exit(1);
}
as_user = TRUE;
}
}
- fd = getfd();
- if (fd < 0) {
+ consfd = getfd();
+ if (consfd < 0) {
fprintf(stderr,
- "Couldnt get a file descriptor referring to the console\n");
+ _("Couldnt get a file descriptor referring to the console\n"));
return(2);
}
- if (ioctl(fd, VT_GETSTATE, &vtstat) < 0) {
- perror("openvt: can't get VTstate\n");
+ if (ioctl(consfd, VT_GETSTATE, &vtstat) < 0) {
+ perror("openvt: VT_GETSTATE");
return(4);
}
if (vtno == -1) {
- if ((ioctl(fd, VT_OPENQRY, &vtno) < 0) || (vtno == -1)) {
- perror("openvt: Cannot find a free VT\n");
+ if ((ioctl(consfd, VT_OPENQRY, &vtno) < 0) || (vtno == -1)) {
+ perror("openvt: VT_OPENQRY");
+ fprintf(stderr, _("openvt: cannot find a free vt\n"));
return(3);
}
} else if (!force) {
if (vtno >= 16) {
- fprintf(stderr, "openvt: cannot check whether vt %d is free\n", vtno);
- fprintf(stderr, " use `openvt -f' to force.\n");
+ fprintf(stderr, _("openvt: cannot check whether vt %d is free\n"), vtno);
+ fprintf(stderr, _(" use `openvt -f' to force.\n"));
return(7);
}
if (vtstat.v_state & (1 << vtno)) {
- fprintf(stderr, "openvt: vt %d is in use; command aborted\n", vtno);
- fprintf(stderr, " use `openvt -f' to force.\n");
+ fprintf(stderr, _("openvt: vt %d is in use; command aborted\n"), vtno);
+ fprintf(stderr, _(" use `openvt -f' to force.\n"));
return(7);
}
}
}
sprintf(vtname, VTNAME, vtno);
}
- fprintf(stderr, "openvt: Unable to open %s: %s\n",
+ fprintf(stderr, _("openvt: Unable to open %s: %s\n"),
vtname, strerror(errsv));
return(5);
}
Check that the real user can access this VT.
We assume getty has made any in use VT non accessable */
if (access(vtname, R_OK | W_OK) < 0) {
- fprintf(stderr, "openvt: Cannot open %s read/write (%s)\n", vtname,
- strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("openvt: Cannot open %s read/write (%s)\n"),
+ vtname, strerror(errsv));
return (5);
}
}
if (verbose)
- fprintf(stderr, "openvt: using VT %s\n", vtname);
+ fprintf(stderr, _("openvt: using VT %s\n"), vtname);
fflush(stderr);
if (setpgrp() < 0) {
#else
if (setsid() < 0) {
-#endif
- fprintf(stderr, "openvt: Unable to set new session (%s)\n",
- strerror(errno));
+#endif
+ int errsv = errno;
+ fprintf(stderr, _("openvt: Unable to set new session (%s)\n"),
+ strerror(errsv));
}
close(0); /* so that new vt becomes stdin */
/* and grab new one */
if ((fd = open(vtname, O_RDWR)) == -1) { /* strange ... */
- fprintf(stderr, "\nopenvt: could not open %s R/W (%s)\n",
- vtname, strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("\nopenvt: could not open %s R/W (%s)\n"),
+ vtname, strerror(errsv));
fflush(stderr);
_exit (1); /* maybe above user limit? */
}
if (show) {
if (ioctl(fd, VT_ACTIVATE, vtno)) {
+ int errsv = errno;
fprintf(stderr, "\nopenvt: could not activate vt %d (%s)\n",
- vtno, strerror(errno));
+ vtno, strerror(errsv));
fflush(stderr);
_exit (1); /* probably fd does not refer to a tty device file */
}
if (ioctl(fd, VT_WAITACTIVE, vtno)){
+ int errsv = errno;
fprintf(stderr, "\nopenvt: activation interrupted? (%s)\n",
- strerror(errno));
+ strerror(errsv));
fflush(stderr);
_exit (1);
}
}
close(1);
close(2);
- if (fd > 2)
- close(fd);
+ close(consfd);
dup(fd);
dup(fd);
if ( do_wait ) {
wait(NULL);
if (show) { /* Switch back... */
- (void) ioctl(fd, VT_ACTIVATE, vtstat.v_active);
+ if (ioctl(consfd, VT_ACTIVATE, vtstat.v_active)) {
+ perror("VT_ACTIVATE");
+ return 8;
+ }
/* wait to be really sure we have switched */
- (void) ioctl(fd, VT_WAITACTIVE, vtstat.v_active);
+ if (ioctl(consfd, VT_WAITACTIVE, vtstat.v_active)) {
+ perror("VT_WAITACTIVE");
+ return 8;
+ }
+ if (ioctl(consfd, VT_DISALLOCATE, vtno)) {
+ fprintf(stderr, _("openvt: could not deallocate console %d\n"),
+ vtno);
+ return(8);
+ }
}
}
PACKAGE = kbd
VERSION = 0.99
+include ../make_include
+
#
# po2tbl.sed is not taken from /usr/share/gettext/intl
# Often it is not present.
sed -f $(PO2TBL) < $< > $*.msg \
&& rm -f $@ && $(GENCAT) $@ $*.msg
-all: all-yes
+all: all-$(HAVE_XGETTEXT)
all-yes: cat-id-tbl.c $(CATALOGS)
all-no:
fi
rm -f stamp-cat-id && echo timestamp > stamp-cat-id
-install: install-data-yes
+install: install-data-$(HAVE_XGETTEXT)
install-data-no: all
install-data-yes: all
../mkinstalldirs $(datadir);
src/getkeycodes.c
src/getunimap.c
src/kbd_mode.c
+src/kbdrate.c
src/kdfontop.c
src/ksyms.c
src/loadunimap.c
src/mapscrn.c
-src/psfaddtable.c
-src/psfgettable.c
-src/psfstriptable.c
+src/outpsfheader.c
+src/psffontop.c
+src/psfxtable.c
src/resizecons.c
src/screendump.c
src/setfont.c
src/spawn_console.c
src/spawn_login.c
src/wctomb.c
-src/loadkeys.y
+src/xmalloc.c
+src/version.h
const struct _msg_ent _msg_tbl[] = {
{"", 1},
- {"usage: chvt N\n", 2},
- {"usage: %s [N1 N2 ...]\n", 3},
- {"%s: deallocating all unused consoles failed\n", 4},
- {"%s: 0: illegal VT number\n", 5},
- {"%s: VT 1 is the console and cannot be deallocated\n", 6},
- {"%s: could not deallocate console %d\n", 7},
- {"KDGKBENT error at index 0 in table %d: ", 8},
- {"%s: cannot find any keymaps?\n", 9},
- {"%s: plain map not allocated? very strange ...\n", 10},
- {"KDGKBENT error at index %d in table %d: ", 11},
- {"keycode range supported by kernel: 1 - %d\n", 12},
- {"max number of actions bindable to a key: %d\n", 13},
- {"number of keymaps in actual use: %d\n", 14},
- {"of which %d dynamically allocated\n", 15},
- {"ranges of action codes supported by kernel:\n", 16},
- {"number of function keys supported by kernel: %d\n", 17},
- {"max nr of compose definitions: %d\n", 18},
- {"nr of compose definitions in actual use: %d\n", 19},
+ {"openvt: %s: illegal vt number\n", 2},
+ {"openvt: only root can use the -u flag.\n", 3},
+ {"Couldnt get a file descriptor referring to the console\n", 4},
+ {"openvt: cannot find a free vt\n", 5},
+ {"openvt: cannot check whether vt %d is free\n", 6},
+ {" use `openvt -f' to force.\n", 7},
+ {"openvt: vt %d is in use; command aborted\n", 8},
+ {"openvt: Unable to open %s: %s\n", 9},
+ {"openvt: Cannot open %s read/write (%s)\n", 10},
+ {"openvt: using VT %s\n", 11},
+ {"openvt: Unable to set new session (%s)\n", 12},
+ {"\
+\n\
+openvt: could not open %s R/W (%s)\n", 13},
+ {"openvt: could not deallocate console %d\n", 14},
+ {"usage: chvt N\n", 15},
+ {"%s: deallocating all unused consoles failed\n", 16},
+ {"%s: 0: illegal VT number\n", 17},
+ {"%s: VT 1 is the console and cannot be deallocated\n", 18},
+ {"%s: could not deallocate console %d\n", 19},
+ {"KDGKBENT error at index 0 in table %d: ", 20},
+ {"%s: cannot find any keymaps?\n", 21},
+ {"%s: plain map not allocated? very strange ...\n", 22},
+ {"KDGKBENT error at index %d in table %d: ", 23},
+ {"keycode range supported by kernel: 1 - %d\n", 24},
+ {"max number of actions bindable to a key: %d\n", 25},
+ {"number of keymaps in actual use: %d\n", 26},
+ {"of which %d dynamically allocated\n", 27},
+ {"ranges of action codes supported by kernel:\n", 28},
+ {"number of function keys supported by kernel: %d\n", 29},
+ {"max nr of compose definitions: %d\n", 30},
+ {"nr of compose definitions in actual use: %d\n", 31},
{"\
Symbols recognized by %s:\n\
(numeric value, symbol)\n\
-\n", 20},
+\n", 32},
{"\
\n\
The following synonyms are recognized:\n\
-\n", 21},
- {"%-15s for %s\n", 22},
+\n", 33},
+ {"%-15s for %s\n", 34},
{"\
\n\
-Recognized modifier names and their column numbers:\n", 23},
- {"# not alt_is_meta: on keymap %d key %d is bound to", 24},
- {"impossible: not meta?\n", 25},
- {"KDGKBSENT failed at index %d: ", 26},
- {"dumpkeys version %s", 27},
+Recognized modifier names and their column numbers:\n", 35},
+ {"# not alt_is_meta: on keymap %d key %d is bound to", 36},
+ {"impossible: not meta?\n", 37},
+ {"KDGKBSENT failed at index %d: ", 38},
+ {"dumpkeys version %s", 39},
{"\
\n\
usage: dumpkeys [options...]\n\
\t --funcs-only\t display only the function key strings\n\
\t --keys-only\t display only key bindings\n\
\t --compose-only display only compose key combinations\n\
-\t-c --charset=iso-8859-{1,2,3,4,5,7,8,9}\n\
-\t koi8-{r,u}\t\t\n\
+\t-c --charset=", 40},
+ {"\
\t\t\t interpret character action codes to be from the\n\
-\t\t\t specified character set\n", 28},
- {"Out of Memory\n", 29},
- {"Out of Memory?\n", 30},
- {"error executing %s\n", 31},
- {"Couldnt get a file descriptor referring to the console\n", 32},
- {"usage: getkeycodes\n", 33},
- {"Plain scancodes xx (hex) versus keycodes (dec)\n", 34},
- {"0 is an error; for 1-88 (0x01-0x58) scancode equals keycode\n", 35},
+\t\t\t specified character set\n", 41},
+ {"error executing %s\n", 42},
+ {"usage: getkeycodes\n", 43},
+ {"Plain scancodes xx (hex) versus keycodes (dec)\n", 44},
+ {"0 is an error; for 1-88 (0x01-0x58) scancode equals keycode\n", 45},
{"\
\n\
\n\
-Escaped scancodes e0 xx (hex)\n", 36},
- {"failed to get keycode for scancode 0x%x\n", 37},
- {"strange... ct changed from %d to %d\n", 38},
- {"usage: kbd_mode [-a|-u|-k|-s]\n", 39},
- {"kbd_mode: error reading keyboard mode\n", 40},
- {"The keyboard is in raw (scancode) mode\n", 41},
- {"The keyboard is in mediumraw (keycode) mode\n", 42},
- {"The keyboard is in the default (ASCII) mode\n", 43},
- {"The keyboard is in Unicode (UTF-8) mode\n", 44},
- {"The keyboard is in some unknown mode\n", 45},
- {"%s: error setting keyboard mode\n", 46},
- {"setfont bug: getfont called with count<256\n", 47},
- {"unknown charset %s - ignoring charset request\n", 48},
- {"assuming iso-8859-2 %s\n", 49},
- {"assuming iso-8859-3 %s\n", 50},
- {"assuming iso-8859-4 %s\n", 51},
- {"unknown keysym '%s'\n", 52},
- {"usage: %s [-o map.orig] map-file\n", 53},
- {"trying hashlevel %d\n", 54},
- {"%s: out of memory\n", 55},
- {"Loading unicode map from file %s\n", 56},
- {"%s: %s: Warning: line too long\n", 57},
- {"Bad input line: %s\n", 58},
- {"%s: Glyph number (0x%x) larger than font length\n", 59},
- {"%s: Bad end of range (0x%x)\n", 60},
+Escaped scancodes e0 xx (hex)\n", 46},
+ {"failed to get keycode for scancode 0x%x\n", 47},
+ {"\
+Usage:\n\
+\t%s [-s]\n", 48},
+ {"strange... ct changed from %d to %d\n", 49},
+ {"usage: kbd_mode [-a|-u|-k|-s]\n", 50},
+ {"kbd_mode: error reading keyboard mode\n", 51},
+ {"The keyboard is in raw (scancode) mode\n", 52},
+ {"The keyboard is in mediumraw (keycode) mode\n", 53},
+ {"The keyboard is in the default (ASCII) mode\n", 54},
+ {"The keyboard is in Unicode (UTF-8) mode\n", 55},
+ {"The keyboard is in some unknown mode\n", 56},
+ {"%s: error setting keyboard mode\n", 57},
+ {"Typematic Rate set to %.1f cps (delay = %d ms)\n", 58},
+ {"Cannot open /dev/port", 59},
+ {"kdfontop.c: only width 8 supported\n", 60},
+ {"bug: getfont called with count<256\n", 61},
+ {"unknown charset %s - ignoring charset request\n", 62},
+ {"assuming iso-8859-1 %s\n", 63},
+ {"assuming iso-8859-15 %s\n", 64},
+ {"assuming iso-8859-2 %s\n", 65},
+ {"assuming iso-8859-3 %s\n", 66},
+ {"assuming iso-8859-4 %s\n", 67},
+ {"unknown keysym '%s'\n", 68},
+ {"plus before %s ignored\n", 69},
+ {"usage: %s [-o map.orig] [map-file]\n", 70},
+ {"trying hashlevel %d\n", 71},
+ {"Loading unicode map from file %s\n", 72},
+ {"%s: %s: Warning: line too long\n", 73},
+ {"Bad input line: %s\n", 74},
+ {"%s: Glyph number (0x%x) larger than font length\n", 75},
+ {"%s: Bad end of range (0x%x)\n", 76},
{"\
%s: Corresponding to a range of font positions, there should be a Unicode \
-range\n", 61},
- {"%s: Bad Unicode range corresponding to font position range 0x%x-0x%x\n", 62},
+range\n", 77},
+ {"%s: Bad Unicode range corresponding to font position range 0x%x-0x%x\n", 78},
{"\
%s: Unicode range U+%x-U+%x not of the same length as font position range \
-0x%x-0x%x\n", 63},
- {"%s: trailing junk (%s) ignored\n", 64},
+0x%x-0x%x\n", 79},
+ {"%s: trailing junk (%s) ignored\n", 80},
{"\
%s: not loading empty unimap\n\
-(if you insist: use option -f to override)\n", 65},
- {"%s: out of memory?\n", 66},
- {"entry", 67},
- {"entries", 68},
- {"Saved unicode map on `%s'\n", 69},
- {"Appended Unicode map\n", 70},
- {"mapscrn: cannot open map file _%s_\n", 71},
- {"Cannot stat map file", 72},
- {"Loading symbolic screen map from file %s\n", 73},
- {"Error parsing symbolic map\n", 74},
- {"Loading binary screen map from file %s\n", 75},
- {"Cannot read map from file", 76},
- {"Loaded screen map from `%s'\n", 77},
- {"mapscrn: format error detected in _%s_\n", 78},
- {"Error writing map to file", 79},
- {"Saved screen map in `%s'\n", 80},
+(if you insist: use option -f to override)\n", 81},
+ {"%s: out of memory?\n", 82},
+ {"entry", 83},
+ {"entries", 84},
+ {"Saved unicode map on `%s'\n", 85},
+ {"Appended Unicode map\n", 86},
+ {"usage: %s [-o map.orig] map-file\n", 87},
+ {"mapscrn: cannot open map file _%s_\n", 88},
+ {"Cannot stat map file", 89},
+ {"Loading symbolic screen map from file %s\n", 90},
+ {"Error parsing symbolic map\n", 91},
+ {"Loading binary screen map from file %s\n", 92},
+ {"Cannot read map from file", 93},
+ {"Loaded screen map from `%s'\n", 94},
+ {"mapscrn: format error detected in _%s_\n", 95},
+ {"Error writing map to file", 96},
+ {"Saved screen map in `%s'\n", 97},
+ {"%s: short ucs2 unicode table\n", 98},
+ {"%s: short utf8 unicode table\n", 99},
+ {"%s: bad utf8\n", 100},
+ {"%s: short unicode table\n", 101},
+ {"%s: Error reading input font", 102},
+ {"%s: Bad call of readpsffont\n", 103},
+ {"%s: Unsupported psf file mode (%d)\n", 104},
+ {"%s: Unsupported psf version (%d)\n", 105},
+ {"%s: zero input font length?\n", 106},
+ {"%s: zero input character size?\n", 107},
+ {"%s: Input file: bad input length (%d)\n", 108},
+ {"%s: Input file: trailing garbage\n", 109},
+ {"appendunicode: illegal unicode %u\n", 110},
+ {"%s: Warning: line too long\n", 111},
+ {"%s: Bad input line: %s\n", 112},
+ {"%s: Glyph number (0x%lx) past end of font\n", 113},
+ {"%s: Bad end of range (0x%lx)\n", 114},
{"\
-Usage: \n\
- %s psffont chartable [outfile]\n", 81},
- {"%s: Cannot read psf header\n", 82},
- {"%s: Bad magic number\n", 83},
- {"%s: Unknown mode number (%d)\n", 84},
- {"%s: Warning: line too long\n", 85},
+Usage:\n\
+\t%s infont intable outfont\n", 115},
+ {"\
+Usage:\n\
+\t%s infont [outtable]\n", 116},
+ {"\
+Usage:\n\
+\t%s infont outfont\n", 117},
{"\
-Usage: \n\
- %s psffont [outfile]\n", 86},
- {"%s: Font has no character table\n", 87},
- {"%s: Font already had no character table\n", 88},
- {"resizecons: cannot find videomode file %s\n", 89},
- {"Invalid number of lines\n", 90},
- {"Old mode: %dx%d New mode: %dx%d\n", 91},
- {"Old #scanlines: %d New #scanlines: %d Character height: %d\n", 92},
- {"resizecons: the command `%s' failed\n", 93},
+Usage:\n\
+\t%s [-i infont] [-o outfont] [-it intable] [-ot outtable] [-nt]\n", 118},
+ {"%s: Bad magic number on %s\n", 119},
+ {"%s: psf file with unknown magic\n", 120},
+ {"%s: input font does not have an index\n", 121},
+ {"resizecons: cannot find videomode file %s\n", 122},
+ {"Invalid number of lines\n", 123},
+ {"Old mode: %dx%d New mode: %dx%d\n", 124},
+ {"Old #scanlines: %d New #scanlines: %d Character height: %d\n", 125},
+ {"resizecons: the command `%s' failed\n", 126},
{"\
-resizecons: don't forget to change TERM (maybe to con%dx%d or linux-%dx%d)\n", 94},
+resizecons: don't forget to change TERM (maybe to con%dx%d or linux-%dx%d)\n", 127},
{"\
resizecons:\n\
call is: resizecons COLSxROWS or: resizecons COLS ROWS\n\
or: resizecons -lines ROWS, with ROWS one of 25, 28, 30, 34, 36, 40, 44, 50, \
-60\n", 95},
- {"resizecons: cannot get I/O permissions.\n", 96},
- {"usage: screendump [n]\n", 97},
- {"Out of memory?\n", 98},
- {"Error reading %s\n", 99},
- {"Out of memory.\n", 100},
- {"couldn't read %s, and cannot ioctl dump\n", 101},
- {"Strange ... screen is both %dx%d and %dx%d ??\n", 102},
- {"Error writing screendump\n", 103},
+60\n", 128},
+ {"resizecons: cannot get I/O permissions.\n", 129},
+ {"usage: screendump [n]\n", 130},
+ {"Error reading %s\n", 131},
+ {"couldn't read %s, and cannot ioctl dump\n", 132},
+ {"couldn't read %s\n", 133},
+ {"Strange ... screen is both %dx%d and %dx%d ??\n", 134},
+ {"Error writing screendump\n", 135},
{"\
-Usage: setfont [write-options] [-<N>] [newfont] [-m consolemap] [-u \
+Usage: setfont [write-options] [-<N>] [newfont..] [-m consolemap] [-u \
unicodemap]\n\
write-options (take place before file loading):\n\
-o <filename>\tWrite current font to <filename>\n\
-u none\tSuppress loading of a unicode map.\n\
-v\t\tBe verbose.\n\
-V\t\tPrint version and exit.\n\
-Files are loaded from the current directory or /usr/lib/kbd/*/.\n", 104},
- {"setfont version %s\n", 105},
+Files are loaded from the current directory or /usr/lib/kbd/*/.\n", 136},
+ {"setfont: too many input files\n", 137},
{"\
setfont: cannot both restore from character ROM and from file. Font \
-unchanged.\n", 106},
- {"Bad character size %d\n", 107},
- {"Loading %d-char 8x%d font from file %s\n", 108},
- {"Loading Unicode mapping table...\n", 109},
+unchanged.\n", 138},
+ {"Bad character size %d\n", 139},
+ {"%s: font position 32 is nonblank\n", 140},
+ {"%s: wiped it\n", 141},
+ {"%s: background will look funny\n", 142},
+ {"Loading %d-char 8x%d font from file %s\n", 143},
+ {"Loading %d-char 8x%d font\n", 144},
+ {"%s: bug in do_loadtable\n", 145},
+ {"Loading Unicode mapping table...\n", 146},
{"\
It seems this kernel is older than 1.1.92\n\
-No Unicode mapping table loaded.\n", 110},
- {"Cannot find default font\n", 111},
- {"Cannot find %s font\n", 112},
- {"Cannot open font file %s\n", 113},
- {"Error reading input font", 114},
- {"\
-Setfont is so naive as to believe that font files\n\
-have a size of at most 32kB. Unfortunately it seems\n\
-that you encountered an exception. If this really is\n\
-a font file, (i) recompile setfont, (ii) tell aeb@cwi.nl .\n", 115},
- {"Unsupported psf file mode\n", 116},
- {"Input file: bad length\n", 117},
- {"Bad input file size\n", 118},
+No Unicode mapping table loaded.\n", 147},
+ {"Cannot open font file %s\n", 148},
+ {"When loading several fonts, all must be psf fonts - %s isn't\n", 149},
+ {"Read %d-char 8x%d font from file %s\n", 150},
+ {"When loading several fonts, all must have the same pointsize\n", 151},
+ {"Cannot find default font\n", 152},
+ {"Cannot find %s font\n", 153},
+ {"No final newline in combine file\n", 154},
+ {"Too many files to combine\n", 155},
+ {"Hmm - a font from restorefont? Using the first half.\n", 156},
+ {"Bad input file size\n", 157},
{"\
This file contains 3 fonts: 8x8, 8x14 and 8x16. Please indicate\n\
-using an option -8 or -14 or -16 which one you want loaded.\n", 119},
- {"You asked for font size %d, but only 8, 14, 16 are possible here.\n", 120},
- {"Cannot write font file header", 121},
- {"Found nothing to save\n", 122},
- {"Cannot write font file", 123},
- {"Saved %d-char 8x%d font file on %s\n", 124},
+using an option -8 or -14 or -16 which one you want loaded.\n", 158},
+ {"You asked for font size %d, but only 8, 14, 16 are possible here.\n", 159},
+ {"Cannot write font file header", 160},
+ {"Found nothing to save\n", 161},
+ {"Cannot write font file", 162},
+ {"Saved %d-char 8x%d font file on %s\n", 163},
{"\
usage: setkeycode scancode keycode ...\n\
(where scancode is either xx or e0xx, given in hexadecimal,\n\
- and keycode is given in decimal)\n", 125},
- {"even number of arguments expected", 126},
- {"error reading scancode", 127},
- {"code outside bounds", 128},
- {"failed to set scancode %x to keycode %d\n", 129},
+ and keycode is given in decimal)\n", 164},
+ {"even number of arguments expected", 165},
+ {"error reading scancode", 166},
+ {"code outside bounds", 167},
+ {"failed to set scancode %x to keycode %d\n", 168},
{"\
Usage:\n\
-\tsetleds [-v] [-L] [-D] [-F] [[+|-][ num | caps | scroll ]]\n\
+\tsetleds [-v] [-L] [-D] [-F] [[+|-][ num | caps | scroll %s]]\n\
Thus,\n\
\tsetleds +caps -num\n\
will set CapsLock, clear NumLock and leave ScrollLock unchanged.\n\
(and these are usually reflected in the leds).\n\
With -L, setleds only sets the leds, and leaves the flags alone.\n\
With -D, setleds sets both the flags and the default flags, so\n\
-that a subsequent reset will not change the flags.\n", 130},
- {"Error reading current led setting. Maybe stdin is not a VT?\n", 131},
- {"Error reading current flags setting. Maybe an old kernel?\n", 132},
- {"Error resetting ledmode\n", 133},
- {"Current default flags: ", 134},
- {"Current flags: ", 135},
- {"Current leds: ", 136},
+that a subsequent reset will not change the flags.\n", 169},
+ {"Error reading current led setting. Maybe stdin is not a VT?\n", 170},
+ {"Error reading current flags setting. Maybe an old kernel?\n", 171},
+ {"Error reading current led setting from /dev/kbd.\n", 172},
+ {"KIOCGLED unavailable?\n", 173},
+ {"KIOCSLED unavailable?\n", 174},
+ {"Error opening /dev/kbd.\n", 175},
+ {"Error resetting ledmode\n", 176},
+ {"Current default flags: ", 177},
+ {"Current flags: ", 178},
+ {"Current leds: ", 179},
{"\
unrecognized argument: _%s_\n\
-\n", 137},
- {"Old default flags: ", 138},
- {"New default flags: ", 139},
- {"Old flags: ", 140},
- {"New flags: ", 141},
- {"Old leds: ", 142},
- {"New leds: ", 143},
+\n", 180},
+ {"Old default flags: ", 181},
+ {"New default flags: ", 182},
+ {"Old flags: ", 183},
+ {"New flags: ", 184},
+ {"Old leds: ", 185},
+ {"New leds: ", 186},
{"\
Usage:\n\
\tsetmetamode [ metabit | meta | bit | escprefix | esc | prefix ]\n\
Each vt has his own copy of this bit. Use\n\
\tsetmetamode [arg] < /dev/ttyn\n\
to change the settings of another vt.\n\
-The setting before and after the change are reported.\n", 144},
- {"Meta key sets high order bit\n", 145},
- {"Meta key gives Esc prefix\n", 146},
- {"Strange mode for Meta key?\n", 147},
- {"Error reading current setting. Maybe stdin is not a VT?\n", 148},
- {"old state: ", 149},
- {"new state: ", 150},
- {"usage: %s\n", 151},
- {"failed to restore original translation table\n", 152},
+The setting before and after the change are reported.\n", 187},
+ {"Meta key sets high order bit\n", 188},
+ {"Meta key gives Esc prefix\n", 189},
+ {"Strange mode for Meta key?\n", 190},
+ {"Error reading current setting. Maybe stdin is not a VT?\n", 191},
+ {"old state: ", 192},
+ {"new state: ", 193},
+ {"usage: %s\n", 194},
+ {"failed to restore original translation table\n", 195},
{"\
usage: showfont\n\
-(probably after loading a font with `setfont font')\n", 153},
- {"cannot change translation table\n", 154},
- {"cannot change translation table??\n", 155},
- {"?UNKNOWN?", 156},
- {"kb mode was %s\n", 157},
+(probably after loading a font with `setfont font')\n", 196},
+ {"cannot change translation table\n", 197},
+ {"cannot change translation table??\n", 198},
+ {"?UNKNOWN?", 199},
+ {"kb mode was %s\n", 200},
{"\
[ if you are trying this under X, it might not work\n\
-since the X server is also reading /dev/console ]\n", 158},
- {"caught signal %d, cleaning up...\n", 159},
+since the X server is also reading /dev/console ]\n", 201},
+ {"caught signal %d, cleaning up...\n", 202},
{"\
showkey version %s\n\
\n\
\t-h --help\tdisplay this help text\n\
\t-a --ascii\tdisplay the decimal/octal/hex values of the keys\n\
\t-s --scancodes\tdisplay only the raw scan-codes\n\
-\t-k --keycodes\tdisplay only the interpreted keycodes (default)\n", 160},
+\t-k --keycodes\tdisplay only the interpreted keycodes (default)\n", 203},
{"\
\n\
Press any keys - Ctrl-D will terminate this program\n\
-\n", 161},
- {"press any key (program terminates 10s after last keypress)...\n", 162},
- {"keycode %3d %s\n", 163},
- {"release", 164},
- {"press", 165},
- {"'%s' is not a function key symbol", 166},
- {"too many (%d) entries on one line", 167},
- {"too many keydefinitions on one line", 168},
- {"\
-loadkeys version %s\n\
-\n\
-Usage: loadkeys [option...] [mapfile...]\n\
-\n\
-valid options are:\n\
-\n\
-\t-c --clearcompose clear kernel compose table\n\
-\t-d --default\t load \"", 169},
- {"syntax error in map file\n", 170},
- {"key bindings not changed\n", 171},
- {"includes nested too deeply", 172},
- {"switching to %s\n", 173},
- {"cannot open include file %s", 174},
- {"Cannot find %s\n", 175},
- {"cannot open file %s\n", 176},
- {"Loading %s\n", 177},
- {"addmap called with bad index %d", 178},
- {"adding map %d violates explicit keymaps line", 179},
- {"killkey called with bad index %d", 180},
- {"killkey called with bad table %d", 181},
- {"addkey called with bad index %d", 182},
- {"addkey called with bad table %d", 183},
- {"%s: addfunc called with bad func %d\n", 184},
- {"%s: addfunc: func_buf overflow\n", 185},
- {"compose table overflow\n", 186},
- {"Keymap %d: Permission denied\n", 187},
- {" FAILED", 188},
- {"failed to bind key %d to value %d\n", 189},
- {"deallocate keymap %d\n", 190},
- {"%s: could not deallocate keymap %d\n", 191},
- {"%s: cannot deallocate or clear keymap\n", 192},
- {"%s: failed to restore keyboard mode\n", 193},
- {"\
-%s: warning: this map uses Unicode symbols\n\
- (perhaps you want to do `kbd_mode -u'?)\n", 194},
- {"failed to bind string '%s' to function %s\n", 195},
- {"failed to clear string %s\n", 196},
- {"too many compose definitions\n", 197},
- {"impossible error in do_constant", 198},
- {"\
-\n\
-Changed %d %s and %d %s.\n", 199},
- {"key", 200},
- {"keys", 201},
- {"string", 202},
- {"strings", 203},
- {"Loaded %d compose %s.\n", 204},
- {"definition", 205},
- {"definitions", 206},
- {"(No change in compose definitions.)\n", 207},
- {"loadkeys: don't know how to compose for %s\n", 208},
+\n", 204},
+ {"press any key (program terminates 10s after last keypress)...\n", 205},
+ {"keycode %3d %s\n", 206},
+ {"release", 207},
+ {"press", 208},
+ {"%s: out of memory\n", 209},
+ {"%s from %s\n", 210},
};
-int _msg_tbl_length = 208;
+int _msg_tbl_length = 210;
msgid ""
msgstr ""
"Project-Id-Version: kbd 0.99\n"
-"POT-Creation-Date: 1999-03-14 20:57+0100\n"
+"POT-Creation-Date: 1999-10-08 20:28+0200\n"
"PO-Revision-Date: 1999-03-08 11:58+0100\n"
"Last-Translator: Andries Brouwer <aeb@cwi.nl>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: ENCODING\n"
-#: src/chvt.c:23
-msgid "usage: chvt N\n"
-msgstr "aanroep: chvt N\n"
+#: openvt/openvt.c:67
+#, c-format
+msgid "openvt: %s: illegal vt number\n"
+msgstr "openvt: %s: niet-toegestaan VT nummer\n"
+
+#: openvt/openvt.c:91
+msgid "openvt: only root can use the -u flag.\n"
+msgstr "openvt: alleen root mag de -u optie gebruiken\n"
+
+#: openvt/openvt.c:105 src/getfd.c:63
+msgid "Couldnt get a file descriptor referring to the console\n"
+msgstr "Het lukte me niet een referentie (fd) naar het console te krijgen\n"
+
+#: openvt/openvt.c:117
+msgid "openvt: cannot find a free vt\n"
+msgstr "openvt: kan geen vrije vt vinden\n"
+
+#: openvt/openvt.c:122
+#, c-format
+msgid "openvt: cannot check whether vt %d is free\n"
+msgstr "openvt: kan niet nagaan of vt %d vrij is\n"
+
+#: openvt/openvt.c:123 openvt/openvt.c:128
+msgid " use `openvt -f' to force.\n"
+msgstr " gebruik `openvt -f' om dit af te dwingen.\n"
+
+#: openvt/openvt.c:127
+#, c-format
+msgid "openvt: vt %d is in use; command aborted\n"
+msgstr "openvt: vt %d is in gebruik; commando afgebroken\n"
+
+#: openvt/openvt.c:155
+#, c-format
+msgid "openvt: Unable to open %s: %s\n"
+msgstr "openvt: Kan %s niet openen: %s\n"
+
+#: openvt/openvt.c:167
+#, c-format
+msgid "openvt: Cannot open %s read/write (%s)\n"
+msgstr "openvt: Kan %s niet openen voor lezen en schrijven (%s)\n"
+
+#: openvt/openvt.c:205
+#, c-format
+msgid "openvt: using VT %s\n"
+msgstr "openvt: ik gebruik VT %s\n"
+
+#: openvt/openvt.c:217
+#, c-format
+msgid "openvt: Unable to set new session (%s)\n"
+msgstr "openvt: Kan geen nieuwe sessie starten (%s)\n"
-#: src/deallocvt.c:18
+#: openvt/openvt.c:225
#, c-format
-msgid "usage: %s [N1 N2 ...]\n"
-msgstr "aanroep: %s [N1 N2 ...]\n"
+msgid ""
+"\n"
+"openvt: could not open %s R/W (%s)\n"
+msgstr "\nopenvt: Kan %s niet openen voor lezen en schrijven (%s)\n"
+
+#: openvt/openvt.c:281
+#, fuzzy, c-format
+msgid "openvt: could not deallocate console %d\n"
+msgstr "openvt: kon console %d niet opruimen\n"
+
+#: src/chvt.c:22
+msgid "usage: chvt N\n"
+msgstr "aanroep: chvt N\n"
-#: src/deallocvt.c:41
+#: src/deallocvt.c:35
#, c-format
msgid "%s: deallocating all unused consoles failed\n"
msgstr "%s: het opruimen van alle ongebruikte consoles faalde\n"
-#: src/deallocvt.c:49
+#: src/deallocvt.c:43
#, c-format
msgid "%s: 0: illegal VT number\n"
msgstr "%s: 0: niet-toegestaan VT nummer\n"
-#: src/deallocvt.c:52
+#: src/deallocvt.c:46
+#, c-format
msgid "%s: VT 1 is the console and cannot be deallocated\n"
msgstr "%s: VT 1 is het console en kan niet opgeruimd worden\n"
-#: src/deallocvt.c:57
+#: src/deallocvt.c:51
#, c-format
msgid "%s: could not deallocate console %d\n"
msgstr "%s: kon console %d niet opruimen\n"
-#: src/dumpkeys.c:63
+#: src/dumpkeys.c:64
#, c-format
msgid "KDGKBENT error at index 0 in table %d: "
msgstr "KDGKBENT fout bij index 0 in tabel %d: "
-#: src/dumpkeys.c:76
+#: src/dumpkeys.c:77
+#, c-format
msgid "%s: cannot find any keymaps?\n"
msgstr "%s: kan geen toetsenbordtabellen vinden?\n"
-#: src/dumpkeys.c:81
+#: src/dumpkeys.c:82
+#, c-format
msgid "%s: plain map not allocated? very strange ...\n"
msgstr "%s: geen gewone toetsenbordtabel? vreemd ...\n"
-#: src/dumpkeys.c:111
+#: src/dumpkeys.c:114
+#, c-format
msgid "KDGKBENT error at index %d in table %d: "
msgstr "KDGKBENT fout bij index %d in tabel %d: "
-#: src/dumpkeys.c:228
+#: src/dumpkeys.c:242
#, c-format
msgid "keycode range supported by kernel: 1 - %d\n"
msgstr "deze kernel kent de toetscodes in het interval: 1 - %d\n"
-#: src/dumpkeys.c:230
+#: src/dumpkeys.c:244
#, c-format
msgid "max number of actions bindable to a key: %d\n"
msgstr "aantal bekende toetsacties: %d\n"
-#: src/dumpkeys.c:233
+#: src/dumpkeys.c:247
#, c-format
msgid "number of keymaps in actual use: %d\n"
msgstr "aantal toetsenbordtabellen nu in gebruik: %d\n"
-#: src/dumpkeys.c:236
+#: src/dumpkeys.c:250
#, c-format
msgid "of which %d dynamically allocated\n"
msgstr "waarvan %d dynamisch gealloceerd\n"
-#: src/dumpkeys.c:237
+#: src/dumpkeys.c:251
msgid "ranges of action codes supported by kernel:\n"
msgstr "intervallen van actiecodes die deze kernel kent:\n"
-#: src/dumpkeys.c:242
+#: src/dumpkeys.c:256
#, c-format
msgid "number of function keys supported by kernel: %d\n"
msgstr "aantal functietoetsen ondersteund door deze kernel: %d\n"
-#: src/dumpkeys.c:245
+#: src/dumpkeys.c:259
#, c-format
msgid "max nr of compose definitions: %d\n"
msgstr "maximum aantal definities van samengestelde symbolen: %d\n"
-#: src/dumpkeys.c:247
+#: src/dumpkeys.c:261
#, c-format
msgid "nr of compose definitions in actual use: %d\n"
msgstr "huidig aantal definities van samengestelde symbolen: %d\n"
-#: src/dumpkeys.c:270
+#: src/dumpkeys.c:285
#, c-format
msgid ""
"Symbols recognized by %s:\n"
"(getalswaarde, symbool)\n"
"\n"
-#: src/dumpkeys.c:282
+#: src/dumpkeys.c:298
msgid ""
"\n"
"The following synonyms are recognized:\n"
"De volgende synoniemen kunnen gebruikt worden:\n"
"\n"
-#: src/dumpkeys.c:284
+#: src/dumpkeys.c:300
#, c-format
msgid "%-15s for %s\n"
msgstr "%-15s voor %s\n"
-#: src/dumpkeys.c:286
+#: src/dumpkeys.c:302
msgid ""
"\n"
"Recognized modifier names and their column numbers:\n"
"\n"
"Namen van Shift-achtige toetsen en de bijbehorende kolommen:\n"
-#: src/dumpkeys.c:346
+#: src/dumpkeys.c:365
#, c-format
msgid "# not alt_is_meta: on keymap %d key %d is bound to"
msgstr "# geen alt_is_meta: op tabel %d is toets %d toegewezen aan"
-#: src/dumpkeys.c:421
+#: src/dumpkeys.c:440
msgid "impossible: not meta?\n"
msgstr "dit kan niet: niet meta?\n"
-#: src/dumpkeys.c:477
+#: src/dumpkeys.c:497
#, c-format
msgid "KDGKBSENT failed at index %d: "
msgstr "KDGKBSENT faalde bij index %d: "
-#: src/dumpkeys.c:497
+#: src/dumpkeys.c:517
#, c-format
msgid "dumpkeys version %s"
msgstr "dumpkeys versie %s"
-#: src/dumpkeys.c:499
+#: src/dumpkeys.c:518
+#, fuzzy
msgid ""
"\n"
"usage: dumpkeys [options...]\n"
"\t --funcs-only\t display only the function key strings\n"
"\t --keys-only\t display only key bindings\n"
"\t --compose-only display only compose key combinations\n"
-"\t-c --charset=iso-8859-{1,2,3,4,5,7,8,9}\n"
-"\t koi8-{r,u}\t\t\n"
-"\t\t\t interpret character action codes to be from the\n"
-"\t\t\t specified character set\n"
+"\t-c --charset="
msgstr ""
"\n"
"aanroep: dumpkeys [opties...]\n"
"\t koi8-{r,u}\t\t\n"
"\t\t\t interpreteer de symboolnamen als passend in de genoemde standaard\n"
-#: src/findfile.c:14
-msgid "Out of Memory\n"
-msgstr "Onvoldoende geheugen\n"
-
-#: src/findfile.c:24
-msgid "Out of Memory?\n"
-msgstr "Onvoldoende geheugen?\n"
+#: src/dumpkeys.c:535
+msgid ""
+"\t\t\t interpret character action codes to be from the\n"
+"\t\t\t specified character set\n"
+msgstr ""
-#: src/findfile.c:61
+#: src/findfile.c:43
#, c-format
msgid "error executing %s\n"
msgstr "fout bij het uitvoeren van %s\n"
-#: src/getfd.c:57
-msgid "Couldnt get a file descriptor referring to the console\n"
-msgstr "Het lukte me niet een referentie (fd) naar het console te krijgen\n"
-
-#: src/getkeycodes.c:18
+#: src/getkeycodes.c:17
msgid "usage: getkeycodes\n"
msgstr "aanroep: getkeycodes\n"
-#: src/getkeycodes.c:34
+#: src/getkeycodes.c:33
msgid "Plain scancodes xx (hex) versus keycodes (dec)\n"
msgstr "Gewone scancodes xx (hex) met bijbehorende toetscodes (decimaal)\n"
-#: src/getkeycodes.c:35
+#: src/getkeycodes.c:34
msgid "0 is an error; for 1-88 (0x01-0x58) scancode equals keycode\n"
msgstr ""
"0 is een fout; voor 1-88 (0x01-0x58) zijn scancode en toetscode gelijk\n"
-#: src/getkeycodes.c:39
+#: src/getkeycodes.c:38
msgid ""
"\n"
"\n"
"\n"
"Scancodes voorafgegaan door e0 (hex)\n"
-#: src/getkeycodes.c:59
+#: src/getkeycodes.c:58
#, c-format
msgid "failed to get keycode for scancode 0x%x\n"
msgstr "kon geen toetscode vinden bij scancode 0x%x\n"
-#: src/getunimap.c:43
+#: src/getunimap.c:45
+#, c-format
+msgid ""
+"Usage:\n"
+"\t%s [-s]\n"
+msgstr "Aanroep:\n\t%s [-s]\n"
+
+#: src/getunimap.c:66
#, c-format
msgid "strange... ct changed from %d to %d\n"
msgstr "vreemd... # veranderde van %d in %d\n"
-#: src/kbd_mode.c:20
+#: src/kbd_mode.c:19
msgid "usage: kbd_mode [-a|-u|-k|-s]\n"
msgstr "aanroep: kbd_mode [-a|-u|-k|-s]\n"
-#: src/kbd_mode.c:40
+#: src/kbd_mode.c:39
msgid "kbd_mode: error reading keyboard mode\n"
msgstr "kbd_mode: kan de toetsenbordtoestend niet uitlezen\n"
-#: src/kbd_mode.c:45
+#: src/kbd_mode.c:44
msgid "The keyboard is in raw (scancode) mode\n"
msgstr "Het toetsenbord levert ruwe scancodes af\n"
-#: src/kbd_mode.c:48
+#: src/kbd_mode.c:47
msgid "The keyboard is in mediumraw (keycode) mode\n"
msgstr "Het toetsenbord levert toetscodes af\n"
-#: src/kbd_mode.c:51
+#: src/kbd_mode.c:50
msgid "The keyboard is in the default (ASCII) mode\n"
msgstr "Het toetsenbord levert gewone letters af\n"
-#: src/kbd_mode.c:54
+#: src/kbd_mode.c:53
msgid "The keyboard is in Unicode (UTF-8) mode\n"
msgstr "Het toetsenbord levert Unicode symbolen af\n"
-#: src/kbd_mode.c:57
+#: src/kbd_mode.c:56
msgid "The keyboard is in some unknown mode\n"
msgstr "Het toetsenbord levert iets onbekends af\n"
-#: src/kbd_mode.c:75
+#: src/kbd_mode.c:74
#, c-format
msgid "%s: error setting keyboard mode\n"
msgstr "%s: fout bij het instellen van de toetsenbord toestand\n"
-#: src/kdfontop.c:164 src/kdfontop.c:214
-msgid "setfont bug: getfont called with count<256\n"
-msgstr "interne fout in setfont: getfont aangeroepen met count<256\n"
+#: src/kbdrate.c:139 src/kbdrate.c:272
+#, c-format
+msgid "Typematic Rate set to %.1f cps (delay = %d ms)\n"
+msgstr ""
+
+#: src/kbdrate.c:247
+msgid "Cannot open /dev/port"
+msgstr "Kan /dev/port niet openen"
-#: src/ksyms.c:857
+#: src/kdfontop.c:152
+msgid "kdfontop.c: only width 8 supported\n"
+msgstr "kdfontop.c: alleen breedte 8 wordt ondersteund\n"
+
+#: src/kdfontop.c:178
+msgid "bug: getfont called with count<256\n"
+msgstr "interne fout: getfont aangeroepen met count<256\n"
+
+#: src/ksyms.c:1668
#, c-format
msgid "unknown charset %s - ignoring charset request\n"
msgstr "onbekende standaard %s - invoerregel genegeerd\n"
-#: src/ksyms.c:891
+#: src/ksyms.c:1740
+#, c-format
+msgid "assuming iso-8859-1 %s\n"
+msgstr "ik zal %s uit iso-8859-1 nemen\n"
+
+#: src/ksyms.c:1747
+#, c-format
+msgid "assuming iso-8859-15 %s\n"
+msgstr "ik zal %s uit iso-8859-15 nemen\n"
+
+#: src/ksyms.c:1754
#, c-format
msgid "assuming iso-8859-2 %s\n"
msgstr "ik zal %s uit iso-8859-2 nemen\n"
-#: src/ksyms.c:898
+#: src/ksyms.c:1761
#, c-format
msgid "assuming iso-8859-3 %s\n"
msgstr "ik zal %s uit iso-8859-3 nemen\n"
-#: src/ksyms.c:905
+#: src/ksyms.c:1768
#, c-format
msgid "assuming iso-8859-4 %s\n"
msgstr "ik zal %s uit iso-8859-4 nemen\n"
-#: src/ksyms.c:909
+#: src/ksyms.c:1773
#, c-format
msgid "unknown keysym '%s'\n"
msgstr "onbekend symbool '%s'\n"
-#: src/loadunimap.c:59 src/mapscrn.c:51
+#: src/ksyms.c:1808
#, c-format
-msgid "usage: %s [-o map.orig] map-file\n"
-msgstr "aanroep: %s [-o toetsbestand.oud] toetsbestand\n"
+msgid "plus before %s ignored\n"
+msgstr ""
+
+#: loadkeys.y:197
+#, c-format
+msgid "'%s' is not a function key symbol"
+msgstr "'%s' is geen functietoetssymbool"
+
+#: loadkeys.y:260
+#, c-format
+msgid "too many (%d) entries on one line"
+msgstr "teveel (%d) elementen op een regel"
+
+#: loadkeys.y:273
+msgid "too many keydefinitions on one line"
+msgstr "teveel toetsdefinities op een regel"
+
+#: loadkeys.y:292
+#, c-format
+msgid ""
+"loadkeys version %s\n"
+"\n"
+"Usage: loadkeys [option...] [mapfile...]\n"
+"\n"
+"valid options are:\n"
+"\n"
+"\t-c --clearcompose clear kernel compose table\n"
+"\t-d --default\t load \""
+msgstr ""
+"loadkeys versie %s\n"
+"\n"
+"Aanroep: loadkeys [option...] [mapfile...]\n"
+"\n"
+"geldige opties zijn:\n"
+"\n"
+"\t-c --clearcompose clear kernel compose table\n"
+"\t-d --default\t load \""
+
+#: loadkeys.y:368
+msgid "syntax error in map file\n"
+msgstr "Fout in het omnummerbestand\n"
+
+#: loadkeys.y:370
+msgid "key bindings not changed\n"
+msgstr "toetsinstellingen onveranderd\n"
+
+#: loadkeys.y:427
+msgid "includes nested too deeply"
+msgstr "include-bestanden te diep genest"
+
+#. start reading include file
+#: loadkeys.y:550
+#, c-format
+msgid "switching to %s\n"
+msgstr "ik lees nu van %s\n"
+
+#: loadkeys.y:556
+#, c-format
+msgid "cannot open include file %s"
+msgstr "Kan het include-bestand %s niet openen"
+
+#: loadkeys.y:603
+#, c-format
+msgid "Cannot find %s\n"
+msgstr "Kan het bestand %s niet vinden\n"
+
+#: loadkeys.y:616
+#, c-format
+msgid "cannot open file %s\n"
+msgstr "Kan het bestand %s niet openen\n"
+
+#: loadkeys.y:627
+#, c-format
+msgid "Loading %s\n"
+msgstr "Fout bij het lezen van %s\n"
+
+#: loadkeys.y:639
+#, c-format
+msgid "addmap called with bad index %d"
+msgstr "addmap aangeroepen met foute index %d"
+
+#: loadkeys.y:643
+#, c-format
+msgid "adding map %d violates explicit keymaps line"
+msgstr "het toevoegen van tabel %d is in strijd met de gegeven `keymaps' regel"
+
+#: loadkeys.y:657
+#, c-format
+msgid "killkey called with bad index %d"
+msgstr "killkey aangeroepen met foute index %d"
+
+#: loadkeys.y:659
+#, c-format
+msgid "killkey called with bad table %d"
+msgstr "killkey aangeroepen met foute tabel %d"
+
+#: loadkeys.y:673
+#, c-format
+msgid "addkey called with bad index %d"
+msgstr "addkey aangeroepen met foute index %d"
+
+#: loadkeys.y:675
+#, c-format
+msgid "addkey called with bad table %d"
+msgstr "addkey aangeroepen met foute tabel %d"
+
+#: loadkeys.y:715
+#, c-format
+msgid "%s: addfunc called with bad func %d\n"
+msgstr "%s: addfunc aangeroepen met foute func %d\n"
+
+#: loadkeys.y:735
+#, c-format
+msgid "%s: addfunc: func_buf overflow\n"
+msgstr "%s: addfunc: func_buf is te klein\n"
+
+#: loadkeys.y:753
+msgid "compose table overflow\n"
+msgstr "de compose-tabel is te klein\n"
+
+#: loadkeys.y:790
+#, c-format
+msgid "Keymap %d: Permission denied\n"
+msgstr "Toettabel %d: dat mag niet\n"
+
+#: loadkeys.y:799
+msgid " FAILED"
+msgstr " FAALDE"
+
+#: loadkeys.y:802
+#, c-format
+msgid "failed to bind key %d to value %d\n"
+msgstr "kon toets %d niet de waarde %d toekennen\n"
+
+#: loadkeys.y:813
+#, c-format
+msgid "deallocate keymap %d\n"
+msgstr "geef het geheugen van toetsdefinitietabel %d vrij\n"
+
+#: loadkeys.y:819
+#, c-format
+msgid "%s: could not deallocate keymap %d\n"
+msgstr "%s: kon toetsdefinitietabel %d niet opruimen\n"
+
+#: loadkeys.y:834
+#, c-format
+msgid "%s: cannot deallocate or clear keymap\n"
+msgstr "%s: kan toetsdefinitietabel niet vrijgeven of schoonvegen\n"
+
+#: loadkeys.y:845
+#, c-format
+msgid "%s: failed to restore keyboard mode\n"
+msgstr "%s: fout bij het herstellen van de toetsenbord toestand\n"
+
+#: loadkeys.y:848
+#, c-format
+msgid ""
+"%s: warning: this map uses Unicode symbols\n"
+" (perhaps you want to do `kbd_mode -u'?)\n"
+msgstr ""
+"%s: waarschuwing: deze toetsenbordtabel gebruikt Unicode symbolen\n"
+" (misschien wilt u `kbd_mode -u' zeggen?)\n"
+
+#: loadkeys.y:892
+#, c-format
+msgid "failed to bind string '%s' to function %s\n"
+msgstr "kon de string '%s' niet aan de functie %s binden\n"
+
+#: loadkeys.y:899
+#, c-format
+msgid "failed to clear string %s\n"
+msgstr "kon de string %s niet leegmaken\n"
+
+#: loadkeys.y:916
+msgid "too many compose definitions\n"
+msgstr "teveel definities van samengestelde symbolen\n"
+
+#: loadkeys.y:976
+msgid "impossible error in do_constant"
+msgstr "onmogelijke fout in do_constant"
+
+#: loadkeys.y:994
+#, c-format
+msgid ""
+"\n"
+"Changed %d %s and %d %s.\n"
+msgstr ""
+"\n"
+"Veranderde %d %s en %d %s.\n"
+
+#: loadkeys.y:995
+msgid "key"
+msgstr "toets"
+
+#: loadkeys.y:995
+msgid "keys"
+msgstr "toetsen"
+
+#: loadkeys.y:996
+msgid "string"
+msgstr "string"
+
+#: loadkeys.y:996
+msgid "strings"
+msgstr "strings"
+
+#: loadkeys.y:998
+#, c-format
+msgid "Loaded %d compose %s.\n"
+msgstr "%d %s voor samengestelde symbolen geladen\n"
+
+#: loadkeys.y:999
+msgid "definition"
+msgstr "definitie"
+
+#: loadkeys.y:999
+msgid "definitions"
+msgstr "definities"
+
+#: loadkeys.y:1001
+msgid "(No change in compose definitions.)\n"
+msgstr "(Geen wijziging in definities van samengestelde symbolen.)\n"
+
+#: loadkeys.y:1034
+#, c-format
+msgid "loadkeys: don't know how to compose for %s\n"
+msgstr ""
+"loadkeys: ik ken de definities van de samengestelde symbolen voor %s niet\n"
+
+#: src/loadunimap.c:57
+#, c-format
+msgid "usage: %s [-o map.orig] [map-file]\n"
+msgstr "aanroep: %s [-o toetsbestand.oud] [toetsbestand]\n"
#: src/loadunimap.c:109
#, c-format
msgid "trying hashlevel %d\n"
msgstr "ik probeer hash niveau %d\n"
-#: src/loadunimap.c:124
-#, c-format
-msgid "%s: out of memory\n"
-msgstr "%s: onvoldoende geheugen\n"
-
-#: src/loadunimap.c:149
+#: src/loadunimap.c:146
#, c-format
msgid "Loading unicode map from file %s\n"
msgstr "Zal Unicode toetsbestand %s laden\n"
-#: src/loadunimap.c:155
+#: src/loadunimap.c:152
#, c-format
msgid "%s: %s: Warning: line too long\n"
msgstr "%s: %s: Waarschuwing: regel te lang\n"
-#: src/loadunimap.c:177 src/loadunimap.c:188 src/psfaddtable.c:204
-#: src/psfaddtable.c:217
+#: src/loadunimap.c:174 src/loadunimap.c:185
#, c-format
msgid "Bad input line: %s\n"
msgstr "Invoer fout in de regel: %s\n"
-#: src/loadunimap.c:198 src/psfaddtable.c:228
+#: src/loadunimap.c:195
#, c-format
msgid "%s: Glyph number (0x%x) larger than font length\n"
msgstr "%s: Tekennummer (0x%x) groter dan fontgrootte\n"
-#: src/loadunimap.c:204 src/psfaddtable.c:235
+#: src/loadunimap.c:201
#, c-format
msgid "%s: Bad end of range (0x%x)\n"
msgstr "%s: Fout intervaleind (0x%x)\n"
-#: src/loadunimap.c:224 src/psfaddtable.c:260
+#: src/loadunimap.c:221 src/psfxtable.c:167
#, c-format
msgid ""
"%s: Corresponding to a range of font positions, there should be a Unicode "
"range\n"
msgstr "%s: Bj een interval van fontposities hoort een Unicode interval\n"
-#: src/loadunimap.c:233 src/psfaddtable.c:270
+#: src/loadunimap.c:230 src/psfxtable.c:176
#, c-format
msgid "%s: Bad Unicode range corresponding to font position range 0x%x-0x%x\n"
msgstr "%s: Fout Unicode interval bij fontpositieinterval 0x%x-0x%x\n"
-#: src/loadunimap.c:240 src/psfaddtable.c:278
+#: src/loadunimap.c:237 src/psfxtable.c:183
#, c-format
msgid ""
"%s: Unicode range U+%x-U+%x not of the same length as font position range "
"%s: Unicode interval U+%x-U+%x niet even lang als fontpositie interval "
"0x%x-0x%x\n"
-#: src/loadunimap.c:258 src/psfaddtable.c:297
+#: src/loadunimap.c:255 src/psfxtable.c:204
#, c-format
msgid "%s: trailing junk (%s) ignored\n"
msgstr "%s: rommel (%s) aan het eind genegeerd\n"
-#: src/loadunimap.c:264
+#: src/loadunimap.c:261
#, c-format
msgid ""
"%s: not loading empty unimap\n"
"%s: ik laad geen lege Unicodetabel\n"
"(als je dat echt wilt, gebruik de -f [forceer] optie)\n"
-#: src/loadunimap.c:285
+#: src/loadunimap.c:282
#, c-format
msgid "%s: out of memory?\n"
msgstr "%s: onvoldoende geheugen?\n"
-#: src/loadunimap.c:295
+#: src/loadunimap.c:292
msgid "entry"
msgstr "element"
-#: src/loadunimap.c:295
+#: src/loadunimap.c:292
msgid "entries"
msgstr "elementen"
-#: src/loadunimap.c:321
+#: src/loadunimap.c:318
#, c-format
msgid "Saved unicode map on `%s'\n"
msgstr "Heb de Unicodetabel weggeschreven in `%s'\n"
-#: src/loadunimap.c:353
+#: src/loadunimap.c:338
msgid "Appended Unicode map\n"
msgstr "Heb de Unicodetabel toegevoegd\n"
-#: src/mapscrn.c:68
+#: src/mapscrn.c:55
+#, c-format
+msgid "usage: %s [-o map.orig] map-file\n"
+msgstr "aanroep: %s [-o toetsbestand.oud] toetsbestand\n"
+
+#: src/mapscrn.c:72
#, c-format
msgid "mapscrn: cannot open map file _%s_\n"
msgstr "mapscrn: kan het omnummerbestand _%s_ niet openen\n"
-#: src/mapscrn.c:73
+#: src/mapscrn.c:77
msgid "Cannot stat map file"
msgstr "De stat() aanroep faalt op het omnummerbestand"
-#: src/mapscrn.c:78
+#: src/mapscrn.c:82
#, c-format
msgid "Loading symbolic screen map from file %s\n"
msgstr "Zal het symbolische omnummerbestand %s laden\n"
-#: src/mapscrn.c:82
+#: src/mapscrn.c:86
msgid "Error parsing symbolic map\n"
msgstr "Fout bij het ontleden van het symbolische omnummerbestand\n"
-#: src/mapscrn.c:86
+#: src/mapscrn.c:90
#, c-format
msgid "Loading binary screen map from file %s\n"
msgstr "Zal het binaire omnummerbestand %s laden\n"
-#: src/mapscrn.c:90
+#: src/mapscrn.c:94
msgid "Cannot read map from file"
msgstr "Fout bij het lezen van het omnummerbestand"
-#: src/mapscrn.c:103
+#: src/mapscrn.c:107
#, c-format
msgid "Loaded screen map from `%s'\n"
msgstr "Afbeeldingsbestand uit `%s' geladen\n"
-#: src/mapscrn.c:149
+#: src/mapscrn.c:153
#, c-format
msgid "mapscrn: format error detected in _%s_\n"
msgstr "mapscrn: syntax fout ontdekt in _%s_\n"
-#: src/mapscrn.c:172
+#: src/mapscrn.c:176
msgid "Error writing map to file"
msgstr "Fout bij het schrijven van het omnummerbestand"
-#: src/mapscrn.c:178
+#: src/mapscrn.c:182
#, c-format
msgid "Saved screen map in `%s'\n"
msgstr "Huidige omnummering weggeschreven in het bestand `%s'\n"
-#: src/psfaddtable.c:33
+#: src/psffontop.c:52
#, c-format
-msgid ""
-"Usage: \n"
-" %s psffont chartable [outfile]\n"
+msgid "%s: short ucs2 unicode table\n"
+msgstr "%s: te korte UCS2 Unicode tabel\n"
+
+#: src/psffontop.c:79
+#, c-format
+msgid "%s: short utf8 unicode table\n"
+msgstr "%s: te korte UTF-8 Unicode tabel\n"
+
+#: src/psffontop.c:94
+#, c-format
+msgid "%s: bad utf8\n"
+msgstr "%s: incorrect UTF-8\n"
+
+#: src/psffontop.c:119
+#, c-format
+msgid "%s: short unicode table\n"
+msgstr "%s: te korte Unicode tabel\n"
+
+#: src/psffontop.c:198
+#, c-format
+msgid "%s: Error reading input font"
+msgstr "%s: Fout bij het lezen van het font"
+
+#: src/psffontop.c:212
+#, c-format
+msgid "%s: Bad call of readpsffont\n"
+msgstr ""
+
+#: src/psffontop.c:227
+#, c-format
+msgid "%s: Unsupported psf file mode (%d)\n"
+msgstr "%s: Niet ondersteund psf bestand\n"
+
+#: src/psffontop.c:243
+#, c-format
+msgid "%s: Unsupported psf version (%d)\n"
+msgstr "%s: Niet ondersteund psf bestand\n"
+
+#: src/psffontop.c:257
+#, c-format
+msgid "%s: zero input font length?\n"
msgstr ""
-"Aanroep: \n"
-" %s psf-font Unicodetabel [uitvoer]\n"
-#: src/psfaddtable.c:136 src/psfgettable.c:75 src/psfstriptable.c:75
+#: src/psffontop.c:262
#, c-format
-msgid "%s: Cannot read psf header\n"
-msgstr "%s: Kan de psf kop niet lezen\n"
+msgid "%s: zero input character size?\n"
+msgstr "%s: lettergrootte 0?\n"
-#: src/psfaddtable.c:142 src/psfgettable.c:81 src/psfstriptable.c:81
-msgid "%s: Bad magic number\n"
-msgstr "%s: Fout magisch getal\n"
+#: src/psffontop.c:268
+#, c-format
+msgid "%s: Input file: bad input length (%d)\n"
+msgstr "%s: Invoer heeft rare grootte (%d)\n"
+
+#: src/psffontop.c:295
+#, fuzzy, c-format
+msgid "%s: Input file: trailing garbage\n"
+msgstr "Invoer heeft rare grootte\n"
-#: src/psfaddtable.c:148 src/psfgettable.c:87 src/psfstriptable.c:87
+#: src/psffontop.c:328
#, c-format
-msgid "%s: Unknown mode number (%d)\n"
-msgstr "%s: Onbekend psf type (%d)\n"
+msgid "appendunicode: illegal unicode %u\n"
+msgstr ""
-#: src/psfaddtable.c:181
+#: src/psfxtable.c:110
#, c-format
msgid "%s: Warning: line too long\n"
msgstr "%s: Waarschuwing: regel te lang\n"
-#: src/psfgettable.c:23 src/psfstriptable.c:25
-#, c-format
+#: src/psfxtable.c:124 src/psfxtable.c:134
+#, fuzzy, c-format
+msgid "%s: Bad input line: %s\n"
+msgstr "Invoer fout in de regel: %s\n"
+
+#: src/psfxtable.c:143
+#, fuzzy, c-format
+msgid "%s: Glyph number (0x%lx) past end of font\n"
+msgstr "%s: Tekennummer (0x%x) groter dan fontgrootte\n"
+
+#: src/psfxtable.c:148
+#, fuzzy, c-format
+msgid "%s: Bad end of range (0x%lx)\n"
+msgstr "%s: Fout intervaleind (0x%x)\n"
+
+#: src/psfxtable.c:256
+#, fuzzy, c-format
+msgid ""
+"Usage:\n"
+"\t%s infont intable outfont\n"
+msgstr ""
+"Aanroep: \n"
+" %s psf-font Unicodetabel [uitvoer]\n"
+
+#: src/psfxtable.c:265
+#, fuzzy, c-format
+msgid ""
+"Usage:\n"
+"\t%s infont [outtable]\n"
+msgstr ""
+"Aanroep: \n"
+" %s psf-font [uitvoer]\n"
+
+#: src/psfxtable.c:274
+#, fuzzy, c-format
msgid ""
-"Usage: \n"
-" %s psffont [outfile]\n"
+"Usage:\n"
+"\t%s infont outfont\n"
msgstr ""
"Aanroep: \n"
" %s psf-font [uitvoer]\n"
-#: src/psfgettable.c:96
+#: src/psfxtable.c:297
+#, c-format
+msgid ""
+"Usage:\n"
+"\t%s [-i infont] [-o outfont] [-it intable] [-ot outtable] [-nt]\n"
+msgstr ""
+
+#: src/psfxtable.c:356
+#, fuzzy, c-format
+msgid "%s: Bad magic number on %s\n"
+msgstr "%s: Fout magisch getal\n"
+
+#: src/psfxtable.c:371
#, c-format
-msgid "%s: Font has no character table\n"
-msgstr "%s: Dit font heeft geen Unicode tabel\n"
+msgid "%s: psf file with unknown magic\n"
+msgstr ""
-#: src/psfstriptable.c:96
+#: src/psfxtable.c:387
#, c-format
-msgid "%s: Font already had no character table\n"
-msgstr "%s: Dit font had geen Unicode tabel\n"
+msgid "%s: input font does not have an index\n"
+msgstr ""
-#: src/resizecons.c:145
+#: src/resizecons.c:149
#, c-format
msgid "resizecons: cannot find videomode file %s\n"
msgstr "resizecons: kan videomode bestand %s niet vinden\n"
-#: src/resizecons.c:164
+#: src/resizecons.c:168
msgid "Invalid number of lines\n"
msgstr "Ongeldig aantal regels\n"
-#: src/resizecons.c:230
+#: src/resizecons.c:234
#, c-format
msgid "Old mode: %dx%d New mode: %dx%d\n"
msgstr "Oud scherm: %dx%d Nieuw scherm: %dx%d\n"
-#: src/resizecons.c:232
+#: src/resizecons.c:236
#, c-format
msgid "Old #scanlines: %d New #scanlines: %d Character height: %d\n"
msgstr "Oud #scanlijnen: %d Nieuw #scanlijnen: %d Letterhoogte: %d\n"
-#: src/resizecons.c:243
+#: src/resizecons.c:247
#, c-format
msgid "resizecons: the command `%s' failed\n"
msgstr "resizecons: het commando `%s' faalde\n"
-#: src/resizecons.c:308
+#: src/resizecons.c:315
#, c-format
msgid ""
"resizecons: don't forget to change TERM (maybe to con%dx%d or linux-%dx%d)\n"
"resizecons: vergeet niet om TERM aan te passen (mogelijk tot con%dx%d of "
"linux-%dx%d)\n"
-#: src/resizecons.c:321
+#: src/resizecons.c:328
msgid ""
"resizecons:\n"
"call is: resizecons COLSxROWS or: resizecons COLS ROWS\n"
"of: resizecons -lines ROWS, waarbij ROWS een van de waarden 25, 28, 30, 34, "
"36, 40, 44, 50, 60 heeft\n"
-#: src/resizecons.c:359
+#: src/resizecons.c:366
msgid "resizecons: cannot get I/O permissions.\n"
msgstr "resizecons: ik heb geen toestemming voor directe I/O\n"
-#: src/screendump.c:38
+#: src/screendump.c:46
msgid "usage: screendump [n]\n"
msgstr "aanroep: screendump [n]\n"
-#: src/screendump.c:55 src/screendump.c:120 src/setfont.c:251
-msgid "Out of memory?\n"
-msgstr "Onvoldoende geheugen?\n"
-
-#: src/screendump.c:59
+#: src/screendump.c:66
#, c-format
msgid "Error reading %s\n"
msgstr "Fout bij het lezen van %s\n"
-#: src/screendump.c:94
-msgid "Out of memory.\n"
-msgstr "Onvoldoende geheugen.\n"
-
-#: src/screendump.c:104
+#: src/screendump.c:107
#, c-format
msgid "couldn't read %s, and cannot ioctl dump\n"
msgstr "kan %s niet lezen, en kan ook niet dumpen via een ioctl\n"
+#. we tried this just to be sure, but TIOCLINUX
+#. function 0 has been disabled since 1.1.92
+#. Do not mention `ioctl dump' in error msg
#: src/screendump.c:113
#, c-format
+msgid "couldn't read %s\n"
+msgstr ""
+
+#: src/screendump.c:122
+#, c-format
msgid "Strange ... screen is both %dx%d and %dx%d ??\n"
msgstr "Vreemd ... het scherm is zowel %dx%d als %dx%d ??\n"
-#: src/screendump.c:135
+#: src/screendump.c:140
msgid "Error writing screendump\n"
msgstr "Fout bij het schrijven van de schermdump\n"
-#: src/setfont.c:63
+#: src/setfont.c:76
+#, fuzzy
msgid ""
-"Usage: setfont [write-options] [-<N>] [newfont] [-m consolemap] [-u "
+"Usage: setfont [write-options] [-<N>] [newfont..] [-m consolemap] [-u "
"unicodemap]\n"
" write-options (take place before file loading):\n"
" -o <filename>\tWrite current font to <filename>\n"
" -V\t\tDruk de programmaversie af\n"
"Bestanden worden geladen uit het huidige directory of /usr/lib/kbd/*/.\n"
-#: src/setfont.c:106
+#: src/setfont.c:121
#, c-format
msgid "setfont version %s\n"
msgstr "setfont versie %s\n"
-#: src/setfont.c:160
+#: src/setfont.c:169
+msgid "setfont: too many input files\n"
+msgstr ""
+
+#: src/setfont.c:177
msgid ""
"setfont: cannot both restore from character ROM and from file. Font "
"unchanged.\n"
"setfont: kan niet tegelijk vanuit teken-ROM en van een bestand lezen. Font "
"ongewijzigd.\n"
-#: src/setfont.c:221
+#: src/setfont.c:245
#, c-format
msgid "Bad character size %d\n"
msgstr "Foute tegengrootte %d\n"
-#: src/setfont.c:232
+#: src/setfont.c:266
+#, c-format
+msgid "%s: font position 32 is nonblank\n"
+msgstr ""
+
+#: src/setfont.c:274
+#, c-format
+msgid "%s: wiped it\n"
+msgstr ""
+
+#: src/setfont.c:278
+#, c-format
+msgid "%s: background will look funny\n"
+msgstr ""
+
+#: src/setfont.c:288
#, c-format
msgid "Loading %d-char 8x%d font from file %s\n"
msgstr "Ga %d-teken 8x%d font uit het bestand %s laden\n"
-#: src/setfont.c:270
+#: src/setfont.c:291
+#, fuzzy, c-format
+msgid "Loading %d-char 8x%d font\n"
+msgstr "Ga %d-teken 8x%d font uit het bestand %s laden\n"
+
+#: src/setfont.c:332
+#, c-format
+msgid "%s: bug in do_loadtable\n"
+msgstr ""
+
+#: src/setfont.c:340
msgid "Loading Unicode mapping table...\n"
msgstr "Ga Unicodetabel laden\n"
-#: src/setfont.c:279
+#: src/setfont.c:349
msgid ""
"It seems this kernel is older than 1.1.92\n"
"No Unicode mapping table loaded.\n"
"Zo te zien is de kernel ouder dan 1.1.92\n"
"Geen Unicodetabel geladen.\n"
-#: src/setfont.c:317
+#: src/setfont.c:396 src/setfont.c:469
+#, c-format
+msgid "Cannot open font file %s\n"
+msgstr "Kan het font %s niet openen\n"
+
+#: src/setfont.c:407
+#, c-format
+msgid "When loading several fonts, all must be psf fonts - %s isn't\n"
+msgstr ""
+
+#: src/setfont.c:414
+#, fuzzy, c-format
+msgid "Read %d-char 8x%d font from file %s\n"
+msgstr "Ga %d-teken 8x%d font uit het bestand %s laden\n"
+
+#: src/setfont.c:419
+msgid "When loading several fonts, all must have the same pointsize\n"
+msgstr ""
+
+#: src/setfont.c:456
msgid "Cannot find default font\n"
msgstr "Kan het standaard font niet vinden\n"
-#: src/setfont.c:324
+#: src/setfont.c:463
#, c-format
msgid "Cannot find %s font\n"
msgstr "Kan het %s font niet vinden\n"
-#: src/setfont.c:330
-#, c-format
-msgid "Cannot open font file %s\n"
-msgstr "Kan het font %s niet openen\n"
-
-#: src/setfont.c:342
-msgid "Error reading input font"
-msgstr "Fout bij het lezen van het font"
-
-#: src/setfont.c:351
-msgid ""
-"Setfont is so naive as to believe that font files\n"
-"have a size of at most 32kB. Unfortunately it seems\n"
-"that you encountered an exception. If this really is\n"
-"a font file, (i) recompile setfont, (ii) tell aeb@cwi.nl .\n"
+#: src/setfont.c:506
+msgid "No final newline in combine file\n"
msgstr ""
-"Setfont denkt dat een font nooit groter dan 32kB kan zijn.\n"
-"Helaas ziet het er naar uit dat U een uitzondering bent tegengekomen.\n"
-"Als dit echt een font is, (i) compileer setfont opnieuw, en (ii) schrijf "
-"naar aeb@cwi.nl .\n"
-#: src/setfont.c:376
-msgid "Unsupported psf file mode\n"
-msgstr "Niet ondersteund psf bestand\n"
+#: src/setfont.c:512
+#, fuzzy
+msgid "Too many files to combine\n"
+msgstr "teveel (%d) elementen op een regel"
-#: src/setfont.c:385
-msgid "Input file: bad length\n"
-msgstr "Invoer heeft rare grootte\n"
+#. restorefont -w writes a SVGA font to file
+#. restorefont -r restores it
+#. These fonts have size 32768, for two 512-char fonts.
+#. In fact, when BROKEN_GRAPHICS_PROGRAMS is defined,
+#. and it always is, there is no default font that is saved,
+#. so probably the second half is always garbage.
+#: src/setfont.c:535
+msgid "Hmm - a font from restorefont? Using the first half.\n"
+msgstr ""
-#: src/setfont.c:402
+#: src/setfont.c:551
msgid "Bad input file size\n"
msgstr "Invoer heeft foute grootte\n"
-#: src/setfont.c:421
+#: src/setfont.c:570
msgid ""
"This file contains 3 fonts: 8x8, 8x14 and 8x16. Please indicate\n"
"using an option -8 or -14 or -16 which one you want loaded.\n"
"Dit bestand bevat 3 fonts: 8x8, 8x14 en 8x16. Vertel met behulp\n"
"van een optie -8 of -14 of -16 welke van de drie geladen moet worden.\n"
-#: src/setfont.c:435
+#: src/setfont.c:584
#, c-format
msgid "You asked for font size %d, but only 8, 14, 16 are possible here.\n"
msgstr "U vroeg om fontgrootte %d, maar ik heb alleen 8, 14, 16 in voorraad.\n"
-#: src/setfont.c:471
+#: src/setfont.c:621
msgid "Cannot write font file header"
msgstr "Fout bij het schrijven van de font kop"
-#: src/setfont.c:477
+#: src/setfont.c:627
msgid "Found nothing to save\n"
msgstr "Er was niets om weg te schrijven\n"
-#: src/setfont.c:481
+#: src/setfont.c:631
msgid "Cannot write font file"
msgstr "Fout bij het wegschrijven van het font"
-#: src/setfont.c:485
+#: src/setfont.c:635
#, c-format
msgid "Saved %d-char 8x%d font file on %s\n"
msgstr "Heb %d-teken 8x%d font in het bestand %s weggeschreven\n"
-#: src/setkeycodes.c:21
+#: src/setkeycodes.c:20
msgid ""
"usage: setkeycode scancode keycode ...\n"
" (where scancode is either xx or e0xx, given in hexadecimal,\n"
" (waarbij scancode xx of e0xx is, gegeven in hexadecimaal,\n"
" en de toetscode decimaal gegeven wordt)\n"
-#: src/setkeycodes.c:38
+#: src/setkeycodes.c:37
msgid "even number of arguments expected"
msgstr "ik verwacht een even aantal parameters"
-#: src/setkeycodes.c:45
+#: src/setkeycodes.c:44
msgid "error reading scancode"
msgstr "fout bij het lezen van de scancode"
-#: src/setkeycodes.c:51
+#: src/setkeycodes.c:50
msgid "code outside bounds"
msgstr "codewaarde te groot"
-#: src/setkeycodes.c:54
+#: src/setkeycodes.c:53
#, c-format
msgid "failed to set scancode %x to keycode %d\n"
msgstr "kon scancode %x niet toewijzen aan toetscode %d\n"
-#: src/setleds.c:20
+#: src/setleds.c:24
+#, fuzzy, c-format
msgid ""
"Usage:\n"
-"\tsetleds [-v] [-L] [-D] [-F] [[+|-][ num | caps | scroll ]]\n"
+"\tsetleds [-v] [-L] [-D] [-F] [[+|-][ num | caps | scroll %s]]\n"
"Thus,\n"
"\tsetleds +caps -num\n"
"will set CapsLock, clear NumLock and leave ScrollLock unchanged.\n"
"Met de -D vlag wordt ook de standaard toestand aangepast, zodat een\n"
"latere reset de toestand niet wijzigt.\n"
-#: src/setleds.c:74
+#: src/setleds.c:89
msgid "Error reading current led setting. Maybe stdin is not a VT?\n"
msgstr "Fout bij het lezen van de leds. Is stdin wel een VT?\n"
-#: src/setleds.c:81
+#: src/setleds.c:108
msgid "Error reading current flags setting. Maybe an old kernel?\n"
msgstr "Fout bij het lezen van de toetsenbordtoestand. Een oude kernel?\n"
-#: src/setleds.c:108
+#: src/setleds.c:121 src/setleds.c:136
+#, fuzzy
+msgid "Error reading current led setting from /dev/kbd.\n"
+msgstr "Fout bij het lezen van de leds. Is stdin wel een VT?\n"
+
+#: src/setleds.c:125
+msgid "KIOCGLED unavailable?\n"
+msgstr ""
+
+#: src/setleds.c:140
+msgid "KIOCSLED unavailable?\n"
+msgstr ""
+
+#: src/setleds.c:158
+msgid "Error opening /dev/kbd.\n"
+msgstr ""
+
+#: src/setleds.c:194
msgid "Error resetting ledmode\n"
msgstr "Fout bij het zetten van de leds\n"
-#: src/setleds.c:117
+#: src/setleds.c:203
msgid "Current default flags: "
msgstr "Huidige standaardtoestand: "
-#: src/setleds.c:121
+#: src/setleds.c:207
msgid "Current flags: "
msgstr "Huidige toestand: "
-#: src/setleds.c:125
+#: src/setleds.c:211
msgid "Current leds: "
msgstr "Huidige leds: "
-#: src/setleds.c:153 src/setmetamode.c:90
+#: src/setleds.c:247 src/setmetamode.c:88
#, c-format
msgid ""
"unrecognized argument: _%s_\n"
"\n"
msgstr "onbekende parameter: _%s_\n"
-#: src/setleds.c:162
+#: src/setleds.c:256
msgid "Old default flags: "
msgstr "Oude standaardtoestand: "
-#: src/setleds.c:164
+#: src/setleds.c:258
msgid "New default flags: "
msgstr "Nieuwe standaardtoestand: "
-#: src/setleds.c:171
+#: src/setleds.c:265
msgid "Old flags: "
msgstr "Oude toestand: "
-#: src/setleds.c:173
+#: src/setleds.c:267
msgid "New flags: "
msgstr "Nieuwe toestand:"
-#: src/setleds.c:186
+#: src/setleds.c:281 src/setleds.c:290
msgid "Old leds: "
msgstr "Oude leds: "
-#: src/setleds.c:188
+#: src/setleds.c:283 src/setleds.c:292
msgid "New leds: "
msgstr "Nieuwe leds: "
"om het metabit van een andere VT te veranderen.\n"
"De toestand voor en na de aanroep wordt gerapporteerd.\n"
-#: src/setmetamode.c:36
+#: src/setmetamode.c:35
msgid "Meta key sets high order bit\n"
msgstr "De Metatoets zet het achtste bit\n"
-#: src/setmetamode.c:39
+#: src/setmetamode.c:38
msgid "Meta key gives Esc prefix\n"
msgstr "De Metatoets geeft een Esc prefix\n"
-#: src/setmetamode.c:42
+#: src/setmetamode.c:41
msgid "Strange mode for Meta key?\n"
msgstr "Rare Metatoets instelling??\n"
-#: src/setmetamode.c:74
+#: src/setmetamode.c:72
msgid "Error reading current setting. Maybe stdin is not a VT?\n"
msgstr "Fout bij het lezen van de huidige toestand. Is stdin wel een VT?\n"
-#: src/setmetamode.c:94
+#: src/setmetamode.c:92
msgid "old state: "
msgstr "oude toestand: "
-#: src/setmetamode.c:100
+#: src/setmetamode.c:98
msgid "new state: "
msgstr "nieuwe toestand: "
#: src/setvesablank.c:21
+#, c-format
msgid "usage: %s\n"
msgstr "aanroep: %s\n"
"[ als je dit under X probeert, dan werkt het misschien niet\n"
"want de X server leest ook van /dev/console ]\n"
-#: src/showkey.c:63
+#: src/showkey.c:65
#, c-format
msgid "caught signal %d, cleaning up...\n"
msgstr "kreeg signaal %d, herstel de oude toestand weer...\n"
-#: src/showkey.c:75
+#: src/showkey.c:79
#, c-format
msgid ""
"showkey version %s\n"
"\t-s --scancodes\tgeef alleen de scancodes\n"
"\t-k --keycodes\tgeef alleen de toetscodes (standaard)\n"
-#: src/showkey.c:148
+#: src/showkey.c:152
msgid ""
"\n"
"Press any keys - Ctrl-D will terminate this program\n"
"\n"
"Druk willekeurige toetsen in. Ctrl-D beeindigt het programma\n"
-#: src/showkey.c:217
+#: src/showkey.c:221
msgid "press any key (program terminates 10s after last keypress)...\n"
msgstr "Druk willekeurige toetsen in. Na 10 sec wachten stopt het programma.\n"
-#: src/showkey.c:225
+#: src/showkey.c:229
+#, c-format
msgid "keycode %3d %s\n"
msgstr "toetscode %3d %s\n"
-#: src/showkey.c:227
+#: src/showkey.c:231
msgid "release"
msgstr "loslaten"
-#: src/showkey.c:228
+#: src/showkey.c:232
msgid "press"
msgstr "indrukken"
-#: src/loadkeys.y:196
-#, c-format
-msgid "'%s' is not a function key symbol"
-msgstr "'%s' is geen functietoetssymbool"
-
-#: src/loadkeys.y:259
-#, c-format
-msgid "too many (%d) entries on one line"
-msgstr "teveel (%d) elementen op een regel"
-
-#: src/loadkeys.y:272
-msgid "too many keydefinitions on one line"
-msgstr "teveel toetsdefinities op een regel"
-
-#: src/loadkeys.y:291
-#, c-format
-msgid ""
-"loadkeys version %s\n"
-"\n"
-"Usage: loadkeys [option...] [mapfile...]\n"
-"\n"
-"valid options are:\n"
-"\n"
-"\t-c --clearcompose clear kernel compose table\n"
-"\t-d --default\t load \""
-msgstr ""
-"loadkeys versie %s\n"
-"\n"
-"Aanroep: loadkeys [option...] [mapfile...]\n"
-"\n"
-"geldige opties zijn:\n"
-"\n"
-"\t-c --clearcompose clear kernel compose table\n"
-"\t-d --default\t load \""
-
-#: src/loadkeys.y:362
-msgid "syntax error in map file\n"
-msgstr "Fout in het omnummerbestand\n"
-
-#: src/loadkeys.y:364
-msgid "key bindings not changed\n"
-msgstr "toetsinstellingen onveranderd\n"
-
-#: src/loadkeys.y:421
-msgid "includes nested too deeply"
-msgstr "include-bestanden te diep genest"
-
-#. start reading include file
-#: src/loadkeys.y:544
-#, c-format
-msgid "switching to %s\n"
-msgstr "ik lees nu van %s\n"
-
-#: src/loadkeys.y:550
-msgid "cannot open include file %s"
-msgstr "Kan het include-bestand %s niet openen"
-
-#: src/loadkeys.y:597
-msgid "Cannot find %s\n"
-msgstr "Kan het bestand %s niet vinden\n"
-
-#: src/loadkeys.y:610
-msgid "cannot open file %s\n"
-msgstr "Kan het bestand %s niet openen\n"
-
-#: src/loadkeys.y:621
-msgid "Loading %s\n"
-msgstr "Fout bij het lezen van %s\n"
-
-#: src/loadkeys.y:633
-#, c-format
-msgid "addmap called with bad index %d"
-msgstr "addmap aangeroepen met foute index %d"
-
-#: src/loadkeys.y:637
-#, c-format
-msgid "adding map %d violates explicit keymaps line"
-msgstr "het toevoegen van tabel %d is in strijd met de gegeven `keymaps' regel"
-
-#: src/loadkeys.y:651
-#, c-format
-msgid "killkey called with bad index %d"
-msgstr "killkey aangeroepen met foute index %d"
-
-#: src/loadkeys.y:653
-#, c-format
-msgid "killkey called with bad table %d"
-msgstr "killkey aangeroepen met foute tabel %d"
-
-#: src/loadkeys.y:667
-#, c-format
-msgid "addkey called with bad index %d"
-msgstr "addkey aangeroepen met foute index %d"
-
-#: src/loadkeys.y:669
-#, c-format
-msgid "addkey called with bad table %d"
-msgstr "addkey aangeroepen met foute tabel %d"
-
-#: src/loadkeys.y:709
-#, c-format
-msgid "%s: addfunc called with bad func %d\n"
-msgstr "%s: addfunc aangeroepen met foute func %d\n"
-
-#: src/loadkeys.y:729
-#, c-format
-msgid "%s: addfunc: func_buf overflow\n"
-msgstr "%s: addfunc: func_buf is te klein\n"
-
-#: src/loadkeys.y:747
-msgid "compose table overflow\n"
-msgstr "de compose-tabel is te klein\n"
-
-#: src/loadkeys.y:784
-#, c-format
-msgid "Keymap %d: Permission denied\n"
-msgstr "Toettabel %d: dat mag niet\n"
-
-#: src/loadkeys.y:793
-msgid " FAILED"
-msgstr " FAALDE"
-
-#: src/loadkeys.y:796
-msgid "failed to bind key %d to value %d\n"
-msgstr "kon toets %d niet de waarde %d toekennen\n"
-
-#: src/loadkeys.y:807
-#, c-format
-msgid "deallocate keymap %d\n"
-msgstr "geef het geheugen van toetsdefinitietabel %d vrij\n"
-
-#: src/loadkeys.y:813
-msgid "%s: could not deallocate keymap %d\n"
-msgstr "%s: kon toetsdefinitietabel %d niet opruimen\n"
-
-#: src/loadkeys.y:828
-msgid "%s: cannot deallocate or clear keymap\n"
-msgstr "%s: kan toetsdefinitietabel niet vrijgeven of schoonvegen\n"
-
-#: src/loadkeys.y:839
-msgid "%s: failed to restore keyboard mode\n"
-msgstr "%s: fout bij het herstellen van de toetsenbord toestand\n"
-
-#: src/loadkeys.y:842
-#, c-format
-msgid ""
-"%s: warning: this map uses Unicode symbols\n"
-" (perhaps you want to do `kbd_mode -u'?)\n"
-msgstr ""
-"%s: waarschuwing: deze toetsenbordtabel gebruikt Unicode symbolen\n"
-" (misschien wilt u `kbd_mode -u' zeggen?)\n"
-
-#: src/loadkeys.y:886
-#, c-format
-msgid "failed to bind string '%s' to function %s\n"
-msgstr "kon de string '%s' niet aan de functie %s binden\n"
-
-#: src/loadkeys.y:893
-#, c-format
-msgid "failed to clear string %s\n"
-msgstr "kon de string %s niet leegmaken\n"
-
-#: src/loadkeys.y:910
-msgid "too many compose definitions\n"
-msgstr "teveel definities van samengestelde symbolen\n"
-
-#: src/loadkeys.y:970
-msgid "impossible error in do_constant"
-msgstr "onmogelijke fout in do_constant"
-
-#: src/loadkeys.y:988
+#: src/xmalloc.c:14
#, c-format
-msgid ""
-"\n"
-"Changed %d %s and %d %s.\n"
-msgstr ""
-"\n"
-"Veranderde %d %s en %d %s.\n"
+msgid "%s: out of memory\n"
+msgstr "%s: onvoldoende geheugen\n"
-#: src/loadkeys.y:989
-msgid "key"
-msgstr "toets"
+#~ msgid "usage: %s [N1 N2 ...]\n"
+#~ msgstr "aanroep: %s [N1 N2 ...]\n"
-#: src/loadkeys.y:989
-msgid "keys"
-msgstr "toetsen"
+#~ msgid "Out of Memory\n"
+#~ msgstr "Onvoldoende geheugen\n"
-#: src/loadkeys.y:990
-msgid "string"
-msgstr "string"
+#~ msgid "Out of Memory?\n"
+#~ msgstr "Onvoldoende geheugen?\n"
-#: src/loadkeys.y:990
-msgid "strings"
-msgstr "strings"
+#~ msgid "%s: Cannot read psf header\n"
+#~ msgstr "%s: Kan de psf kop niet lezen\n"
-#: src/loadkeys.y:992
-msgid "Loaded %d compose %s.\n"
-msgstr "%d %s voor samengestelde symbolen geladen\n"
+#~ msgid "%s: Unknown mode number (%d)\n"
+#~ msgstr "%s: Onbekend psf type (%d)\n"
-#: src/loadkeys.y:993
-msgid "definition"
-msgstr "definitie"
+#~ msgid "%s: Font already had no character table\n"
+#~ msgstr "%s: Dit font had geen Unicode tabel\n"
-#: src/loadkeys.y:993
-msgid "definitions"
-msgstr "definities"
+#~ msgid "Out of memory?\n"
+#~ msgstr "Onvoldoende geheugen?\n"
-#: src/loadkeys.y:995
-msgid "(No change in compose definitions.)\n"
-msgstr "(Geen wijziging in definities van samengestelde symbolen.)\n"
+#~ msgid "Out of memory.\n"
+#~ msgstr "Onvoldoende geheugen.\n"
-#: src/loadkeys.y:1028
-#, c-format
-msgid "loadkeys: don't know how to compose for %s\n"
-msgstr "loadkeys: ik ken de definities van de samengestelde symbolen voor %s niet\n"
+#~ msgid ""
+#~ "Setfont is so naive as to believe that font files\n"
+#~ "have a size of at most 32kB. Unfortunately it seems\n"
+#~ "that you encountered an exception. If this really is\n"
+#~ "a font file, (i) recompile setfont, (ii) tell aeb@cwi.nl .\n"
+#~ msgstr ""
+#~ "Setfont denkt dat een font nooit groter dan 32kB kan zijn.\n"
+#~ "Helaas ziet het er naar uit dat U een uitzondering bent tegengekomen.\n"
+#~ "Als dit echt een font is, (i) compileer setfont opnieuw, en (ii) schrijf "
+#~ "naar aeb@cwi.nl .\n"
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: kbd 0.98\n"
-"POT-Creation-Date: 1999-03-14 20:57+0100\n"
-"PO-Revision-Date: 1999-03-14 09:36+0500\n"
+"Project-Id-Version: kbd 0.99\n"
+"POT-Creation-Date: 1999-10-08 20:28+0200\n"
+"PO-Revision-Date: 1999-03-15 09:36+0500\n"
"Last-Translator: QingLong <QingLong@Bolizm>\n"
"Language-Team: LANGUAGE <RU@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=koi8-r\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/chvt.c:23
-msgid "usage: chvt N\n"
-msgstr "ÐÏÌØÚÏ×ÁÔØÓÑ ÔÁË: chvt N\n"
+#: openvt/openvt.c:67
+#, fuzzy, c-format
+msgid "openvt: %s: illegal vt number\n"
+msgstr "%s: 0: ÎÅÄÏÐÕÓÔÉÍÙÊ ÎÏÍÅÒ VT\n"
+
+#: openvt/openvt.c:91
+msgid "openvt: only root can use the -u flag.\n"
+msgstr ""
+
+#: openvt/openvt.c:105 src/getfd.c:63
+msgid "Couldnt get a file descriptor referring to the console\n"
+msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ËÏÎÓÏÌÉ\n"
+
+#: openvt/openvt.c:117
+#, fuzzy
+msgid "openvt: cannot find a free vt\n"
+msgstr "%s: ÎÅÔ ÎÉËÁËÉÈ ÒÁÓËÌÁÄÏË, ×ÏÏÂÝÅ?\n"
+
+#: openvt/openvt.c:122
+#, c-format
+msgid "openvt: cannot check whether vt %d is free\n"
+msgstr ""
+
+#: openvt/openvt.c:123 openvt/openvt.c:128
+msgid " use `openvt -f' to force.\n"
+msgstr ""
+
+#: openvt/openvt.c:127
+#, c-format
+msgid "openvt: vt %d is in use; command aborted\n"
+msgstr ""
+
+#: openvt/openvt.c:155
+#, c-format
+msgid "openvt: Unable to open %s: %s\n"
+msgstr ""
+
+#: openvt/openvt.c:167
+#, c-format
+msgid "openvt: Cannot open %s read/write (%s)\n"
+msgstr ""
+
+#: openvt/openvt.c:205
+#, c-format
+msgid "openvt: using VT %s\n"
+msgstr ""
+
+#: openvt/openvt.c:217
+#, c-format
+msgid "openvt: Unable to set new session (%s)\n"
+msgstr ""
-#: src/deallocvt.c:18
+#: openvt/openvt.c:225
#, c-format
-msgid "usage: %s [N1 N2 ...]\n"
-msgstr "ÐÏÌØÚÏ×ÁÔØÓÑ ÔÁË: %s [N1 N2 ...]\n"
+msgid ""
+"\n"
+"openvt: could not open %s R/W (%s)\n"
+msgstr ""
+
+#: openvt/openvt.c:281
+#, fuzzy, c-format
+msgid "openvt: could not deallocate console %d\n"
+msgstr "%s: ÎÕ, ÎÅ ÓÍÏÇÌÁ Ñ ×ÙÓ×ÏÂÏÄÉÔØ ËÏÎÓÏÌØ %d\n"
+
+#: src/chvt.c:22
+msgid "usage: chvt N\n"
+msgstr "ÐÏÌØÚÏ×ÁÔØÓÑ ÔÁË: chvt N\n"
-#: src/deallocvt.c:41
+#: src/deallocvt.c:35
#, c-format
msgid "%s: deallocating all unused consoles failed\n"
msgstr "%s: ÎÅ ÕÄÁÌÏÓØ ×ÙÓ×ÏÂÏÄÉÔØ ×ÓÅ ÎÅÉÓÐÏÌØÚÕÅÍÙÅ ËÏÎÓÏÌÉ\n"
-#: src/deallocvt.c:49
+#: src/deallocvt.c:43
#, c-format
msgid "%s: 0: illegal VT number\n"
msgstr "%s: 0: ÎÅÄÏÐÕÓÔÉÍÙÊ ÎÏÍÅÒ VT\n"
-#: src/deallocvt.c:52
+#: src/deallocvt.c:46
#, c-format
msgid "%s: VT 1 is the console and cannot be deallocated\n"
msgstr "%s: VT 1 --- ÜÔÏ ËÏÎÓÏÌØ É ÎÅ ÍÏÖÅÔ ÂÙÔØ ×ÙÓ×ÏÂÏÖÄÅÎÁ\n"
-#: src/deallocvt.c:57
+#: src/deallocvt.c:51
#, c-format
msgid "%s: could not deallocate console %d\n"
msgstr "%s: ÎÕ, ÎÅ ÓÍÏÇÌÁ Ñ ×ÙÓ×ÏÂÏÄÉÔØ ËÏÎÓÏÌØ %d\n"
-#: src/dumpkeys.c:63
+#: src/dumpkeys.c:64
#, c-format
msgid "KDGKBENT error at index 0 in table %d: "
msgstr "ÏÛÉÂËÁ KDGKBENT ÐÏ ÉÎÄÅËÓÕ 0 × ÔÁÂÌÉÃÅ %d: "
-#: src/dumpkeys.c:76
+#: src/dumpkeys.c:77
#, c-format
msgid "%s: cannot find any keymaps?\n"
msgstr "%s: ÎÅÔ ÎÉËÁËÉÈ ÒÁÓËÌÁÄÏË, ×ÏÏÂÝÅ?\n"
-#: src/dumpkeys.c:81
+#: src/dumpkeys.c:82
#, c-format
msgid "%s: plain map not allocated? very strange ...\n"
msgstr "%s: ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ ÐÒÏÓÔÁÑ ÒÁÓËÌÁÄËÁ? ïÞÅÎØ ÓÔÒÁÎÎÏ...\n"
-#: src/dumpkeys.c:111
+#: src/dumpkeys.c:114
#, c-format
msgid "KDGKBENT error at index %d in table %d: "
msgstr "ÏÛÉÂËÁ KDGKBENT ÐÏ ÉÎÄÅËÓÕ %d × ÔÁÂÌÉÃÅ %d: "
-#: src/dumpkeys.c:228
+#: src/dumpkeys.c:242
#, c-format
msgid "keycode range supported by kernel: 1 - %d\n"
msgstr "ÄÉÁÐÁÚÏÎ ËÏÄÏ× ËÌÁ×ÉÛ, ÉÚ×ÅÓÔÎÙÈ ÑÄÒÕ: 1 -- %d\n"
-#: src/dumpkeys.c:230
+#: src/dumpkeys.c:244
#, c-format
msgid "max number of actions bindable to a key: %d\n"
msgstr "ÎÁ ÏÄÎÕ ËÌÁ×ÉÛÕ ×ÓÅÇÏ ÍÏÖÎÏ ÐÏ×ÅÓÉÔØ ÄÅÊÓÔ×ÉÊ: %d\n"
-#: src/dumpkeys.c:233
+#: src/dumpkeys.c:247
#, c-format
msgid "number of keymaps in actual use: %d\n"
msgstr "ÒÅÁÌØÎÏ ÉÓÐÏÌØÚÕÅÍÙÈ ÒÁÓËÌÁÄÏË: %d\n"
-#: src/dumpkeys.c:236
+#: src/dumpkeys.c:250
#, c-format
msgid "of which %d dynamically allocated\n"
msgstr "ÉÚ ÎÉÈ ÕÓÔÁÎÏ×ÌÅÎÏ ÄÉÎÁÍÉÞÅÓËÉ: %d\n"
-#: src/dumpkeys.c:237
+#: src/dumpkeys.c:251
msgid "ranges of action codes supported by kernel:\n"
msgstr "ËÏÄÙ ÄÅÊÓÔ×ÉÊ, ÄÏÐÕÓËÁÅÍÙÅ ÑÄÒÏÍ:\n"
-#: src/dumpkeys.c:242
+#: src/dumpkeys.c:256
#, c-format
msgid "number of function keys supported by kernel: %d\n"
msgstr "ÆÕÎËÃÉÏÎÁÌØÎÙÈ ËÌÁ×ÉÛ, ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ ÑÄÒÏÍ: %d\n"
-#: src/dumpkeys.c:245
+#: src/dumpkeys.c:259
#, c-format
msgid "max nr of compose definitions: %d\n"
msgstr "ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÏÓÔÁ×ÎÙÈ ÏÐÒÅÄÅÌÅÎÉÊ: %d\n"
-#: src/dumpkeys.c:247
+#: src/dumpkeys.c:261
#, c-format
msgid "nr of compose definitions in actual use: %d\n"
msgstr "ÒÅÁÌØÎÏ ÉÓÐÏÌØÚÕÅÍÙÈ ÓÏÓÔÁ×ÎÙÈ ÏÐÒÅÄÅÌÅÎÉÊ: %d\n"
-#: src/dumpkeys.c:270
+#: src/dumpkeys.c:285
#, c-format
msgid ""
"Symbols recognized by %s:\n"
"(ÞÉÓÌÏ×ÏÅ ÚÎÁÞÅÎÉÅ, ÓÉÍ×ÏÌ)\n"
"\n"
-#: src/dumpkeys.c:282
+#: src/dumpkeys.c:298
msgid ""
"\n"
"The following synonyms are recognized:\n"
"ðÏÎÉÍÁÅÍÙÅ ÓÉÎÏÎÉÍÙ:\n"
"\n"
-#: src/dumpkeys.c:284
+#: src/dumpkeys.c:300
#, c-format
msgid "%-15s for %s\n"
msgstr "%-15s ×ÍÅÓÔÏ %s\n"
-#: src/dumpkeys.c:286
+#: src/dumpkeys.c:302
msgid ""
"\n"
"Recognized modifier names and their column numbers:\n"
"\n"
"éÚ×ÅÓÔÎÙÅ ÎÁÚ×ÁÎÉÑ ÍÏÄÉÆÉËÁÔÏÒÏ× É ÎÏÍÅÒÁ ÉÍ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ËÏÌÏÎÏË: \n"
-#: src/dumpkeys.c:346
+#: src/dumpkeys.c:365
#, c-format
msgid "# not alt_is_meta: on keymap %d key %d is bound to"
msgstr "# ÎÅ alt_is_meta: × ÒÁÓËÌÁÄËÅ %d ËÌÁ×ÉÛÅ %d ÎÁÚÎÁÞÅÎÏ"
-#: src/dumpkeys.c:421
+#: src/dumpkeys.c:440
msgid "impossible: not meta?\n"
msgstr "ÇÌÀË: ÎÅ `meta'?\n"
-#: src/dumpkeys.c:477
+#: src/dumpkeys.c:497
#, c-format
msgid "KDGKBSENT failed at index %d: "
msgstr "KDGKBSENT ÏÂÌÏÍÉÌÓÑ ÎÁ ÉÎÄÅËÓÅ %d: "
-#: src/dumpkeys.c:497
+#: src/dumpkeys.c:517
#, c-format
msgid "dumpkeys version %s"
msgstr "dumpkeys ×ÅÒÓÉÉ %s"
-#: src/dumpkeys.c:499
+#: src/dumpkeys.c:518
+#, fuzzy
msgid ""
"\n"
"usage: dumpkeys [options...]\n"
"\t --funcs-only\t display only the function key strings\n"
"\t --keys-only\t display only key bindings\n"
"\t --compose-only display only compose key combinations\n"
-"\t-c --charset=iso-8859-{1,2,3,4,5,7,8,9}\n"
-"\t koi8-{r,u}\t\t\n"
-"\t\t\t interpret character action codes to be from the\n"
-"\t\t\t specified character set\n"
+"\t-c --charset="
msgstr ""
"\n"
"ðÏÌØÚÕ×ÁÔÉÓÑ ÔÁË: dumpkeys [ÏÐÃÉÉ...]\n"
"\t \tÐÏÌÁÇÁÔØ ËÏÄÉÒÏ×ËÏÊ ÕËÁÚÁÎÎÕÀ\n"
"\t \t(ÉÍÅÅÔ ÓÍÙÓÌ ÄÌÑ ÂÕË×ÅÎÎÙÈ ÓÉÍ×ÏÌÏ×)\n"
-#: src/findfile.c:14
-msgid "Out of Memory\n"
-msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ\n"
-
-#: src/findfile.c:24
-msgid "Out of Memory?\n"
-msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ?\n"
+#: src/dumpkeys.c:535
+msgid ""
+"\t\t\t interpret character action codes to be from the\n"
+"\t\t\t specified character set\n"
+msgstr ""
-#: src/findfile.c:61
+#: src/findfile.c:43
#, c-format
msgid "error executing %s\n"
msgstr "ÏÛÉÂËÁ ÉÓÐÏÌÎÅÎÉÑ %s\n"
-#: src/getfd.c:57
-msgid "Couldnt get a file descriptor referring to the console\n"
-msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ËÏÎÓÏÌÉ\n"
-
-#: src/getkeycodes.c:18
+#: src/getkeycodes.c:17
msgid "usage: getkeycodes\n"
msgstr "ÐÏÌØÚÏ×ÁÔØÓÑ ÔÁË: getkeycodes\n"
-#: src/getkeycodes.c:34
+#: src/getkeycodes.c:33
msgid "Plain scancodes xx (hex) versus keycodes (dec)\n"
msgstr ""
"óÏÂÓÔ×ÅÎÎÏ ÓËÁÎ-ËÏÄÙ xx (hex) É, ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ, ËÏÄÙ ËÌÁ×ÉÛ (ÄÅÓÑÔÉÞÎÙÅ)\n"
-#: src/getkeycodes.c:35
+#: src/getkeycodes.c:34
msgid "0 is an error; for 1-88 (0x01-0x58) scancode equals keycode\n"
msgstr ""
"0 --- ÏÛÉÂËÁ; ÓËÁÎ-ËÏÄÙ 1--88 (0x01--0x58) ÒÁ×ÎÙ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍ ËÏÄÁÍ "
"ËÌÁ×ÉÛ\n"
-#: src/getkeycodes.c:39
+#: src/getkeycodes.c:38
msgid ""
"\n"
"\n"
"\n"
"óËÁÎ-ËÏÄÙ Ó `Escape' e0 xx (hex)\n"
-#: src/getkeycodes.c:59
+#: src/getkeycodes.c:58
#, c-format
msgid "failed to get keycode for scancode 0x%x\n"
msgstr "ÎÅ ÕÄÁÌÏÓØ ÎÁÊÔÉ ËÏÄ ËÌÁ×ÉÛÉ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÓËÁÎ-ËÏÄÕ 0x%x\n"
-#: src/getunimap.c:43
+#: src/getunimap.c:45
+#, fuzzy, c-format
+msgid ""
+"Usage:\n"
+"\t%s [-s]\n"
+msgstr "ÐÏÌØÚÏ×ÁÔØÓÑ ÔÁË: %s\n"
+
+#: src/getunimap.c:66
#, c-format
msgid "strange... ct changed from %d to %d\n"
msgstr "ÓÔÒÁÎÎÏ... ct ÉÚÍÅÎÉÌÓÑ Ó %d ÎÁ %d\n"
-#: src/kbd_mode.c:20
+#: src/kbd_mode.c:19
msgid "usage: kbd_mode [-a|-u|-k|-s]\n"
msgstr "ÐÏÌØÚÏ×ÁÔØÓÑ ÔÁË: kbd_mode [-s|-u|-k|-a]\n"
-#: src/kbd_mode.c:40
+#: src/kbd_mode.c:39
msgid "kbd_mode: error reading keyboard mode\n"
msgstr "kbd_mode: ÏÛÉÂËÁ ÞÔÅÎÉÑ ÒÅÖÉÍÁ ËÌÁ×ÉÁÔÕÒÙ\n"
-#: src/kbd_mode.c:45
+#: src/kbd_mode.c:44
msgid "The keyboard is in raw (scancode) mode\n"
msgstr "ëÌÁ×ÉÁÔÕÒÁ ÎÁÈÏÄÉÔÓÑ × ÓÙÒÏÍ (raw) ÒÅÖÉÍÅ (ÛÌ£Ô ÓËÁÎ-ËÏÄÙ)\n"
-#: src/kbd_mode.c:48
+#: src/kbd_mode.c:47
msgid "The keyboard is in mediumraw (keycode) mode\n"
msgstr "ëÌÁ×ÉÁÔÕÒÁ ÎÁÈÏÄÉÔÓÑ × ÐÏÌÕÓÙÒÏÍ ÒÅÖÉÍÅ (ÛÌ£Ô ËÏÄÙ ËÌÁ×ÉÛ)\n"
-#: src/kbd_mode.c:51
+#: src/kbd_mode.c:50
msgid "The keyboard is in the default (ASCII) mode\n"
msgstr "ëÌÁ×ÉÁÔÕÒÁ ÎÁÈÏÄÉÔÓÑ × ÏÂÙÞÎÏÍ ÒÅÖÉÍÅ (ÛÌ£Ô ASCII-ËÏÄÙ ÚÎÁËÏ×)\n"
-#: src/kbd_mode.c:54
+#: src/kbd_mode.c:53
msgid "The keyboard is in Unicode (UTF-8) mode\n"
msgstr "ëÌÁ×ÉÁÔÕÒÁ ÎÁÈÏÄÉÔÓÑ × ÒÅÖÉÍÅ Unicode (ÛÌ£Ô ËÏÄÙ ÚÎÁËÏ× × UTF-8)\n"
-#: src/kbd_mode.c:57
+#: src/kbd_mode.c:56
msgid "The keyboard is in some unknown mode\n"
msgstr "ëÌÁ×ÉÁÔÕÒÁ (×ÒÏÄÅ ÕÎÄÅÒ×ÕÄÁ) ÎÁÈÏÄÉÔÓÑ × ÎÅÉÚ×ÅÓÔÎÏÍ ÒÅÖÉÍÅ\n"
-#: src/kbd_mode.c:75
+#: src/kbd_mode.c:74
#, c-format
msgid "%s: error setting keyboard mode\n"
msgstr "%s: ÏÛÉÂËÁ ÕÓÔÁÎÏ×ËÉ ÒÅÖÉÍÁ ËÌÁ×ÉÁÔÕÒÙ\n"
-#: src/kdfontop.c:164 src/kdfontop.c:214
-msgid "setfont bug: getfont called with count<256\n"
+#: src/kbdrate.c:139 src/kbdrate.c:272
+#, c-format
+msgid "Typematic Rate set to %.1f cps (delay = %d ms)\n"
+msgstr ""
+
+#: src/kbdrate.c:247
+#, fuzzy
+msgid "Cannot open /dev/port"
+msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÆÁÊÌ %s\n"
+
+#: src/kdfontop.c:152
+msgid "kdfontop.c: only width 8 supported\n"
+msgstr ""
+
+#: src/kdfontop.c:178
+#, fuzzy
+msgid "bug: getfont called with count<256\n"
msgstr "ÏÛÉÂËÁ × setfont: getfont ÂÙÌÁ ×ÙÚ×ÁÎÁ Ó count < 256\n"
-#: src/ksyms.c:857
+#: src/ksyms.c:1668
#, c-format
msgid "unknown charset %s - ignoring charset request\n"
msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ËÏÄÉÒÏ×ËÁ %s --- ÐÒÏÐÕÓËÁÀ ÚÁÐÒÏÓ ËÏÄÉÒÏ×ËÉ ÍÅÖÄÕ ÕÛÅÊ\n"
-#: src/ksyms.c:891
+#: src/ksyms.c:1740
+#, fuzzy, c-format
+msgid "assuming iso-8859-1 %s\n"
+msgstr "ÐÏÌÁÇÁÀ iso-8859-2 %s\n"
+
+#: src/ksyms.c:1747
+#, fuzzy, c-format
+msgid "assuming iso-8859-15 %s\n"
+msgstr "ÐÏÌÁÇÁÀ iso-8859-2 %s\n"
+
+#: src/ksyms.c:1754
#, c-format
msgid "assuming iso-8859-2 %s\n"
msgstr "ÐÏÌÁÇÁÀ iso-8859-2 %s\n"
-#: src/ksyms.c:898
+#: src/ksyms.c:1761
#, c-format
msgid "assuming iso-8859-3 %s\n"
msgstr "ÐÏÌÁÇÁÀ iso-8859-3 %s\n"
-#: src/ksyms.c:905
+#: src/ksyms.c:1768
#, c-format
msgid "assuming iso-8859-4 %s\n"
msgstr "ÐÏÌÁÇÁÀ iso-8859-4 %s\n"
-#: src/ksyms.c:909
+#: src/ksyms.c:1773
#, c-format
msgid "unknown keysym '%s'\n"
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ keysym `%s'\n"
-#: src/loadunimap.c:59 src/mapscrn.c:51
+#: src/ksyms.c:1808
#, c-format
-msgid "usage: %s [-o map.orig] map-file\n"
+msgid "plus before %s ignored\n"
+msgstr ""
+
+#: loadkeys.y:197
+#, c-format
+msgid "'%s' is not a function key symbol"
+msgstr "`%s' ÎÅ Ñ×ÌÑÅÔ ÓÏÂÏÊ ÓÉÍ×ÏÌ ÆÕÎËÃÉÏÎÁÌØÎÏÊ ËÌÁ×ÉÛÉ"
+
+#: loadkeys.y:260
+#, c-format
+msgid "too many (%d) entries on one line"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ (%d) ÛÔÕË × ÏÄÎÏÊ ÓÔÒÏÞËÅ"
+
+#: loadkeys.y:273
+msgid "too many keydefinitions on one line"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÏÐÒÅÄÅÌÅÎÉÊ ËÌÁ×ÉÛ ÎÁ ÏÄÎÏÊ ÓÔÒÏËÅ"
+
+#: loadkeys.y:292
+#, c-format
+msgid ""
+"loadkeys version %s\n"
+"\n"
+"Usage: loadkeys [option...] [mapfile...]\n"
+"\n"
+"valid options are:\n"
+"\n"
+"\t-c --clearcompose clear kernel compose table\n"
+"\t-d --default\t load \""
+msgstr ""
+"loadkeys ×ÅÒÓÉÉ %s\n"
+"\n"
+"ðÏÌØÚÏ×ÁÔØÓÑ ÔÁË: loadkeys [ÏÐÃÉÉ...] [ÓÈÅÍÁ_ÏÔÏÂÒÁÖÅÎÉÑ_ÜËÒÁÎÁ...]\n"
+"\n"
+"ïÐÃÉÉ:\n"
+"\t-c --clearcompose\tÏÞÉÓÔÉÔØ ÑÄÒ£ÎÕÀ ÔÁÂÌÉÃÕ ÍÏÄÉÆÉËÁÔÏÒÏ×\n"
+"\t-d --default \tÚÁÇÒÕÚÉÔØ\""
+
+#: loadkeys.y:368
+msgid "syntax error in map file\n"
+msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÆÁÊÌÅ ÏÔÏÂÒÁÖÅÎÉÑ\n"
+
+#: loadkeys.y:370
+msgid "key bindings not changed\n"
+msgstr "ËÌÁ×ÉÛÎÙÅ ÎÁÚÎÁÞÅÎÉÑ ÎÅ ÉÚÍÅÎÉÌÉÓØ\n"
+
+#: loadkeys.y:427
+msgid "includes nested too deeply"
+msgstr "ÆÁÊÌÙ ×ÓÔÁ×ÌÅÎÙ ÎÁ ÓÌÉÛËÏÍ ÂÏÌØÛÕÀ ÇÌÕÂÉÎÕ"
+
+#. start reading include file
+#: loadkeys.y:550
+#, c-format
+msgid "switching to %s\n"
+msgstr "ÐÅÒÅËÌÀÞÁÀÓØ ÎÁ %s\n"
+
+#: loadkeys.y:556
+#, c-format
+msgid "cannot open include file %s"
+msgstr "ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ (×ÓÔÁ×ÌÑÅÍÙÊ) ÆÁÊÌ %s"
+
+#: loadkeys.y:603
+#, c-format
+msgid "Cannot find %s\n"
+msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ %s\n"
+
+#: loadkeys.y:616
+#, c-format
+msgid "cannot open file %s\n"
+msgstr "ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÆÁÊÌ %s\n"
+
+#: loadkeys.y:627
+#, c-format
+msgid "Loading %s\n"
+msgstr "úÁÇÒÕÖÁÀ %s\n"
+
+#: loadkeys.y:639
+#, c-format
+msgid "addmap called with bad index %d"
+msgstr "addmap ×ÙÚ×ÁÎÁ Ó ËÒÉ×ÙÍ ÉÎÄÅËÓÏÍ %d"
+
+#: loadkeys.y:643
+#, c-format
+msgid "adding map %d violates explicit keymaps line"
+msgstr "ÎÁÌÏÖÅÎÉÅ ÓÈÅÍÙ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ %d ÐÒÏÔÉ×ÏÒÅÞÉÔ Ñ×ÎÏÍÕ ÕËÁÚÁÎÉÀ keymaps"
+
+#: loadkeys.y:657
+#, c-format
+msgid "killkey called with bad index %d"
+msgstr "killkey ×ÙÚ×ÁÎÁ Ó ÎÅÄÏÐÕÓÔÉÍÙÍ ÉÎÄÅËÓÏÍ %d"
+
+#: loadkeys.y:659
+#, c-format
+msgid "killkey called with bad table %d"
+msgstr "killkey ×ÙÚ×ÁÎÁ Ó ËÒÉ×ÏÊ ÔÁÂÌÉÃÅÊ %d"
+
+#: loadkeys.y:673
+#, c-format
+msgid "addkey called with bad index %d"
+msgstr "addkey ×ÙÚ×ÁÎÁÎ Ó ÎÅÄÏÕÓÔÉÍÙÍ ÉÎÄÅËÓÏÍ %d"
+
+#: loadkeys.y:675
+#, c-format
+msgid "addkey called with bad table %d"
+msgstr "addkey ×ÙÚ×ÁÎÁ Ó ËÒÉ×ÏÊ ÔÁÂÌÉÃÅÊ %d"
+
+#: loadkeys.y:715
+#, c-format
+msgid "%s: addfunc called with bad func %d\n"
+msgstr "addfunc ×ÙÚ×ÁÎÁ Ó ÎÅÄÏÐÕÓÔÉÍÏÊ ÆÕÎËÃÉÅÊ %d\n"
+
+#: loadkeys.y:735
+#, c-format
+msgid "%s: addfunc: func_buf overflow\n"
+msgstr "%s: addfunc: ÐÅÒÅÐÏÌÎÅÎÉÅ func_buf\n"
+
+#: loadkeys.y:753
+msgid "compose table overflow\n"
+msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÔÁÂÌÉÃÙ ÓÏÓÔÁ×ÎÙÈ ÎÁÚÎÁÞÅÎÉÊ\n"
+
+#: loadkeys.y:790
+#, c-format
+msgid "Keymap %d: Permission denied\n"
+msgstr "òÁÓËÌÁÄËÁ %d: ÎÅ ÒÁÚÒÅÛÅÎÏ\n"
+
+#: loadkeys.y:799
+msgid " FAILED"
+msgstr " ïâìïí"
+
+#: loadkeys.y:802
+#, c-format
+msgid "failed to bind key %d to value %d\n"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÐÏÓÔÁ×ÉÔØ ËÌÁ×ÉÛÅ %d ÚÎÁÞÅÎÉÅ %d\n"
+
+#: loadkeys.y:813
+#, c-format
+msgid "deallocate keymap %d\n"
+msgstr "×ÙÓ×ÏÂÏÖÄÅÎÁ ÒÁÓËÌÁÄËÁ %d\n"
+
+#: loadkeys.y:819
+#, c-format
+msgid "%s: could not deallocate keymap %d\n"
+msgstr "%s: ÎÅ ÕÄÁÌÏÓØ ×ÙÓ×ÏÂÏÄÉÔØ ÒÁÓËÌÁÄËÕ %d\n"
+
+#: loadkeys.y:834
+#, c-format
+msgid "%s: cannot deallocate or clear keymap\n"
+msgstr "%s: ÎÅ ÕÄÁÌÏÓØ ×ÙÓ×ÏÂÏÄÉÔØ ÉÌÉ ×ÙÞÉÓÔÉÔØ ÒÁÓËÌÁÄËÕ\n"
+
+#: loadkeys.y:845
+#, c-format
+msgid "%s: failed to restore keyboard mode\n"
+msgstr "%s: ÎÅ ÕÄÁÌÏÓØ ×ÏÓÓÔÁÎÏ×ÉÔØ ÒÅÖÉÍ ËÌÁ×ÉÁÔÕÒÙ\n"
+
+#: loadkeys.y:848
+#, c-format
+msgid ""
+"%s: warning: this map uses Unicode symbols\n"
+" (perhaps you want to do `kbd_mode -u'?)\n"
+msgstr ""
+"%s: ÐÒÅÄÏÓÔÅÒÅÖÅÎÉÅ: ÜÔÁ ÓÈÅÍÁ ÉÓÐÏÌØÚÕÅÔ ÓÉÍ×ÏÌÙ Unicode\n"
+"\t(ÍÏÖÅÔ, ÌÕÞÛÅ ÉÓÐÏÌØÚÏ×ÁÔØ `kbd_mode -u'?)\n"
+
+#: loadkeys.y:892
+#, c-format
+msgid "failed to bind string '%s' to function %s\n"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÏ×ÅÓÉÔØ ÓÔÒÏÞËÕ `%s' ÎÁ ÆÕÎËÃÉÀ %s\n"
+
+#: loadkeys.y:899
+#, c-format
+msgid "failed to clear string %s\n"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÏÞÉÓÔÉÔØ ÓÔÒÏÞËÕ `%s'\n"
+
+#: loadkeys.y:916
+msgid "too many compose definitions\n"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÁ×ÎÙÈ ÏÐÒÅÄÅÌÅÎÉÊ\n"
+
+#: loadkeys.y:976
+msgid "impossible error in do_constant"
+msgstr "ÓÕÒÏ×ÙÊ ÇÌÀË × do_constant"
+
+#: loadkeys.y:994
+#, c-format
+msgid ""
+"\n"
+"Changed %d %s and %d %s.\n"
+msgstr ""
+"\n"
+"éÚÍÅÎÅÎÙ %d %s É %d %s.\n"
+
+#: loadkeys.y:995
+msgid "key"
+msgstr "ËÌÁ×ÉÛÁ"
+
+#: loadkeys.y:995
+msgid "keys"
+msgstr "ËÌÁ×ÉÛ"
+
+#: loadkeys.y:996
+msgid "string"
+msgstr "ÓÔÒÏÞËÁ"
+
+#: loadkeys.y:996
+msgid "strings"
+msgstr "ÓÔÒÏÞÅË"
+
+#: loadkeys.y:998
+#, c-format
+msgid "Loaded %d compose %s.\n"
+msgstr "úÁÇÒÕÖÅÎÏ %d ÓÏÓÔÁ×ÎÙÈ %s.\n"
+
+#: loadkeys.y:999
+msgid "definition"
+msgstr "ÏÐÒÅÄÅÌÅÎÉÅ"
+
+#: loadkeys.y:999
+msgid "definitions"
+msgstr "ÏÐÒÅÄÅÌÅÎÉÊ"
+
+#: loadkeys.y:1001
+msgid "(No change in compose definitions.)\n"
+msgstr "(óÏÓÔÁ×ÎÙÅ ÏÐÒÅÄÅÌÅÎÉÑ ÎÅ ÐÒÅÔÅÒÐÅÌÉ ÉÚÍÅÎÅÎÉÊ.)\n"
+
+#: loadkeys.y:1034
+#, c-format
+msgid "loadkeys: don't know how to compose for %s\n"
+msgstr "loadkeys: ÎÅ ÚÎÁÀ, ËÁË ÓÏÓÔÁ×ÌÑÔØ × %s\n"
+
+#: src/loadunimap.c:57
+#, fuzzy, c-format
+msgid "usage: %s [-o map.orig] [map-file]\n"
msgstr "ÐÏÌØÚÏ×ÁÔØÓÑ ÔÁË: %s [-o ÉÓÈÏÄÎÁÑ_ÒÁÓËÌÁÄËÁ] ÆÁÊÌ_Ó_ÒÁÓËÌÁÄËÏÊ\n"
#: src/loadunimap.c:109
msgid "trying hashlevel %d\n"
msgstr "ÐÒÏÂÕÀ hashlevel %d\n"
-#: src/loadunimap.c:124
-#, c-format
-msgid "%s: out of memory\n"
-msgstr "%s: ÎÅÈ×ÁÔËÁ ÐÁÍÑÔÉ\n"
-
-#: src/loadunimap.c:149
+#: src/loadunimap.c:146
#, c-format
msgid "Loading unicode map from file %s\n"
msgstr "úÁÇÒÕÖÁÀ unicode-ÓÈÅÍÕ ÉÚ ÆÁÊÌÁ %s\n"
-#: src/loadunimap.c:155
+#: src/loadunimap.c:152
#, c-format
msgid "%s: %s: Warning: line too long\n"
msgstr "%s: %s: ðÒÅÄÏÓÔÅÒÅÖÅÎÉÅ: ÓÌÉÛËÏÍ ÄÌÉÎÎÁÑ ÓÔÒÏÞËÁ\n"
-#: src/loadunimap.c:177 src/loadunimap.c:188 src/psfaddtable.c:204
-#: src/psfaddtable.c:217
+#: src/loadunimap.c:174 src/loadunimap.c:185
#, c-format
msgid "Bad input line: %s\n"
msgstr "ëÒÉ×ÁÑ ÓÔÒÏÞËÁ ÎÁ ××ÏÄÅ: %s\n"
-#: src/loadunimap.c:198 src/psfaddtable.c:228
+#: src/loadunimap.c:195
#, c-format
msgid "%s: Glyph number (0x%x) larger than font length\n"
msgstr "%s: îÏÍÅÒ ÚÎÁËÁ (0x%x) ÂÏÌØÛÅ ËÏÌÉÞÅÓÔ×Á ÚÎÁËÏ× × ÜÔÏÍ ÛÒÉÆÔÅ\n"
-#: src/loadunimap.c:204 src/psfaddtable.c:235
+#: src/loadunimap.c:201
#, c-format
msgid "%s: Bad end of range (0x%x)\n"
msgstr "%s: ëÒÉ×ÏÊ ËÏÎÅà ÄÉÁÐÁÚÏÎÁ (0x%x)\n"
-#: src/loadunimap.c:224 src/psfaddtable.c:260
+#: src/loadunimap.c:221 src/psfxtable.c:167
#, c-format
msgid ""
"%s: Corresponding to a range of font positions, there should be a Unicode "
"%s: äÉÁÐÁÚÏÎÕ ÐÏÚÉÃÉÊ ÛÒÉÆÔÁ ÄÏÌÖÅÎ ÓÏÏÔ×ÅÔÓÔ×Ï×ÁÔØ ÎÅËÉÊ ÄÉÁÐÁÚÏÎ × "
"Unicode\n"
-#: src/loadunimap.c:233 src/psfaddtable.c:270
+#: src/loadunimap.c:230 src/psfxtable.c:176
#, c-format
msgid "%s: Bad Unicode range corresponding to font position range 0x%x-0x%x\n"
msgstr ""
"îÅÄÏÐÕÓÔÉÍÙÊ Unicode-ÄÉÁÐÁÚÏÎ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÄÉÁÐÁÚÏÎÕ ÛÒÉÆÔÁ 0x%x--0x%x\n"
-#: src/loadunimap.c:240 src/psfaddtable.c:278
+#: src/loadunimap.c:237 src/psfxtable.c:183
#, c-format
msgid ""
"%s: Unicode range U+%x-U+%x not of the same length as font position range "
"%s: Unicode-ÄÉÁÐÁÚÏÎ U+%x--U+%x ÏÔÌÉÞÁÅÔÓÑ ÄÌÉÎÏÊ ÏÔ ÄÉÁÐÁÚÏÎÁ ÛÒÉÆÔÁ "
"0x%x--0x%x\n"
-#: src/loadunimap.c:258 src/psfaddtable.c:297
+#: src/loadunimap.c:255 src/psfxtable.c:204
#, c-format
msgid "%s: trailing junk (%s) ignored\n"
msgstr "%s: ÓÉÆ ÎÁ ËÏÎÃÅ (%s) --- ÐÒÏÐÕÓËÁÀ\n"
-#: src/loadunimap.c:264
+#: src/loadunimap.c:261
#, c-format
msgid ""
"%s: not loading empty unimap\n"
"%s: ÎÅ ÓÔÁÎÕ ÇÒÕÚÉÔØ ÐÕÓÔÕÀ unimap\n"
"(ÅÓÌÉ ÷Ù ÎÁÓÔÁÉ×ÁÅÔÅ, ×ÏÓÐÏÌØÚÕÊÔÅÓØ ÏÐÃÉÅÊ `-f')\n"
-#: src/loadunimap.c:285
+#: src/loadunimap.c:282
#, c-format
msgid "%s: out of memory?\n"
msgstr "%s: ÎÅÈ×ÁÔËÁ ÐÁÍÑÔÉ?\n"
-#: src/loadunimap.c:295
+#: src/loadunimap.c:292
msgid "entry"
msgstr "ÐÕÎËÔ"
-#: src/loadunimap.c:295
+#: src/loadunimap.c:292
msgid "entries"
msgstr "ÐÕÎËÔÙ"
-#: src/loadunimap.c:321
+#: src/loadunimap.c:318
#, c-format
msgid "Saved unicode map on `%s'\n"
msgstr "úÁÐÉÓÁÌ unicode-ÓÈÅÍÕ × `%s'\n"
-#: src/loadunimap.c:353
+#: src/loadunimap.c:338
msgid "Appended Unicode map\n"
msgstr "äÏÂÁ×ÉÌ × Unicode-ÓÈÅÍÕ\n"
-#: src/mapscrn.c:68
+#: src/mapscrn.c:55
+#, c-format
+msgid "usage: %s [-o map.orig] map-file\n"
+msgstr "ÐÏÌØÚÏ×ÁÔØÓÑ ÔÁË: %s [-o ÉÓÈÏÄÎÁÑ_ÒÁÓËÌÁÄËÁ] ÆÁÊÌ_Ó_ÒÁÓËÌÁÄËÏÊ\n"
+
+#: src/mapscrn.c:72
#, c-format
msgid "mapscrn: cannot open map file _%s_\n"
msgstr "mapscrn: ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÆÁÊÌ \"%s\"\n"
-#: src/mapscrn.c:73
+#: src/mapscrn.c:77
msgid "Cannot stat map file"
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÆÁÊÌÅ (stat)"
-#: src/mapscrn.c:78
+#: src/mapscrn.c:82
#, c-format
msgid "Loading symbolic screen map from file %s\n"
msgstr "úÁÇÒÕÖÁÀ ÏÐÉÓÁÎÉÅ ÓÈÅÍÙ ÏÔÏÂÒÁÖÅÎÉÑ ÜËÒÁÎÁ ÉÚ ÆÁÊÌÁ %s\n"
-#: src/mapscrn.c:82
+#: src/mapscrn.c:86
msgid "Error parsing symbolic map\n"
msgstr "ïÛÉÂËÁ ÒÁÓÓÁÓÙ×ÁÎÉÑ ÏÐÉÓÁÎÉÑ ÓÈÅÍÙ ÏÔÏÂÒÁÖÅÎÉÑ\n"
-#: src/mapscrn.c:86
+#: src/mapscrn.c:90
#, c-format
msgid "Loading binary screen map from file %s\n"
msgstr "úÁÇÒÕÖÁÀ ÓÈÅÍÕ ÏÔÏÂÒÁÖÅÎÉÑ ÜËÒÁÎÁ ÉÚ ÆÁÊÌÁ %s\n"
-#: src/mapscrn.c:90
+#: src/mapscrn.c:94
msgid "Cannot read map from file"
msgstr "îÅ ÍÏÇÕ ÐÒÏÞÉÔÁÔØ ÓÈÅÍÕ ÏÔÏÂÒÁÖÅÎÉÑ ÉÚ ÆÁÊÌÁ"
-#: src/mapscrn.c:103
+#: src/mapscrn.c:107
#, c-format
msgid "Loaded screen map from `%s'\n"
msgstr "óÈÅÍÁ ÏÔÏÂÒÁÖÅÎÉÑ ÜËÒÁÎÁ ÚÁÇÒÕÖÅÎÁ ÉÚ `%s'\n"
-#: src/mapscrn.c:149
+#: src/mapscrn.c:153
#, c-format
msgid "mapscrn: format error detected in _%s_\n"
msgstr "mapscrn: ÏÂÎÁÒÕÖÅÎÁ ÏÛÉÂËÁ × ÆÏÒÍÁÔÅ ÄÁÎÎÙÈ × \"%s\"\n"
-#: src/mapscrn.c:172
+#: src/mapscrn.c:176
msgid "Error writing map to file"
msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ × ÆÁÊÌ"
-#: src/mapscrn.c:178
+#: src/mapscrn.c:182
#, c-format
msgid "Saved screen map in `%s'\n"
msgstr "óÈÅÍÁ ÏÔÏÂÒÁÖÅÎÉÑ ÜËÒÁÎÁ ÚÁÐÉÓÁÎÁ × `%s'\n"
-#: src/psfaddtable.c:33
+#: src/psffontop.c:52
+#, fuzzy, c-format
+msgid "%s: short ucs2 unicode table\n"
+msgstr "%s: ûÒÉÆÔ ÎÅ ÉÍÅÅÔ ÚÎÁËÏ×ÏÊ ÔÁÂÌÉÃÙ\n"
+
+#: src/psffontop.c:79
+#, c-format
+msgid "%s: short utf8 unicode table\n"
+msgstr ""
+
+#: src/psffontop.c:94
+#, c-format
+msgid "%s: bad utf8\n"
+msgstr ""
+
+#: src/psffontop.c:119
+#, fuzzy, c-format
+msgid "%s: short unicode table\n"
+msgstr "%s: ûÒÉÆÔ ÎÅ ÉÍÅÅÔ ÚÎÁËÏ×ÏÊ ÔÁÂÌÉÃÙ\n"
+
+#: src/psffontop.c:198
+#, fuzzy, c-format
+msgid "%s: Error reading input font"
+msgstr "ïÛÉÂËÁ ÞÔÅÎÉÑ ×ÈÏÄÎÏÇÏ ÛÒÉÆÔÁ"
+
+#: src/psffontop.c:212
#, c-format
+msgid "%s: Bad call of readpsffont\n"
+msgstr ""
+
+#: src/psffontop.c:227
+#, fuzzy, c-format
+msgid "%s: Unsupported psf file mode (%d)\n"
+msgstr "ó ÜÔÉÍ ÔÉÐÏÍ psf-ÆÁÊÌÁ Ñ ÒÁÂÏÔÁÔØ ÎÅ ÕÍÅÀ\n"
+
+#: src/psffontop.c:243
+#, fuzzy, c-format
+msgid "%s: Unsupported psf version (%d)\n"
+msgstr "ó ÜÔÉÍ ÔÉÐÏÍ psf-ÆÁÊÌÁ Ñ ÒÁÂÏÔÁÔØ ÎÅ ÕÍÅÀ\n"
+
+#: src/psffontop.c:257
+#, c-format
+msgid "%s: zero input font length?\n"
+msgstr ""
+
+#: src/psffontop.c:262
+#, fuzzy, c-format
+msgid "%s: zero input character size?\n"
+msgstr "%s: ûÒÉÆÔ ÎÅ ÉÍÅÅÔ ÚÎÁËÏ×ÏÊ ÔÁÂÌÉÃÙ\n"
+
+#: src/psffontop.c:268
+#, fuzzy, c-format
+msgid "%s: Input file: bad input length (%d)\n"
+msgstr "æÁÊÌ ××ÏÄÁ: ÎÅÄÏÐÕÓÔÉÍÁÑ ÄÌÉÎÁ\n"
+
+#: src/psffontop.c:295
+#, fuzzy, c-format
+msgid "%s: Input file: trailing garbage\n"
+msgstr "æÁÊÌ ××ÏÄÁ: ÎÅÄÏÐÕÓÔÉÍÁÑ ÄÌÉÎÁ\n"
+
+#: src/psffontop.c:328
+#, c-format
+msgid "appendunicode: illegal unicode %u\n"
+msgstr ""
+
+#: src/psfxtable.c:110
+#, c-format
+msgid "%s: Warning: line too long\n"
+msgstr "%s: ðÒÅÄÏÓÔÅÒÅÖÅÎÉÅ: ÓÌÉÛËÏÍ ÄÌÉÎÎÁÑ ÓÔÒÏÞËÁ\n"
+
+#: src/psfxtable.c:124 src/psfxtable.c:134
+#, fuzzy, c-format
+msgid "%s: Bad input line: %s\n"
+msgstr "ëÒÉ×ÁÑ ÓÔÒÏÞËÁ ÎÁ ××ÏÄÅ: %s\n"
+
+#: src/psfxtable.c:143
+#, fuzzy, c-format
+msgid "%s: Glyph number (0x%lx) past end of font\n"
+msgstr "%s: îÏÍÅÒ ÚÎÁËÁ (0x%x) ÂÏÌØÛÅ ËÏÌÉÞÅÓÔ×Á ÚÎÁËÏ× × ÜÔÏÍ ÛÒÉÆÔÅ\n"
+
+#: src/psfxtable.c:148
+#, fuzzy, c-format
+msgid "%s: Bad end of range (0x%lx)\n"
+msgstr "%s: ëÒÉ×ÏÊ ËÏÎÅà ÄÉÁÐÁÚÏÎÁ (0x%x)\n"
+
+#: src/psfxtable.c:256
+#, fuzzy, c-format
msgid ""
-"Usage: \n"
-" %s psffont chartable [outfile]\n"
+"Usage:\n"
+"\t%s infont intable outfont\n"
msgstr ""
"ðÏÌØÚÏ×ÁÔØÓÑ ÔÁË:\n"
"\t%s psf-ÛÒÉÆÔ ÔÁÂÌÉÃÁ-ÚÎÁËÏ× [ÆÁÊÌ_×Ù×ÏÄÁ]\n"
-#: src/psfaddtable.c:136 src/psfgettable.c:75 src/psfstriptable.c:75
-#, c-format
-msgid "%s: Cannot read psf header\n"
-msgstr "%s: îÅ ÍÏÇÕ ÐÒÏÞÉÔÁÔØ psf-ÚÁÇÏÌÏ×ÏË\n"
-
-#: src/psfaddtable.c:142 src/psfgettable.c:81 src/psfstriptable.c:81
-#, c-format
-msgid "%s: Bad magic number\n"
-msgstr "%s: ëÒÉ×ÏÊ ÐÒÉÚÎÁË (magic number)\n"
-
-#: src/psfaddtable.c:148 src/psfgettable.c:87 src/psfstriptable.c:87
-#, c-format
-msgid "%s: Unknown mode number (%d)\n"
-msgstr "%s: îÅÉÚ×ÅÓÔÎÙÊ ÎÏÍÅÒ ÒÅÖÉÍÁ (%d)\n"
-
-#: src/psfaddtable.c:181
-#, c-format
-msgid "%s: Warning: line too long\n"
-msgstr "%s: ðÒÅÄÏÓÔÅÒÅÖÅÎÉÅ: ÓÌÉÛËÏÍ ÄÌÉÎÎÁÑ ÓÔÒÏÞËÁ\n"
+#: src/psfxtable.c:265
+#, fuzzy, c-format
+msgid ""
+"Usage:\n"
+"\t%s infont [outtable]\n"
+msgstr ""
+"ðÏÌØÚÏ×ÁÔØÓÑ ÔÁË:\n"
+"\t%s psf-ÛÒÉÆÔ [ÆÁÊÌ_×Ù×ÏÄÁ]\n"
-#: src/psfgettable.c:23 src/psfstriptable.c:25
-#, c-format
+#: src/psfxtable.c:274
+#, fuzzy, c-format
msgid ""
-"Usage: \n"
-" %s psffont [outfile]\n"
+"Usage:\n"
+"\t%s infont outfont\n"
msgstr ""
"ðÏÌØÚÏ×ÁÔØÓÑ ÔÁË:\n"
"\t%s psf-ÛÒÉÆÔ [ÆÁÊÌ_×Ù×ÏÄÁ]\n"
-#: src/psfgettable.c:96
+#: src/psfxtable.c:297
#, c-format
-msgid "%s: Font has no character table\n"
-msgstr "%s: ûÒÉÆÔ ÎÅ ÉÍÅÅÔ ÚÎÁËÏ×ÏÊ ÔÁÂÌÉÃÙ\n"
+msgid ""
+"Usage:\n"
+"\t%s [-i infont] [-o outfont] [-it intable] [-ot outtable] [-nt]\n"
+msgstr ""
-#: src/psfstriptable.c:96
+#: src/psfxtable.c:356
+#, fuzzy, c-format
+msgid "%s: Bad magic number on %s\n"
+msgstr "%s: ëÒÉ×ÏÊ ÐÒÉÚÎÁË (magic number)\n"
+
+#: src/psfxtable.c:371
+#, c-format
+msgid "%s: psf file with unknown magic\n"
+msgstr ""
+
+#: src/psfxtable.c:387
#, c-format
-msgid "%s: Font already had no character table\n"
-msgstr "%s: ûÒÉÆÔ ÕÖÅ ÂÙÌ ÂÅÚ ÚÎÁËÏ×ÏÊ ÔÁÂÌÉÃÙ\n"
+msgid "%s: input font does not have an index\n"
+msgstr ""
-#: src/resizecons.c:145
+#: src/resizecons.c:149
#, c-format
msgid "resizecons: cannot find videomode file %s\n"
msgstr "resizecons: ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÆÁÊÌ ×ÉÄÅÏÒÅÖÉÍÁ %s\n"
-#: src/resizecons.c:164
+#: src/resizecons.c:168
msgid "Invalid number of lines\n"
msgstr "îÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ ÓÔÒÏË\n"
-#: src/resizecons.c:230
+#: src/resizecons.c:234
#, c-format
msgid "Old mode: %dx%d New mode: %dx%d\n"
msgstr ""
"ðÒÅÖÎÉÊ ÒÅÖÉÍ: %dx%d\n"
" îÏ×ÙÊ ÒÅÖÉÍ: %dx%d\n"
-#: src/resizecons.c:232
+#: src/resizecons.c:236
#, c-format
msgid "Old #scanlines: %d New #scanlines: %d Character height: %d\n"
msgstr ""
"óÔÒÏË ÒÁÚ×£ÒÔËÉ × ÎÏ×ÏÍ ÒÅÖÉÍÅ: %d\n"
" ÷ÙÓÏÔÁ ÛÒÉÆÔÁ: %d\n"
-#: src/resizecons.c:243
+#: src/resizecons.c:247
#, c-format
msgid "resizecons: the command `%s' failed\n"
msgstr "resizecons: ËÏÍÁÎÄÁ `%s' ÎÅ ÕÄÁÌÁÓØ\n"
-#: src/resizecons.c:308
+#: src/resizecons.c:315
#, c-format
msgid ""
"resizecons: don't forget to change TERM (maybe to con%dx%d or linux-%dx%d)\n"
"resizecons: ÎÅ ÚÁÂÕÄØÔÅ ÓÍÅÎÉÔØ TERM (×ÏÚÍÏÖÎÏ, ÎÁ con%dx%d ÉÌÉ "
"linux-%dx%d)\n"
-#: src/resizecons.c:321
+#: src/resizecons.c:328
msgid ""
"resizecons:\n"
"call is: resizecons COLSxROWS or: resizecons COLS ROWS\n"
", ÇÄÅ ÐÁÒÁÍÅÔÒ óôòïþåë ÍÏÖÅÔ ÐÒÉÎÉÍÁÔØ ÚÎÁÞÅÎÉÑ:\n"
"\t25, 28, 30, 34, 36, 40, 44, 50, 60\n"
-#: src/resizecons.c:359
+#: src/resizecons.c:366
msgid "resizecons: cannot get I/O permissions.\n"
msgstr "resizecons: ÎÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÐÒÁ×Á ÎÁ ÄÏÓÔÕÐ ËÏ ××ÏÄÕ-×Ù×ÏÄÕ.\n"
-#: src/screendump.c:38
+#: src/screendump.c:46
msgid "usage: screendump [n]\n"
msgstr "ÐÏÌØÚÏ×ÁÔØÓÑ ÔÁË: screendump [n]\n"
-#: src/screendump.c:55 src/screendump.c:120 src/setfont.c:251
-msgid "Out of memory?\n"
-msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ?\n"
-
-#: src/screendump.c:59
+#: src/screendump.c:66
#, c-format
msgid "Error reading %s\n"
msgstr "ïÛÉÂËÁ ÞÔÅÎÉÑ %s\n"
-#: src/screendump.c:94
-msgid "Out of memory.\n"
-msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ.\n"
-
-#: src/screendump.c:104
+#: src/screendump.c:107
#, c-format
msgid "couldn't read %s, and cannot ioctl dump\n"
msgstr ""
"ÎÅ ÓÍÏÇ ÐÒÏÞÉÔÁÔØ %s É ÎÅ ÍÏÇÕ ÕÐÒÁ×ÌÑÔØ ÆÁÊÌ-ÄÅÓËÒÉÐÔÏÒÏÍ ÓÂÒÏÓÁ (ioctl "
"dump)\n"
+#. we tried this just to be sure, but TIOCLINUX
+#. function 0 has been disabled since 1.1.92
+#. Do not mention `ioctl dump' in error msg
#: src/screendump.c:113
#, c-format
+msgid "couldn't read %s\n"
+msgstr ""
+
+#: src/screendump.c:122
+#, c-format
msgid "Strange ... screen is both %dx%d and %dx%d ??\n"
msgstr "îÕ É ÎÕ! üËÒÁÎ ÏÄÎÏ×ÒÅÍÅÎÎÏ É %dx%d, É %dx%d?\n"
-#: src/screendump.c:135
+#: src/screendump.c:140
msgid "Error writing screendump\n"
msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ ÜËÒÁÎÎÏÇÏ ÓÂÒÏÓÁ\n"
-#: src/setfont.c:63
+#: src/setfont.c:76
+#, fuzzy
msgid ""
-"Usage: setfont [write-options] [-<N>] [newfont] [-m consolemap] [-u "
+"Usage: setfont [write-options] [-<N>] [newfont..] [-m consolemap] [-u "
"unicodemap]\n"
" write-options (take place before file loading):\n"
" -o <filename>\tWrite current font to <filename>\n"
"\n"
"æÁÊÌÙ ÚÁÇÒÕÖÁÀÔÓÑ ÉÚ ÔÅËÕÝÅÊ ÄÉÒÅËÔÏÒÉÉ ÉÌÉ ÉÚ `/usr/share/kbd/...'.\n"
-#: src/setfont.c:106
+#: src/setfont.c:121
#, c-format
msgid "setfont version %s\n"
msgstr "setfont ×ÅÒÓÉÉ %s\n"
-#: src/setfont.c:160
+#: src/setfont.c:169
+msgid "setfont: too many input files\n"
+msgstr ""
+
+#: src/setfont.c:177
msgid ""
"setfont: cannot both restore from character ROM and from file. Font "
"unchanged.\n"
"setfont: ÎÅ ÍÏÇÕ ÓÔÁ×ÉÔØ ÛÒÉÆÔ ÓÒÁÚÕ É ÉÚ ðúõ, É ÉÚ ÆÁÊÌÁ. ûÒÉÆÔ îå "
"ÉÚÍÅΣÎ.\n"
-#: src/setfont.c:221
+#: src/setfont.c:245
#, c-format
msgid "Bad character size %d\n"
msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÒÁÚÍÅÒ ÚÎÁËÁ %d\n"
-#: src/setfont.c:232
+#: src/setfont.c:266
+#, c-format
+msgid "%s: font position 32 is nonblank\n"
+msgstr ""
+
+#: src/setfont.c:274
+#, c-format
+msgid "%s: wiped it\n"
+msgstr ""
+
+#: src/setfont.c:278
+#, c-format
+msgid "%s: background will look funny\n"
+msgstr ""
+
+#: src/setfont.c:288
#, c-format
msgid "Loading %d-char 8x%d font from file %s\n"
msgstr "úÁÇÒÕÖÁÀ %d-ÚÎÁËÏ×ÙÊ ÛÒÉÆÔ 8x%d ÉÚ ÆÁÊÌÁ %s\n"
-#: src/setfont.c:270
+#: src/setfont.c:291
+#, fuzzy, c-format
+msgid "Loading %d-char 8x%d font\n"
+msgstr "úÁÇÒÕÖÁÀ %d-ÚÎÁËÏ×ÙÊ ÛÒÉÆÔ 8x%d ÉÚ ÆÁÊÌÁ %s\n"
+
+#: src/setfont.c:332
+#, c-format
+msgid "%s: bug in do_loadtable\n"
+msgstr ""
+
+#: src/setfont.c:340
msgid "Loading Unicode mapping table...\n"
msgstr "úÁÇÒÕÖÁÀ Unicode-ÔÁÂÌÉÃÕ...\n"
-#: src/setfont.c:279
+#: src/setfont.c:349
msgid ""
"It seems this kernel is older than 1.1.92\n"
"No Unicode mapping table loaded.\n"
"ðÏÈÏÖÅ, ÑÄÒÏ ÄÒÅ×ÎÅÅ 1.1.92!\n"
"îÉËÁËÉÈ Unicode-ÔÁÂÌÉà ÎÅ ÚÁÇÒÕÖÅÎÏ.\n"
-#: src/setfont.c:317
+#: src/setfont.c:396 src/setfont.c:469
+#, c-format
+msgid "Cannot open font file %s\n"
+msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÆÁÊÌ %s\n"
+
+#: src/setfont.c:407
+#, c-format
+msgid "When loading several fonts, all must be psf fonts - %s isn't\n"
+msgstr ""
+
+#: src/setfont.c:414
+#, fuzzy, c-format
+msgid "Read %d-char 8x%d font from file %s\n"
+msgstr "úÁÇÒÕÖÁÀ %d-ÚÎÁËÏ×ÙÊ ÛÒÉÆÔ 8x%d ÉÚ ÆÁÊÌÁ %s\n"
+
+#: src/setfont.c:419
+msgid "When loading several fonts, all must have the same pointsize\n"
+msgstr ""
+
+#: src/setfont.c:456
msgid "Cannot find default font\n"
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÏÓÎÏ×ÎÏÊ ÛÒÉÆÔ (ËÏÔÏÒÙÊ `ÐÏ ÕÍÏÌÞÁÎÉÀ')\n"
-#: src/setfont.c:324
+#: src/setfont.c:463
#, c-format
msgid "Cannot find %s font\n"
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÛÒÉÆÔ %s\n"
-#: src/setfont.c:330
-#, c-format
-msgid "Cannot open font file %s\n"
-msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÆÁÊÌ %s\n"
-
-#: src/setfont.c:342
-msgid "Error reading input font"
-msgstr "ïÛÉÂËÁ ÞÔÅÎÉÑ ×ÈÏÄÎÏÇÏ ÛÒÉÆÔÁ"
+#: src/setfont.c:506
+msgid "No final newline in combine file\n"
+msgstr ""
-#: src/setfont.c:351
-msgid ""
-"Setfont is so naive as to believe that font files\n"
-"have a size of at most 32kB. Unfortunately it seems\n"
-"that you encountered an exception. If this really is\n"
-"a font file, (i) recompile setfont, (ii) tell aeb@cwi.nl .\n"
-msgstr ""
-"Setfont ÎÁÉ×ÅÎ ÎÁÓÔÏÌØËÏ, ÞÔÏ ÐÏÌÁÇÁÅÔ,\n"
-"ÞÔÏ ÆÁÊÌÙ ÛÒÉÆÔÏ× ÍÏÇÕÔ ÂÙÔØ ÏÔ ÓÉÌÙ 32KB.\n"
-"õ×Ù, ÐÏÈÏÖÅ, ÷Ù ÎÁÔËÎÕÌÉÓØ ÎÁ ÉÓËÌÀÞÅÎÉÅ.\n"
-"åÓÌÉ ÜÔÏ É × ÓÁÍÏÍ ÄÅÌÅ ÛÒÉÆÔÏ×ÙÊ ÆÁÊÌ, ÔÏ:\n"
-" 1. ÐÅÒÅËÏÍÐÉÌÉÒÕÊÔÅ, ÐÏÖÁÌÕÊÓÔÁ, setfont,\n"
-" 2. ÓÏÏÂÝÉÔÅ ÏÂ ÜÔÏÍ <aeb@cwi.nl>.\n"
-
-#: src/setfont.c:376
-msgid "Unsupported psf file mode\n"
-msgstr "ó ÜÔÉÍ ÔÉÐÏÍ psf-ÆÁÊÌÁ Ñ ÒÁÂÏÔÁÔØ ÎÅ ÕÍÅÀ\n"
+#: src/setfont.c:512
+#, fuzzy
+msgid "Too many files to combine\n"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ (%d) ÛÔÕË × ÏÄÎÏÊ ÓÔÒÏÞËÅ"
-#: src/setfont.c:385
-msgid "Input file: bad length\n"
-msgstr "æÁÊÌ ××ÏÄÁ: ÎÅÄÏÐÕÓÔÉÍÁÑ ÄÌÉÎÁ\n"
+#. restorefont -w writes a SVGA font to file
+#. restorefont -r restores it
+#. These fonts have size 32768, for two 512-char fonts.
+#. In fact, when BROKEN_GRAPHICS_PROGRAMS is defined,
+#. and it always is, there is no default font that is saved,
+#. so probably the second half is always garbage.
+#: src/setfont.c:535
+msgid "Hmm - a font from restorefont? Using the first half.\n"
+msgstr ""
-#: src/setfont.c:402
+#: src/setfont.c:551
msgid "Bad input file size\n"
msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÒÁÚÍÅÒ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ\n"
-#: src/setfont.c:421
+#: src/setfont.c:570
msgid ""
"This file contains 3 fonts: 8x8, 8x14 and 8x16. Please indicate\n"
"using an option -8 or -14 or -16 which one you want loaded.\n"
"õËÁÖÉÔÅ, ÐÏÖÁÌÕÊÓÔÁ, ÏÄÎÉÍ ÉÚ ËÌÀÞÉËÏ×: -8, -14 ÉÌÉ -16,\n"
"ËÁËÏÊ ÉÍÅÎÎÏ ÷Ù ÈÏÔÉÔÅ ÚÁÇÒÕÚÉÔØ.\n"
-#: src/setfont.c:435
+#: src/setfont.c:584
#, c-format
msgid "You asked for font size %d, but only 8, 14, 16 are possible here.\n"
msgstr "÷Ù ÐÒÏÓÉÌÉ ÛÒÉÆÔ ÒÁÚÍÅÒÁ %d, ÎÏ ×ÏÚÍÏÖÎÙ ÔÏÌØËÏ 8, 14 ÉÌÉ 16.\n"
-#: src/setfont.c:471
+#: src/setfont.c:621
msgid "Cannot write font file header"
msgstr "îÅ ÍÏÇÕ ÚÁÐÉÓÁÔØ ÚÁÇÏÌÏ×ÏË ÆÁÊÌÁ ÛÒÉÆÔÁ"
-#: src/setfont.c:477
+#: src/setfont.c:627
msgid "Found nothing to save\n"
msgstr "îÅ ÎÁÛ£Ì, ÞÔÏ ÚÁÐÉÓÁÔØ\n"
-#: src/setfont.c:481
+#: src/setfont.c:631
msgid "Cannot write font file"
msgstr "îÅ ÍÏÇÕ ÚÁÐÉÓÁÔØ ÆÁÊÌ ÛÒÉÆÔÁ"
-#: src/setfont.c:485
+#: src/setfont.c:635
#, c-format
msgid "Saved %d-char 8x%d font file on %s\n"
msgstr "úÁÐÉÓÁÌ %d-ÚÎÁËÏ×ÙÊ ÛÒÉÆÔ 8x%d × ÆÁÊÌ %s\n"
-#: src/setkeycodes.c:21
+#: src/setkeycodes.c:20
msgid ""
"usage: setkeycode scancode keycode ...\n"
" (where scancode is either xx or e0xx, given in hexadecimal,\n"
"óËÁÎ-ËÏÄ ÓÌÅÄÕÅÔ ÐÉÓÁÔØ × ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÍ ×ÉÄÅ: xx ÉÌÉ e0xx,\n"
"ËÏÄ ËÌÁ×ÉÛÉ --- × ÄÅÓÑÔÉÞÎÏÊ ÚÁÐÉÓÉ.\n"
-#: src/setkeycodes.c:38
+#: src/setkeycodes.c:37
msgid "even number of arguments expected"
msgstr "ÏÖÉÄÁÅÔÓÑ Þ£ÔÎÏÅ ÞÉÓÌÏ ÁÒÇÕÍÅÎÔÏ×"
-#: src/setkeycodes.c:45
+#: src/setkeycodes.c:44
msgid "error reading scancode"
msgstr "ÏÛÉÂËÁ ÞÔÅÎÉÑ ÓËÁÎ-ËÏÄÁ"
-#: src/setkeycodes.c:51
+#: src/setkeycodes.c:50
msgid "code outside bounds"
msgstr "ËÏÄ ×ÎÅ ÄÏÐÕÓÔÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ"
-#: src/setkeycodes.c:54
+#: src/setkeycodes.c:53
#, c-format
msgid "failed to set scancode %x to keycode %d\n"
msgstr "ÎÅ ÕÄÁÌÏÓØ ÕÓÔÁÎÏ×ÉÔØ ÓËÁÎ-ËÏÄ %x ËÏÄÕ %d\n"
-#: src/setleds.c:20
+#: src/setleds.c:24
+#, fuzzy, c-format
msgid ""
"Usage:\n"
-"\tsetleds [-v] [-L] [-D] [-F] [[+|-][ num | caps | scroll ]]\n"
+"\tsetleds [-v] [-L] [-D] [-F] [[+|-][ num | caps | scroll %s]]\n"
"Thus,\n"
"\tsetleds +caps -num\n"
"will set CapsLock, clear NumLock and leave ScrollLock unchanged.\n"
"ÉÈ ÉÈ ÚÎÁÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÔÁË ÞÔÏ ÐÏÓÌÅÄÕÀÝÉÊ ÐÅÒÅÚÁÐÕÓË ÓÉÓÔÅÍÙ\n"
"ÏÓÔÁ×ÉÔ ÜÔÉ ÆÌÁÖËÉ ÂÅÚ ÉÚÍÅÎÅÎÉÊ.\n"
-#: src/setleds.c:74
+#: src/setleds.c:89
msgid "Error reading current led setting. Maybe stdin is not a VT?\n"
msgstr ""
"ïÛÉÂËÁ ÞÔÅÎÉÑ ÔÅËÕÝÅÇÏ ÓÏÓÔÏÑÎÉÑ ÌÁÍÐÏÞÅË. íÏÖÅÔ, stdin É ÎÅ VT ÓÏ×ÓÅÍ?\n"
-#: src/setleds.c:81
+#: src/setleds.c:108
msgid "Error reading current flags setting. Maybe an old kernel?\n"
msgstr "ïÛÉÂËÁ ÞÔÅÎÉÑ ÔÅËÕÝÅÇÏ ÓÏÓÔÏÑÎÉÑ ÆÌÁÖËÏ×. íÏÖÅÔ, ÑÄÒÏ ÓÔÁÒÏ×ÁÔÏ?\n"
-#: src/setleds.c:108
+#: src/setleds.c:121 src/setleds.c:136
+#, fuzzy
+msgid "Error reading current led setting from /dev/kbd.\n"
+msgstr ""
+"ïÛÉÂËÁ ÞÔÅÎÉÑ ÔÅËÕÝÅÇÏ ÓÏÓÔÏÑÎÉÑ ÌÁÍÐÏÞÅË. íÏÖÅÔ, stdin É ÎÅ VT ÓÏ×ÓÅÍ?\n"
+
+#: src/setleds.c:125
+msgid "KIOCGLED unavailable?\n"
+msgstr ""
+
+#: src/setleds.c:140
+msgid "KIOCSLED unavailable?\n"
+msgstr ""
+
+#: src/setleds.c:158
+msgid "Error opening /dev/kbd.\n"
+msgstr ""
+
+#: src/setleds.c:194
msgid "Error resetting ledmode\n"
msgstr "ïÛÉÂËÁ ÕÓÔÁÎÏ×ËÉ ÌÁÍÐÏÞÅË × ÉÓÈÏÄÎÏÅ ÓÏÓÔÏÑÎÉÅ\n"
-#: src/setleds.c:117
+#: src/setleds.c:203
msgid "Current default flags: "
msgstr "ôÅËÕÝÉÅ ÆÌÁÖËÉ `ÐÏ ÕÍÏÌÞÁÎÉÀ': "
-#: src/setleds.c:121
+#: src/setleds.c:207
msgid "Current flags: "
msgstr "ôÅËÕÝÉÅ ÆÌÁÖËÉ: "
-#: src/setleds.c:125
+#: src/setleds.c:211
msgid "Current leds: "
msgstr "ôÅËÕÝÅÅ ÓÏÓÔÏÑÎÉÅ ÌÁÍÐÏÞÅË: "
-#: src/setleds.c:153 src/setmetamode.c:90
+#: src/setleds.c:247 src/setmetamode.c:88
#, c-format
msgid ""
"unrecognized argument: _%s_\n"
"ÎÅÐÏÎÑÔÎÙÊ ÁÒÇÕÍÅÎÔ: \"%s\"\n"
"\n"
-#: src/setleds.c:162
+#: src/setleds.c:256
msgid "Old default flags: "
msgstr "ðÒÅÖÎÉÅ ÆÌÁÖËÉ `ÐÏ ÕÍÏÌÞÁÎÉÀ': "
-#: src/setleds.c:164
+#: src/setleds.c:258
msgid "New default flags: "
msgstr " îÏ×ÙÅ ÆÌÁÖËÉ `ÐÏ ÕÍÏÌÞÁÎÉÀ': "
-#: src/setleds.c:171
+#: src/setleds.c:265
msgid "Old flags: "
msgstr "ðÒÅÖÎÉÅ ÆÌÁÖËÉ: "
-#: src/setleds.c:173
+#: src/setleds.c:267
msgid "New flags: "
msgstr " îÏ×ÙÅ ÆÌÁÖËÉ: "
-#: src/setleds.c:186
+#: src/setleds.c:281 src/setleds.c:290
msgid "Old leds: "
msgstr "ðÒÅÖÎÅÅ ÓÏÓÔÏÑÎÉÅ ÌÁÍÐÏÞÅË: "
-#: src/setleds.c:188
+#: src/setleds.c:283 src/setleds.c:292
msgid "New leds: "
msgstr " îÏ×ÏÅ ÓÏÓÔÏÑÎÉÅ ÌÁÍÐÏÞÅË: "
"ÞÔÏÂÙ ÕÐÒÁ×ÌÑÔØ ÓÏÓÔÏÑÎÉÅÍ ÄÒÕÇÏÇÏ VT.\n"
"äÏËÌÁÄÁÀÔÓÑ ÓÏÓÔÏÑÎÉÑ ÄÏ É ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ.\n"
-#: src/setmetamode.c:36
+#: src/setmetamode.c:35
msgid "Meta key sets high order bit\n"
msgstr "ëÌÁ×ÉÛÁ Meta ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÓÔÁÒÛÉÊ ÂÉÔ\n"
-#: src/setmetamode.c:39
+#: src/setmetamode.c:38
msgid "Meta key gives Esc prefix\n"
msgstr "ëÌÁ×ÉÛÁ Meta ÄÁ£Ô Esc-ÐÒÅÆÉËÓ\n"
-#: src/setmetamode.c:42
+#: src/setmetamode.c:41
msgid "Strange mode for Meta key?\n"
msgstr "óÔÒÁÎÎÙÊ ÒÅÖÉÍ ËÌÁ×ÉÛÉ Meta\n"
-#: src/setmetamode.c:74
+#: src/setmetamode.c:72
msgid "Error reading current setting. Maybe stdin is not a VT?\n"
msgstr "ïÛÉÂËÁ ÞÔÅÎÉÑ ÔÅËÕÝÅÇÏ ÓÏÓÔÏÑÎÉÑ. íÏÖÅÔ, stdin É ÎÅ VT ÓÏ×ÓÅÍ?\n"
-#: src/setmetamode.c:94
+#: src/setmetamode.c:92
msgid "old state: "
msgstr "ÐÒÅÖÎÅÅ ÓÏÓÔÏÑÎÉÅ: "
-#: src/setmetamode.c:100
+#: src/setmetamode.c:98
msgid "new state: "
msgstr " ÎÏ×ÏÅ ÓÏÓÔÏÑÎÉÅ: "
"[ ÅÓÌÉ ÷Ù ÐÙÔÁÅÔÅÓØ ÐÒÏÄÅÌÁÔØ ÜÔÏ ÐÏÄ X-ÁÍÉ, ÏÎÏ, ×ÏÚÍÏÖÎÏ,\n"
" É ÎÅ ÓÒÁÂÏÔÁÅÔ, ÔÁË ËÁË X ÓÅÒ×ÅÒ ÔÏÖÅ ÞÉÔÁÅÔ /dev/console ]\n"
-#: src/showkey.c:63
+#: src/showkey.c:65
#, c-format
msgid "caught signal %d, cleaning up...\n"
msgstr "ÐÏÊÍÁÌ ÓÉÇÎÁÌ %d, ÕÂÉÒÁÀ ÚÁ ÓÏÂÏÊ...\n"
-#: src/showkey.c:75
+#: src/showkey.c:79
#, c-format
msgid ""
"showkey version %s\n"
"\t-k --keycodes \tÐÏËÁÚÁÔØ ÔÏÌØËÏ ÐÒÏÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÎÎÙÅ ËÏÄÙ ËÌÁ×ÉÛ\n"
"\t \t(ÅÓÌÉ ÎÅ ÕËÁÚÁÎÏ Ñ×ÎÏ ÉÎÏÅ, ÐÏÌÁÇÁÅÔÓÑ `keycodes')\n"
-#: src/showkey.c:148
+#: src/showkey.c:152
msgid ""
"\n"
"Press any keys - Ctrl-D will terminate this program\n"
"\n"
" (×ÙÈÏÄÉÔØ ÐÏ Ctrl-D)\n"
-#: src/showkey.c:217
+#: src/showkey.c:221
msgid "press any key (program terminates 10s after last keypress)...\n"
msgstr ""
"ÎÁÖÍÉÔÅ ÎÁ ËÌÁ×ÉÛÕ `any' (ÏÎÁ ÎÁ ÓÉÓÔÅÍÎÏÍ ÂÌÏËÅ)...\n"
"ðÒÏÇÒÁÍÍÁ ÚÁ×ÅÒÛÁÅÔÓÑ ÐÏÓÌÅ 10 ÓÅËÕÎÄ `ÐÏËÏÑ' (ÎÅ ÎÁÖÉÍÁÅÔÓÑ ÎÉ ÏÄÎÁ "
"ËÌÁ×ÉÛÁ)\n"
-#: src/showkey.c:225
+#: src/showkey.c:229
#, c-format
msgid "keycode %3d %s\n"
msgstr "ËÌÁ×ÉÛÁ %3d (ËÏÄ) %s\n"
-#: src/showkey.c:227
+#: src/showkey.c:231
msgid "release"
msgstr "ÏÔÐÕÝÅÎÁ"
-#: src/showkey.c:228
+#: src/showkey.c:232
msgid "press"
msgstr "ÎÁÖÁÔÁ"
-#: src/loadkeys.y:196
-#, c-format
-msgid "'%s' is not a function key symbol"
-msgstr ""
-
-#: src/loadkeys.y:259
-#, c-format
-msgid "too many (%d) entries on one line"
-msgstr ""
-
-#: src/loadkeys.y:272
-msgid "too many keydefinitions on one line"
-msgstr ""
-
-#: src/loadkeys.y:291
-#, c-format
-msgid ""
-"loadkeys version %s\n"
-"\n"
-"Usage: loadkeys [option...] [mapfile...]\n"
-"\n"
-"valid options are:\n"
-"\n"
-"\t-c --clearcompose clear kernel compose table\n"
-"\t-d --default\t load \""
-msgstr ""
-
-#: src/loadkeys.y:362
-#, fuzzy
-msgid "syntax error in map file\n"
-msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ × ÆÁÊÌ"
-
-#: src/loadkeys.y:364
-msgid "key bindings not changed\n"
-msgstr ""
-
-#: src/loadkeys.y:421
-msgid "includes nested too deeply"
-msgstr ""
-
-#. start reading include file
-#: src/loadkeys.y:544
-#, c-format
-msgid "switching to %s\n"
-msgstr ""
-
-#: src/loadkeys.y:550
-#, fuzzy, c-format
-msgid "cannot open include file %s"
-msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÆÁÊÌ %s\n"
-
-#: src/loadkeys.y:597
-#, fuzzy, c-format
-msgid "Cannot find %s\n"
-msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÛÒÉÆÔ %s\n"
-
-#: src/loadkeys.y:610
-#, fuzzy, c-format
-msgid "cannot open file %s\n"
-msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÆÁÊÌ %s\n"
-
-#: src/loadkeys.y:621
-#, fuzzy, c-format
-msgid "Loading %s\n"
-msgstr "ïÛÉÂËÁ ÞÔÅÎÉÑ %s\n"
-
-#: src/loadkeys.y:633
-#, c-format
-msgid "addmap called with bad index %d"
-msgstr ""
-
-#: src/loadkeys.y:637
-#, c-format
-msgid "adding map %d violates explicit keymaps line"
-msgstr ""
-
-#: src/loadkeys.y:651
-#, c-format
-msgid "killkey called with bad index %d"
-msgstr ""
-
-#: src/loadkeys.y:653
-#, c-format
-msgid "killkey called with bad table %d"
-msgstr ""
-
-#: src/loadkeys.y:667
-#, c-format
-msgid "addkey called with bad index %d"
-msgstr ""
-
-#: src/loadkeys.y:669
-#, c-format
-msgid "addkey called with bad table %d"
-msgstr ""
-
-#: src/loadkeys.y:709
-#, c-format
-msgid "%s: addfunc called with bad func %d\n"
-msgstr ""
-
-#: src/loadkeys.y:729
-#, c-format
-msgid "%s: addfunc: func_buf overflow\n"
-msgstr ""
-
-#: src/loadkeys.y:747
-msgid "compose table overflow\n"
-msgstr ""
-
-#: src/loadkeys.y:784
-#, c-format
-msgid "Keymap %d: Permission denied\n"
-msgstr ""
-
-#: src/loadkeys.y:793
-msgid " FAILED"
-msgstr ""
-
-#: src/loadkeys.y:796
-#, fuzzy, c-format
-msgid "failed to bind key %d to value %d\n"
-msgstr "ÎÅ ÕÄÁÌÏÓØ ÕÓÔÁÎÏ×ÉÔØ ÓËÁÎ-ËÏÄ %x ËÏÄÕ %d\n"
-
-#: src/loadkeys.y:807
+#: src/xmalloc.c:14
#, c-format
-msgid "deallocate keymap %d\n"
-msgstr ""
-
-#: src/loadkeys.y:813
-#, fuzzy, c-format
-msgid "%s: could not deallocate keymap %d\n"
-msgstr "%s: ÎÕ, ÎÅ ÓÍÏÇÌÁ Ñ ×ÙÓ×ÏÂÏÄÉÔØ ËÏÎÓÏÌØ %d\n"
-
-#: src/loadkeys.y:828
-#, fuzzy, c-format
-msgid "%s: cannot deallocate or clear keymap\n"
-msgstr "%s: ÎÕ, ÎÅ ÓÍÏÇÌÁ Ñ ×ÙÓ×ÏÂÏÄÉÔØ ËÏÎÓÏÌØ %d\n"
-
-#: src/loadkeys.y:839
-#, fuzzy, c-format
-msgid "%s: failed to restore keyboard mode\n"
-msgstr "%s: ÏÛÉÂËÁ ÕÓÔÁÎÏ×ËÉ ÒÅÖÉÍÁ ËÌÁ×ÉÁÔÕÒÙ\n"
-
-#: src/loadkeys.y:842
-#, c-format
-msgid ""
-"%s: warning: this map uses Unicode symbols\n"
-" (perhaps you want to do `kbd_mode -u'?)\n"
-msgstr ""
-
-#: src/loadkeys.y:886
-#, c-format
-msgid "failed to bind string '%s' to function %s\n"
-msgstr ""
-
-#: src/loadkeys.y:893
-#, c-format
-msgid "failed to clear string %s\n"
-msgstr ""
-
-#: src/loadkeys.y:910
-#, fuzzy
-msgid "too many compose definitions\n"
-msgstr "ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÏÓÔÁ×ÎÙÈ ÏÐÒÅÄÅÌÅÎÉÊ: %d\n"
-
-#: src/loadkeys.y:970
-msgid "impossible error in do_constant"
-msgstr ""
-
-#: src/loadkeys.y:988
-#, c-format
-msgid ""
-"\n"
-"Changed %d %s and %d %s.\n"
-msgstr ""
+msgid "%s: out of memory\n"
+msgstr "%s: ÎÅÈ×ÁÔËÁ ÐÁÍÑÔÉ\n"
-#: src/loadkeys.y:989
-msgid "key"
-msgstr ""
+#~ msgid "usage: %s [N1 N2 ...]\n"
+#~ msgstr "ÐÏÌØÚÏ×ÁÔØÓÑ ÔÁË: %s [N1 N2 ...]\n"
-#: src/loadkeys.y:989
-msgid "keys"
-msgstr ""
+#~ msgid "Out of Memory\n"
+#~ msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ\n"
-#: src/loadkeys.y:990
-msgid "string"
-msgstr ""
+#~ msgid "Out of Memory?\n"
+#~ msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ?\n"
-#: src/loadkeys.y:990
-msgid "strings"
-msgstr ""
+#~ msgid "%s: Cannot read psf header\n"
+#~ msgstr "%s: îÅ ÍÏÇÕ ÐÒÏÞÉÔÁÔØ psf-ÚÁÇÏÌÏ×ÏË\n"
-#: src/loadkeys.y:992
-#, fuzzy, c-format
-msgid "Loaded %d compose %s.\n"
-msgstr "óÈÅÍÁ ÏÔÏÂÒÁÖÅÎÉÑ ÜËÒÁÎÁ ÚÁÇÒÕÖÅÎÁ ÉÚ `%s'\n"
+#~ msgid "%s: Unknown mode number (%d)\n"
+#~ msgstr "%s: îÅÉÚ×ÅÓÔÎÙÊ ÎÏÍÅÒ ÒÅÖÉÍÁ (%d)\n"
-#: src/loadkeys.y:993
-msgid "definition"
-msgstr ""
+#~ msgid "%s: Font already had no character table\n"
+#~ msgstr "%s: ûÒÉÆÔ ÕÖÅ ÂÙÌ ÂÅÚ ÚÎÁËÏ×ÏÊ ÔÁÂÌÉÃÙ\n"
-#: src/loadkeys.y:993
-msgid "definitions"
-msgstr ""
+#~ msgid "Out of memory?\n"
+#~ msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ?\n"
-#: src/loadkeys.y:995
-#, fuzzy
-msgid "(No change in compose definitions.)\n"
-msgstr "ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÏÓÔÁ×ÎÙÈ ÏÐÒÅÄÅÌÅÎÉÊ: %d\n"
+#~ msgid "Out of memory.\n"
+#~ msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ.\n"
-#: src/loadkeys.y:1028
-#, c-format
-msgid "loadkeys: don't know how to compose for %s\n"
-msgstr ""
+#~ msgid ""
+#~ "Setfont is so naive as to believe that font files\n"
+#~ "have a size of at most 32kB. Unfortunately it seems\n"
+#~ "that you encountered an exception. If this really is\n"
+#~ "a font file, (i) recompile setfont, (ii) tell aeb@cwi.nl .\n"
+#~ msgstr ""
+#~ "Setfont ÎÁÉ×ÅÎ ÎÁÓÔÏÌØËÏ, ÞÔÏ ÐÏÌÁÇÁÅÔ,\n"
+#~ "ÞÔÏ ÆÁÊÌÙ ÛÒÉÆÔÏ× ÍÏÇÕÔ ÂÙÔØ ÏÔ ÓÉÌÙ 32KB.\n"
+#~ "õ×Ù, ÐÏÈÏÖÅ, ÷Ù ÎÁÔËÎÕÌÉÓØ ÎÁ ÉÓËÌÀÞÅÎÉÅ.\n"
+#~ "åÓÌÉ ÜÔÏ É × ÓÁÍÏÍ ÄÅÌÅ ÛÒÉÆÔÏ×ÙÊ ÆÁÊÌ, ÔÏ:\n"
+#~ " 1. ÐÅÒÅËÏÍÐÉÌÉÒÕÊÔÅ, ÐÏÖÁÌÕÊÓÔÁ, setfont,\n"
+#~ " 2. ÓÏÏÂÝÉÔÅ ÏÂ ÜÔÏÍ <aeb@cwi.nl>.\n"
> .null
> POTFILES.in
-for x in ../*/*.c; do
+for x in ../*/*.c ../src/version.h; do
echo "$x \\" >> POTFILES
done
echo .null >> POTFILES
cd ..
-for x in */*.c; do
+for x in */*.c src/version.h; do
echo "$x" >> po/POTFILES.in
done
cd po
--- /dev/null
+#! /bin/sh
+# Copyright (c) 1995-1998 S.u.S.E. GmbH Fuerth, Germany.
+#
+# Author: Burchard Steinbild <bs@suse.de>
+#
+# /sbin/init.d/kbd
+#
+# and symbolic its link
+#
+# /sbin/rckbd
+#
+
+. /etc/rc.config
+
+test -n "$KEYTABLE" -a "$KEYTABLE" != YAST_ASK || {
+ echo KEYTABLE is not set in /etc/rc.config. Exit.
+ exit 0
+}
+
+test -x /usr/bin/find || {
+ echo $0: /usr/bin/find does not exist. Exit.
+ exit 1
+}
+
+test -d /usr/lib/kbd/keymaps || {
+ echo Directory /usr/lib/kbd/keymaps does not exit. Exit.
+ exit 1
+}
+
+#
+# first search the wanted keytable.
+#
+MACHINE=`/bin/uname -m 2> /dev/null`
+case $MACHINE in
+ i?86)
+ KEY_PATH=/usr/lib/kbd/keymaps/i386
+ ;;
+ *)
+ KEY_PATH=/usr/lib/kbd/keymaps/$MACHINE
+ ;;
+esac
+
+FIND_PARAMS="-name $KEYTABLE -o -name $KEYTABLE.gz -o -name $KEYTABLE.map -o -name $KEYTABLE.map.gz"
+
+if test -e /$KEYTABLE ; then
+ KEYMAP=$KEYTABLE
+else
+ KEYMAP=`/usr/bin/find $KEY_PATH $FIND_PARAMS 2> /dev/null`
+fi
+
+test -z "$KEYMAP" && \
+ KEYMAP=`/usr/bin/find /usr/lib/kbd/keymaps $FIND_PARAMS`
+
+
+return=$rc_done
+case "$1" in
+ start|restart|reload)
+ if test -z "$KEYMAP" ; then
+ echo Can not find a keymap for $KEYTABLE. Exit.
+ exit 1
+ else
+ if test ! -f "$KEYMAP" ; then
+ echo Found more than one keymap for $KEYTABLE:
+ for i in $KEYMAP ; do
+ echo " $i"
+ KEYMAP=$i
+ done
+ echo Using $KEYMAP.
+ echo If you want another one, please add complete path to
+ echo KEYTABLE in /etc/rc.config.
+ fi
+ fi
+ retmsg="`loadkeys $KEYMAP 2>&1`"
+ if test $? -eq 0 ; then
+ echo $KEYMAP > /var/run/keymap
+ else
+ return=$rc_failed
+ fi
+ echo -e "Loading keymap ${retmsg#Loading*/usr/lib/kbd/keymaps/*/}${return}"
+ ;;
+ stop)
+ ;;
+ check|status)
+ if test -f /var/run/keymap ; then
+ echo Keymap `cat /var/run/keymap` is loaded.
+ else
+ exit 1
+ fi
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|check}"
+ exit 1
+ ;;
+esac
+
+test "$return" = "$rc_done" || exit 1
+exit 0
--- /dev/null
+From: Bruno Haible <haible@ilog.fr>
+Date: Mon, 4 Oct 1999 16:03:41 +0200 (MET DST)
+
+[patch on kbd-0.99]
+
+The precise changes are as follows:
+
+* ksyms.h:
+ - New structure `sym', includes a Unicode value.
+ - Use "const char *" instead of "char *", this helps me ensure that I don't
+ accidentally clobber a string literal.
+ - Declare a new function `unicodetoksym', which is used to make pretty
+ output for dumpkeys when in Unicode mode (i.e. convert back "U+0401" to
+ "cyrillic_capital_letter_io").
+* ksyms.c:
+ - Add Unicode codes to all syms.
+* cyrillic.syms.h, ethiopic.syms.h: Likewise.
+* ksyms.c:
+ - I'm really not confident that it's safe to erase the upper half of
+ latin1_syms in set_charset(). It might cause obscure bugs. Therefore I
+ split latin1_syms into `iso646_syms' whose upper half can be freely
+ modified, and `latin1_syms' proper which contains only the Latin1 syms.
+ I.e. treat Latin1 like Latin2, Latin3 etc.
+ { Hmm. It was correct. Now all character sets except latin1 are broken. }
+ - Added a few comments in front of the spec_syms, pad_syms, etc. tables.
+ Without these comments, it was really hard to understand the "big picture"
+ of the keyboard driver. Especially since "sticky_syms" corresponds to
+ KT_SLOCK, and KT_LATIN actually means KT_8BIT - how would you guess?
+ - In koi8_r_syms, added the range 128..159 which was previously unmapped.
+ - Added function unicodetoksym, for dumpkeys.
+ - ksymtocode: Add support for the `prefer_unicode' flag set by the -u
+ option. Treat Latin1 like Latin2, Latin3 etc.
+ - Added function unicodetocode which converts a Unicode value to a
+ 16-bit code for the keyboard driver. Set unicode_used = 1 only if
+ Unicode is really needed.
+ - Added function add_capslock which outputs a warning if it has to
+ ignore the "+" flag (because of the current limitation in the kernel:
+ only KT_LATIN codes are capable of CapsLock treatment).
+* loadkeys.y:
+ - The unicode_used variable has been transferred to ksyms.c, because it's
+ now used there. Otherwise `dumpkeys' wouldn't link.
+ - Use the capslock function. `unicode_used' is now set if it really used,
+ it depends on both the keymap entry _and_ the value of the -u option.
+ - Implement option --unicode.
+* analyze.l:
+ - Use unicodetocode here, so the upper level (loadkeys.y) can operate on
+ KTYP/KVAL composed code.
+* dumpkeys.c:
+ - printksym bug fix: KT_LETTER was assumed to be the largest KT_* value. It
+ is not.
+ - printksym uses unicodetoksym in order to print the ksym string. This
+ generates more maintainable keymaps. ("cedilla" tells the user a lot
+ more than "U+00b8".)
+
+include ../make_include
+
# Something like /usr/lib/kbd or /usr/share/kbd
ifndef DATADIR
DATADIR = @datadir@
PROGS = dumpkeys loadkeys showkey setfont showfont \
setleds setmetamode kbd_mode chvt deallocvt \
- psfaddtable psfgettable psfstriptable \
- getkeycodes setkeycodes
+ psfxtable kbdrate
# probably also getkeycodes and setkeycodes are arch-specific;
# they will work on an alpha, though, and perhaps be dummy on a sun
+ifneq ($(ARCH), m68k)
+ifneq ($(ARCH), sparc)
+PROGS += getkeycodes setkeycodes
+endif
+endif
-I386PROGS = resizecons
+ifeq ($(ARCH), i386)
+PROGS += resizecons
+endif
OLDPROGS= mapscrn loadunimap
MISC = screendump setvesablank spawn_console spawn_login \
- getunimap clrunimap fgconsole
+ getunimap clrunimap fgconsole outpsfheader
SHCMDS = unicode_start unicode_stop
-WARN = -Wall
+WARN = -Wall -Wmissing-prototypes -Wstrict-prototypes
DEFS = -DDATADIR=\"$(DATADIR)\"
CFLAGS = -O2
LDFLAGS = -s
old: $(OLDPROGS)
-i386: $(I386PROGS)
-
install: all
install -s -m 0755 -o root $(PROGS) $(OLDPROGS) $(BINDIR)
# install -s -m 0755 -o root $(MISC) $(BINDIR)
# install -c -m 0755 -o root $(SHCMDS) $(BINDIR)
+ for i in psfaddtable psfgettable psfstriptable; do \
+ rm -f $(BINDIR)/$$i; ln -s $(BINDIR)/psfxtable $(BINDIR)/$$i; \
+ done
+ @echo "You may also want to add psf.magic to /usr/lib/magic"
-install386: i386
- install $(I386PROGS) $(BINDIR)
-
# loadkeys.o: separate rule since the flex output does not permit -Wall
loadkeys.o: loadkeys.c analyze.c
$(CC) -c $(CFLAGS) $(DEFS) $<
main_loadunimap.o: loadunimap.c paths.h
$(CC) $(CFLAGS) $(WARN) $(DEFS) -DMAIN -c $< -o $@
-$(OLDPROGS): %: main_%.o findfile.o
+$(OLDPROGS): %: main_%.o findfile.o psffontop.o
$(CC) $(LDFLAGS) $^ -o $@
-clean:
+clean reallyclean spotless distclean:
rm -f core *.o analyze.c loadkeys.c
-
-reallyclean spotless distclean: clean
- rm -f $(PROGS) $(OLDPROGS) $(MISC) $(I386PROGS) *~
+ rm -f $(PROGS) $(OLDPROGS) $(MISC) *~
$(PROGS): %: %.o
-dumpkeys loadkeys: ksyms.o
+#
+# dependencies
+#
+
+ksyms.o: koi8.syms.h ethiopic.syms.h
+
+findfile.o loadkeys.o loadunimap.o mapscrn.o resizecons.o setfont.o: findfile.h
+
+catwithfont.o chvt.o clrunimap.o deallocvt.o dumpkeys.o fgconsole.o: getfd.h
+getfd.o getkeycodes.o getunimap.o kbd_mode.o loadkeys.o loadunimap.o: getfd.h
+mapscrn.o resizecons.o setfont.o setkeycodes.o setvesablank.o: getfd.h
+showkey.o: getfd.h
+
+kdfontop.o setfont.o: kdfontop.h
-ksyms.o: cyrillic.syms.h ethiopic.syms.h
+dumpkeys.o ksyms.o loadkeys.o: ksyms.h
-loadkeys.o mapscrn.o setfont.o resizecons.o loadunimap.o: paths.h
+dumpkeys.o loadkeys.o: modifiers.h
-psfaddtable.o psfgettable.o psfstriptable.o setfont.o: psf.h
+catwithfont.o chvt.o clrunimap.o deallocvt.o dumpkeys.o fgconsole.o: nls.h
+findfile.o getfd.o getkeycodes.o getunimap.o kbd_mode.o kbdrate.o: nls.h
+kdfontop.o ksyms.o loadkeys.o loadunimap.o mapscrn.o psffontop.o: nls.h
+psfxtable.o resizecons.o screendump.o setfont.o setkeycodes.o setleds.o: nls.h
+setmetamode.o setvesablank.o showfont.o showkey.o xmalloc.o: nls.h
-loadkeys mapscrn setfont resizecons loadunimap: findfile.o
+loadkeys.o loadunimap.o mapscrn.o resizecons.o setfont.o: paths.h
-chvt clrunimap deallocvt dumpkeys getkeycodes getunimap kbd_mode: getfd.o
-loadkeys loadunimap mapscrn resizecons setkeycodes setfont: getfd.o
+loadunimap.o psffontop.o psfxtable.o setfont.o: psf.h
+
+psffontop.o psfxtable.o setfont.o: psffontop.h
+
+dumpkeys.o kbdrate.o loadkeys.o setfont.o showkey.o: version.h
+
+findfile.o loadunimap.o psffontop.o psfxtable.o setfont.o xmalloc.o: xmalloc.h
+
+#
+# constituent object files
+#
+
+dumpkeys loadkeys: ksyms.o xmalloc.o
+
+getunimap screendump: xmalloc.o
+
+psfxtable: psffontop.o xmalloc.o
+
+loadkeys mapscrn setfont resizecons loadunimap: findfile.o xmalloc.o
+
+chvt clrunimap deallocvt dumpkeys fgconsole getkeycodes getunimap: getfd.o
+kbd_mode loadkeys loadunimap mapscrn resizecons setkeycodes setfont: getfd.o
setvesablank showkey: getfd.o
-setfont: mapscrn.o loadunimap.o kdfontop.o
+setfont: mapscrn.o loadunimap.o kdfontop.o psffontop.o
+
+catwithfont: kdfontop.o
+++ /dev/null
-These programs contributed by H. Peter Anwin (hpa@nwu.edu), 25 Oct 1994,
-modified by aeb.
-
-Add psf.magic to /etc/magic if you use that.
%{
#include <stdlib.h>
#include <linux/kd.h>
-
-extern int ksymtocode(char *s);
+#include "ksyms.h"
+#include "xmalloc.h"
extern int line_nr;
int yylval;
#undef yywrap
extern int yywrap(void);
-extern int yyerror(char *s);
+extern int yyerror(const char *s);
extern void stringovfl(void);
-extern void lkfatal(char *s);
-extern void lkfatal1(char *s, char *s2);
+extern void lkfatal(const char *s);
+extern void lkfatal1(const char *s, const char *s2);
extern void open_include(char *s);
-extern void *xmalloc(size_t);
%}
%s RVALUE
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
+#include "getfd.h"
#include "nls.h"
-
-extern int getfd(void);
+#include "version.h"
int
main(int argc, char *argv[]) {
int fd, num;
+ set_progname(argv[0]);
+
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
if (argc != 2) {
fprintf(stderr, _("usage: chvt N\n"));
exit(1);
#include <fcntl.h>
#include <linux/kd.h>
#include <sys/ioctl.h>
+#include "getfd.h"
#include "nls.h"
-extern int getfd(void);
-
int
main(int argc, char *argv[]) {
struct unimapinit advice;
perror("PIO_UNIMAPCLR");
exit(1);
}
+
+ return 0;
}
+++ /dev/null
-char *koi8_r_syms[] = { /* 160-255 */
- "", /* 0240 */
- "",
- "",
- "cyrillic_small_letter_io",
- "",
- "",
- "",
- "",
- "", /* 0250 */
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "", /* 0260 */
- "",
- "",
- "cyrillic_capital_letter_io",
- "",
- "",
- "",
- "",
- "", /* 0270 */
- "",
- "",
- "",
- "",
- "",
- "",
- "copyright",
- "cyrillic_small_letter_yu", /* 0300 */
- "cyrillic_small_letter_a",
- "cyrillic_small_letter_be",
- "cyrillic_small_letter_tse",
- "cyrillic_small_letter_de",
- "cyrillic_small_letter_ie",
- "cyrillic_small_letter_ef",
- "cyrillic_small_letter_ghe",
- "cyrillic_small_letter_ha", /* 0310 */
- "cyrillic_small_letter_i",
- "cyrillic_small_letter_short_i",
- "cyrillic_small_letter_ka",
- "cyrillic_small_letter_el",
- "cyrillic_small_letter_em",
- "cyrillic_small_letter_en",
- "cyrillic_small_letter_o",
- "cyrillic_small_letter_pe", /* 0320 */
- "cyrillic_small_letter_ya",
- "cyrillic_small_letter_er",
- "cyrillic_small_letter_es",
- "cyrillic_small_letter_te",
- "cyrillic_small_letter_u",
- "cyrillic_small_letter_zhe",
- "cyrillic_small_letter_ve",
- "cyrillic_small_soft_sign", /* 0330 */
- "cyrillic_small_letter_yeru",
- "cyrillic_small_letter_ze",
- "cyrillic_small_letter_sha",
- "cyrillic_small_letter_e",
- "cyrillic_small_letter_shcha",
- "cyrillic_small_letter_che",
- "cyrillic_small_hard_sign",
- "cyrillic_capital_letter_yu", /* 0340 */
- "cyrillic_capital_letter_a",
- "cyrillic_capital_letter_be",
- "cyrillic_capital_letter_tse",
- "cyrillic_capital_letter_de",
- "cyrillic_capital_letter_ie",
- "cyrillic_capital_letter_ef",
- "cyrillic_capital_letter_ghe",
- "cyrillic_capital_letter_ha", /* 0350 */
- "cyrillic_capital_letter_i",
- "cyrillic_capital_letter_short_i",
- "cyrillic_capital_letter_ka",
- "cyrillic_capital_letter_el",
- "cyrillic_capital_letter_em",
- "cyrillic_capital_letter_en",
- "cyrillic_capital_letter_o",
- "cyrillic_capital_letter_pe", /* 0360 */
- "cyrillic_capital_letter_ya",
- "cyrillic_capital_letter_er",
- "cyrillic_capital_letter_es",
- "cyrillic_capital_letter_te",
- "cyrillic_capital_letter_u",
- "cyrillic_capital_letter_zhe",
- "cyrillic_capital_letter_ve",
- "cyrillic_capital_soft_sign", /* 0370 */
- "cyrillic_capital_letter_yeru",
- "cyrillic_capital_letter_ze",
- "cyrillic_capital_letter_sha",
- "cyrillic_capital_letter_e",
- "cyrillic_capital_letter_shcha",
- "cyrillic_capital_letter_che",
- "cyrillic_capital_hard_sign"
-};
#include <sys/ioctl.h>
#include <linux/vt.h>
#include <stdio.h>
+#include "getfd.h"
#include "nls.h"
-
-extern int getfd(void);
-char *progname;
-
-void
-usage(){
- fprintf(stderr, _("usage: %s [N1 N2 ...]\n"), progname);
- exit(1);
-}
+#include "version.h"
int
main(int argc, char *argv[]) {
int fd, num, i;
if (argc < 1) /* unlikely */
- exit(1);
- progname = argv[0];
+ exit(1);
+ set_progname(argv[0]);
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
fd = getfd();
if (argc == 1) {
perror("VT_DISALLOCATE");
fprintf(stderr, _("%s: could not deallocate console %d\n"),
progname, num);
- exit(1);
}
}
exit(0);
#include <string.h>
#include <errno.h>
#include "ksyms.h"
+#include "getfd.h"
#include "modifiers.h"
#include "nls.h"
+#include "version.h"
#ifndef KT_LETTER
#define KT_LETTER KT_LATIN
#define MAX_NR_KEYMAPS NR_KEYMAPS
#endif
-#define VERSION "0.98"
-char *progname;
-extern int getfd();
static int fd;
static int verbose;
int keymap_index[MAX_NR_KEYMAPS]; /* inverse of good_keymap */
int good_keymap[MAX_NR_KEYMAPS], keymapnr, allocct;
-void get_keymaps(void) {
+static void
+get_keymaps(void) {
int i, j;
struct kbentry ke;
}
}
-void print_keymaps(void) {
+static void
+print_keymaps(void) {
int i,m0,m;
printf("keymaps ");
printf("\n");
}
-int get_bind(u_char index, u_char table) {
+static int
+get_bind(u_char index, u_char table) {
struct kbentry ke;
ke.kb_index = index;
return ke.kb_value;
}
-void print_keysym(int code, char numeric) {
+static void
+print_keysym(int code, char numeric) {
int t;
int v;
- char *p;
+ const char *p;
printf(" ");
t = KTYP(code);
v = KVAL(code);
- if (t > KT_LETTER) {
- printf("U+%04x ", code ^ 0xf000);
+ if (t >= syms_size) {
+ code = code ^ 0xf000;
+ if (!numeric && (p = unicodetoksym(code)) != NULL)
+ printf("%-16s", p);
+ else
+ printf("U+%04x ", code);
return;
}
if (t == KT_LETTER) {
printf("0x%04x ", code);
}
-char valid_type(int t) {
+static char
+valid_type(int t) {
struct kbentry ke;
char status;
return status;
}
-u_char maximum_val(int t) {
+static u_char
+maximum_val(int t) {
struct kbentry ke, ke0;
int i;
/* isgraph() does not know about iso-8859; printing the character
unescaped makes the output easier to check. Maybe this should
be an option. Use locale? */
-void
+static void
outchar (unsigned char c) {
printf("'");
printf((c == '\'' || c == '\\') ? "\\%c"
printf("'");
}
-struct kbdiacrs kd;
+static struct kbdiacrs kd;
-void get_diacs(void) {
+static void
+get_diacs(void) {
static int got_diacs = 0;
if(!got_diacs && ioctl(fd, KDGKBDIACR, (unsigned long)&kd)) {
got_diacs = 1;
}
-int nr_of_diacs(void) {
+static int
+nr_of_diacs(void) {
get_diacs();
return kd.kb_cnt;
}
-void dump_diacs(void) {
+static void
+dump_diacs(void) {
int i;
get_diacs();
}
#endif
-void show_short_info(void) {
+static void
+show_short_info(void) {
int i;
printf(_("keycode range supported by kernel: 1 - %d\n"),
nr_of_diacs());
}
-struct {
+static struct {
char *name;
int bit;
} modifiers[] = {
{ "ctrlr", KG_CTRLR }
};
-void dump_symbols(void) {
+static void
+dump_symbols(void) {
int t;
int v;
- char *p;
+ const char *p;
- printf(_("Symbols recognized by %s:\n(numeric value, symbol)\n\n"), progname);
+ printf(_("Symbols recognized by %s:\n(numeric value, symbol)\n\n"),
+ progname);
for (t = 0; t < syms_size; t++) {
if (syms[t].size) {
for (v = 0; v < syms[t].size; v++)
printf("%s\t\t%3d\n", modifiers[t].name, 1 << modifiers[t].bit);
}
-void print_mod(int x) {
+static void
+print_mod(int x) {
int t;
if (!x)
printf("%s\t", modifiers[t].name);
}
-void print_bind(int bufj, int i, int j, char numeric) {
+static void
+print_bind(int bufj, int i, int j, char numeric) {
if(j)
printf("\t");
print_mod(j);
#define SEPARATE_LINES 2 /* one line for each (modifier,keycode) pair */
#define UNTIL_HOLE 3 /* one line for each keycode, until 1st hole */
-void dump_keys(char table_shape, char numeric) {
+static void
+dump_keys(char table_shape, char numeric) {
int i, j, k;
int buf[MAX_NR_KEYMAPS];
int isletter, islatin, isasexpected;
}
}
-void dump_funcs(void) {
+static void
+dump_funcs(void) {
int i;
struct kbsentry fbuf;
char *p;
}
}
-/* bah - xgettext forces us to uglify this */
-void usage(void) {
+static void
+usage(void) {
fprintf(stderr, _("dumpkeys version %s"), VERSION);
- fprintf(stderr, _(
-"\n"
-"usage: dumpkeys [options...]\n"
-"\n"
-"valid options are:\n"
-"\n"
-" -h --help display this help text\n"
-" -i --short-info display information about keyboard driver\n"
-" -l --long-info display above and symbols known to loadkeys\n"
-" -n --numeric display keytable in hexadecimal notation\n"
-" -f --full-table don't use short-hand notations, one row per keycode\n"
-" -1 --separate-lines one line per (modifier,keycode) pair\n"
-" --funcs-only display only the function key strings\n"
-" --keys-only display only key bindings\n"
-" --compose-only display only compose key combinations\n"
-" -c --charset=iso-8859-{1,2,3,4,5,7,8,9}\n"
-" koi8-{r,u} \n"
-" interpret character action codes to be from the\n"
-" specified character set\n"
-));
+ fprintf(stderr, _("\
+\n\
+usage: dumpkeys [options...]\n\
+\n\
+valid options are:\n\
+\n\
+ -h --help display this help text\n\
+ -i --short-info display information about keyboard driver\n\
+ -l --long-info display above and symbols known to loadkeys\n\
+ -n --numeric display keytable in hexadecimal notation\n\
+ -f --full-table don't use short-hand notations, one row per keycode\n\
+ -1 --separate-lines one line per (modifier,keycode) pair\n\
+ --funcs-only display only the function key strings\n\
+ --keys-only display only key bindings\n\
+ --compose-only display only compose key combinations\n\
+ -c --charset="));
+ list_charsets(stderr);
+ fprintf(stderr, _("\
+ interpret character action codes to be from the\n\
+ specified character set\n\
+"));
exit(1);
}
int
main (int argc, char *argv[]) {
- const char *short_opts = "hilvsnf1S:c:";
+ const char *short_opts = "hilvsnf1S:c:V";
const struct option long_opts[] = {
{ "help", no_argument, NULL, 'h' },
{ "short-info", no_argument, NULL, 'i' },
{ "funcs-only", no_argument, NULL, 't' },
{ "keys-only", no_argument, NULL, 'k' },
{ "compose-only",no_argument, NULL, 'd' },
- { "verbose", no_argument, NULL, 'v' },
{ "charset", required_argument, NULL, 'c' },
+ { "verbose", no_argument, NULL, 'v' },
+ { "version", no_argument, NULL, 'V' },
{ NULL, 0, NULL, 0 }
};
int c;
char keys_only = 0;
char diac_only = 0;
- progname = argv[0];
+ set_progname(argv[0]);
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
usage();
printf("charset \"%s\"\n", optarg);
break;
+ case 'V':
+ print_version_and_exit();
case 'h':
case '?':
usage();
*
* { "iso-10646-18", iso_10646_18_syms, 159 },
*/
-char* iso_10646_18_syms[] = { /* 0x1200 - 0x137F */
- "ethiopic_syllable_ha", "ethiopic_syllable_hu", "ethiopic_syllable_hi", "ethiopic_syllable_haa", "ethiopic_syllable_hee", "ethiopic_syllable_he", "ethiopic_syllable_ho", "",
- "ethiopic_syllable_la", "ethiopic_syllable_lu", "ethiopic_syllable_li", "ethiopic_syllable_laa", "ethiopic_syllable_lee", "ethiopic_syllable_le", "ethiopic_syllable_lo", "ethiopic_syllable_lwa",
- "ethiopic_syllable_hha", "ethiopic_syllable_hhu", "ethiopic_syllable_hhi", "ethiopic_syllable_hhaa", "ethiopic_syllable_hhee", "ethiopic_syllable_hhe", "ethiopic_syllable_hho", "ethiopic_syllable_hhwa",
- "ethiopic_syllable_ma", "ethiopic_syllable_mu", "ethiopic_syllable_mi", "ethiopic_syllable_maa", "ethiopic_syllable_mee", "ethiopic_syllable_me", "ethiopic_syllable_mo", "ethiopic_syllable_mwaa",
- "ethiopic_syllable_sza", "ethiopic_syllable_szu", "ethiopic_syllable_szi", "ethiopic_syllable_szaa", "ethiopic_syllable_szee", "ethiopic_syllable_sze", "ethiopic_syllable_szo", "ethiopic_syllable_szwa",
- "ethiopic_syllable_ra", "ethiopic_syllable_ru", "ethiopic_syllable_ri", "ethiopic_syllable_raa", "ethiopic_syllable_ree", "ethiopic_syllable_re", "ethiopic_syllable_ro", "ethiopic_syllable_rwa",
- "ethiopic_syllable_sa", "ethiopic_syllable_su", "ethiopic_syllable_si", "ethiopic_syllable_saa", "ethiopic_syllable_see", "ethiopic_syllable_se", "ethiopic_syllable_so", "ethiopic_syllable_swa",
- "ethiopic_syllable_sha", "ethiopic_syllable_shu", "ethiopic_syllable_shi", "ethiopic_syllable_shaa", "ethiopic_syllable_shee", "ethiopic_syllable_she", "ethiopic_syllable_sho", "ethiopic_syllable_shwa",
- "ethiopic_syllable_qa", "ethiopic_syllable_qu", "ethiopic_syllable_qi", "ethiopic_syllable_qaa", "ethiopic_syllable_qee", "ethiopic_syllable_qe", "ethiopic_syllable_qo", "",
- "ethiopic_syllable_qwa", "", "ethiopic_syllable_qwi", "ethiopic_syllable_qwaa", "ethiopic_syllable_qwee", "ethiopic_syllable_qwe", "", "",
- "ethiopic_syllable_qha", "ethiopic_syllable_qhu", "ethiopic_syllable_qhi", "ethiopic_syllable_qhaa", "ethiopic_syllable_qhee", "ethiopic_syllable_qhe", "ethiopic_syllable_qho", "",
- "ethiopic_syllable_qhwa", "", "ethiopic_syllable_qhwi", "ethiopic_syllable_qhwaa", "ethiopic_syllable_qhwee", "ethiopic_syllable_qhwe", "", "",
- "ethiopic_syllable_ba", "ethiopic_syllable_bu", "ethiopic_syllable_bi", "ethiopic_syllable_baa", "ethiopic_syllable_bee", "ethiopic_syllable_be", "ethiopic_syllable_bo", "ethiopic_syllable_bwaa",
- "ethiopic_syllable_va", "ethiopic_syllable_vu", "ethiopic_syllable_vi", "ethiopic_syllable_vaa", "ethiopic_syllable_vee", "ethiopic_syllable_ve", "ethiopic_syllable_vo", "ethiopic_syllable_vwa",
- "ethiopic_syllable_ta", "ethiopic_syllable_tu", "ethiopic_syllable_ti", "ethiopic_syllable_taa", "ethiopic_syllable_tee", "ethiopic_syllable_te", "ethiopic_syllable_to", "ethiopic_syllable_twa",
- "ethiopic_syllable_ca", "ethiopic_syllable_cu", "ethiopic_syllable_ci", "ethiopic_syllable_caa", "ethiopic_syllable_cee", "ethiopic_syllable_ce", "ethiopic_syllable_co", "ethiopic_syllable_cwa",
- "ethiopic_syllable_xa", "ethiopic_syllable_xu", "ethiopic_syllable_xi", "ethiopic_syllable_xaa", "ethiopic_syllable_xee", "ethiopic_syllable_xe", "ethiopic_syllable_xo", "",
- "ethiopic_syllable_xwa", "", "ethiopic_syllable_xwi", "ethiopic_syllable_xwaa", "ethiopic_syllable_xwee", "ethiopic_syllable_xwe", "", "",
- "ethiopic_syllable_na", "ethiopic_syllable_nu", "ethiopic_syllable_ni", "ethiopic_syllable_naa", "ethiopic_syllable_nee", "ethiopic_syllable_ne", "ethiopic_syllable_no", "ethiopic_syllable_nwa",
- "ethiopic_syllable_nya", "ethiopic_syllable_nyu", "ethiopic_syllable_nyi", "ethiopic_syllable_nyaa", "ethiopic_syllable_nyee", "ethiopic_syllable_nye", "ethiopic_syllable_nyo", "ethiopic_syllable_nywa",
- "ethiopic_syllable_glottal_a", "ethiopic_syllable_glottal_u", "ethiopic_syllable_glottal_i", "ethiopic_syllable_glottal_aa", "ethiopic_syllable_glottal_ee", "ethiopic_syllable_glottal_e", "ethiopic_syllable_glottal_o", "ethiopic_syllable_glottal_wa",
- "ethiopic_syllable_ka", "ethiopic_syllable_ku", "ethiopic_syllable_ki", "ethiopic_syllable_kaa", "ethiopic_syllable_kee", "ethiopic_syllable_ke", "ethiopic_syllable_ko", "",
- "ethiopic_syllable_kwa", "", "ethiopic_syllable_kwi", "ethiopic_syllable_kwaa", "ethiopic_syllable_kwee", "ethiopic_syllable_kwe", "", "",
- "ethiopic_syllable_kxa", "ethiopic_syllable_kxu", "ethiopic_syllable_kxi", "ethiopic_syllable_kxaa", "ethiopic_syllable_kxee", "ethiopic_syllable_kxe", "ethiopic_syllable_kxo", "",
- "ethiopic_syllable_kxwa", "", "ethiopic_syllable_kxwi", "ethiopic_syllable_kxwaa", "ethiopic_syllable_kxwee", "ethiopic_syllable_kxwe", "", "",
- "ethiopic_syllable_wa", "ethiopic_syllable_wu", "ethiopic_syllable_wi", "ethiopic_syllable_waa", "ethiopic_syllable_wee", "ethiopic_syllable_we", "ethiopic_syllable_wo", "",
- "ethiopic_syllable_pharyngeal_a", "ethiopic_syllable_pharyngeal_u", "ethiopic_syllable_pharyngeal_i", "ethiopic_syllable_pharyngeal_aa", "ethiopic_syllable_pharyngeal_ee", "ethiopic_syllable_pharyngeal_e", "ethiopic_syllable_pharyngeal_o", "",
- "ethiopic_syllable_za", "ethiopic_syllable_zu", "ethiopic_syllable_zi", "ethiopic_syllable_zaa", "ethiopic_syllable_zee", "ethiopic_syllable_ze", "ethiopic_syllable_zo", "ethiopic_syllable_zwa",
- "ethiopic_syllable_zha", "ethiopic_syllable_zhu", "ethiopic_syllable_zhi", "ethiopic_syllable_zhaa", "ethiopic_syllable_zhee", "ethiopic_syllable_zhe", "ethiopic_syllable_zho", "ethiopic_syllable_zhwa",
- "ethiopic_syllable_ya", "ethiopic_syllable_yu", "ethiopic_syllable_yi", "ethiopic_syllable_yaa", "ethiopic_syllable_yee", "ethiopic_syllable_ye", "ethiopic_syllable_yo", "",
- "ethiopic_syllable_da", "ethiopic_syllable_du", "ethiopic_syllable_di", "ethiopic_syllable_daa", "ethiopic_syllable_dee", "ethiopic_syllable_de", "ethiopic_syllable_do", "ethiopic_syllable_dwa",
- "ethiopic_syllable_dda", "ethiopic_syllable_ddu", "ethiopic_syllable_ddi", "ethiopic_syllable_ddaa", "ethiopic_syllable_ddee", "ethiopic_syllable_dde", "ethiopic_syllable_ddo", "ethiopic_syllable_ddwa",
- "ethiopic_syllable_ja", "ethiopic_syllable_ju", "ethiopic_syllable_ji", "ethiopic_syllable_jaa", "ethiopic_syllable_jee", "ethiopic_syllable_je", "ethiopic_syllable_jo", "ethiopic_syllable_jwa",
- "ethiopic_syllable_ga", "ethiopic_syllable_gu", "ethiopic_syllable_gi", "ethiopic_syllable_gaa", "ethiopic_syllable_gee", "ethiopic_syllable_ge", "ethiopic_syllable_go", "",
- "ethiopic_syllable_gwa", "", "ethiopic_syllable_gwi", "ethiopic_syllable_gwaa", "ethiopic_syllable_gwee", "ethiopic_syllable_gwe", "", "",
- "ethiopic_syllable_gga", "ethiopic_syllable_ggu", "ethiopic_syllable_ggi", "ethiopic_syllable_ggaa", "ethiopic_syllable_ggee", "ethiopic_syllable_gge", "ethiopic_syllable_ggo", "",
- "ethiopic_syllable_tha", "ethiopic_syllable_thu", "ethiopic_syllable_thi", "ethiopic_syllable_thaa", "ethiopic_syllable_thee", "ethiopic_syllable_the", "ethiopic_syllable_tho", "ethiopic_syllable_thwa",
- "ethiopic_syllable_cha", "ethiopic_syllable_chu", "ethiopic_syllable_chi", "ethiopic_syllable_chaa", "ethiopic_syllable_chee", "ethiopic_syllable_che", "ethiopic_syllable_cho", "ethiopic_syllable_chwa",
- "ethiopic_syllable_pha", "ethiopic_syllable_phu", "ethiopic_syllable_phi", "ethiopic_syllable_phaa", "ethiopic_syllable_phee", "ethiopic_syllable_phe", "ethiopic_syllable_pho", "ethiopic_syllable_phwa",
- "ethiopic_syllable_tsa", "ethiopic_syllable_tsu", "ethiopic_syllable_tsi", "ethiopic_syllable_tsaa", "ethiopic_syllable_tsee", "ethiopic_syllable_tse", "ethiopic_syllable_tso", "ethiopic_syllable_tswa",
- "ethiopic_syllable_tza", "ethiopic_syllable_tzu", "ethiopic_syllable_tzi", "ethiopic_syllable_tzaa", "ethiopic_syllable_tzee", "ethiopic_syllable_tze", "ethiopic_syllable_tzo", "",
- "ethiopic_syllable_fa", "ethiopic_syllable_fu", "ethiopic_syllable_fi", "ethiopic_syllable_faa", "ethiopic_syllable_fee", "ethiopic_syllable_fe", "ethiopic_syllable_fo", "ethiopic_syllable_fwaa",
- "ethiopic_syllable_pa", "ethiopic_syllable_pu", "ethiopic_syllable_pi", "ethiopic_syllable_paa", "ethiopic_syllable_pee", "ethiopic_syllable_pe", "ethiopic_syllable_po", "ethiopic_syllable_pwaa",
- "ethiopic_syllable_mya", "ethiopic_syllable_rya", "ethiopic_syllable_fya", "", "", "", "", "",
- "", "ethiopic_wordspace", "ethiopic_full_stop", "ethiopic_comma", "ethiopic_semicolon", "ethiopic_colon", "ethiopic_preface_colon", "ethiopic_question_mark",
- "ethiopic_paragraph_separator", "ethiopic_digit_one", "ethiopic_digit_two", "ethiopic_digit_three", "ethiopic_digit_four", "ethiopic_digit_five", "ethiopic_digit_six", "ethiopic_digit_seven",
- "ethiopic_digit_eight", "ethiopic_digit_nine", "ethiopic_number_ten", "ethiopic_number_twenty", "ethiopic_number_thirty", "ethiopic_number_forty", "ethiopic_number_fifty", "ethiopic_number_sixty",
- "ethiopic_number_seventy", "ethiopic_number_eighty", "ethiopic_number_ninety", "ethiopic_number_hundred", "ethiopic_number_ten_thousand", "", "", ""
+static sym iso_10646_18_syms[] = { /* 0x1200 - 0x137F */
+ { 0x1200, "ethiopic_syllable_ha" },
+ { 0x1201, "ethiopic_syllable_hu" },
+ { 0x1202, "ethiopic_syllable_hi" },
+ { 0x1203, "ethiopic_syllable_haa" },
+ { 0x1204, "ethiopic_syllable_hee" },
+ { 0x1205, "ethiopic_syllable_he" },
+ { 0x1206, "ethiopic_syllable_ho" },
+ { 0x1207, "" },
+ { 0x1208, "ethiopic_syllable_la" },
+ { 0x1209, "ethiopic_syllable_lu" },
+ { 0x120A, "ethiopic_syllable_li" },
+ { 0x120B, "ethiopic_syllable_laa" },
+ { 0x120C, "ethiopic_syllable_lee" },
+ { 0x120D, "ethiopic_syllable_le" },
+ { 0x120E, "ethiopic_syllable_lo" },
+ { 0x120F, "ethiopic_syllable_lwa" },
+ { 0x1210, "ethiopic_syllable_hha" },
+ { 0x1211, "ethiopic_syllable_hhu" },
+ { 0x1212, "ethiopic_syllable_hhi" },
+ { 0x1213, "ethiopic_syllable_hhaa" },
+ { 0x1214, "ethiopic_syllable_hhee" },
+ { 0x1215, "ethiopic_syllable_hhe" },
+ { 0x1216, "ethiopic_syllable_hho" },
+ { 0x1217, "ethiopic_syllable_hhwa" },
+ { 0x1218, "ethiopic_syllable_ma" },
+ { 0x1219, "ethiopic_syllable_mu" },
+ { 0x121A, "ethiopic_syllable_mi" },
+ { 0x121B, "ethiopic_syllable_maa" },
+ { 0x121C, "ethiopic_syllable_mee" },
+ { 0x121D, "ethiopic_syllable_me" },
+ { 0x121E, "ethiopic_syllable_mo" },
+ { 0x121F, "ethiopic_syllable_mwaa" },
+ { 0x1220, "ethiopic_syllable_sza" },
+ { 0x1221, "ethiopic_syllable_szu" },
+ { 0x1222, "ethiopic_syllable_szi" },
+ { 0x1223, "ethiopic_syllable_szaa" },
+ { 0x1224, "ethiopic_syllable_szee" },
+ { 0x1225, "ethiopic_syllable_sze" },
+ { 0x1226, "ethiopic_syllable_szo" },
+ { 0x1227, "ethiopic_syllable_szwa" },
+ { 0x1228, "ethiopic_syllable_ra" },
+ { 0x1229, "ethiopic_syllable_ru" },
+ { 0x122A, "ethiopic_syllable_ri" },
+ { 0x122B, "ethiopic_syllable_raa" },
+ { 0x122C, "ethiopic_syllable_ree" },
+ { 0x122D, "ethiopic_syllable_re" },
+ { 0x122E, "ethiopic_syllable_ro" },
+ { 0x122F, "ethiopic_syllable_rwa" },
+ { 0x1230, "ethiopic_syllable_sa" },
+ { 0x1231, "ethiopic_syllable_su" },
+ { 0x1232, "ethiopic_syllable_si" },
+ { 0x1233, "ethiopic_syllable_saa" },
+ { 0x1234, "ethiopic_syllable_see" },
+ { 0x1235, "ethiopic_syllable_se" },
+ { 0x1236, "ethiopic_syllable_so" },
+ { 0x1237, "ethiopic_syllable_swa" },
+ { 0x1238, "ethiopic_syllable_sha" },
+ { 0x1239, "ethiopic_syllable_shu" },
+ { 0x123A, "ethiopic_syllable_shi" },
+ { 0x123B, "ethiopic_syllable_shaa" },
+ { 0x123C, "ethiopic_syllable_shee" },
+ { 0x123D, "ethiopic_syllable_she" },
+ { 0x123E, "ethiopic_syllable_sho" },
+ { 0x123F, "ethiopic_syllable_shwa" },
+ { 0x1240, "ethiopic_syllable_qa" },
+ { 0x1241, "ethiopic_syllable_qu" },
+ { 0x1242, "ethiopic_syllable_qi" },
+ { 0x1243, "ethiopic_syllable_qaa" },
+ { 0x1244, "ethiopic_syllable_qee" },
+ { 0x1245, "ethiopic_syllable_qe" },
+ { 0x1246, "ethiopic_syllable_qo" },
+ { 0x1247, "" },
+ { 0x1248, "ethiopic_syllable_qwa" },
+ { 0x1249, "" },
+ { 0x124A, "ethiopic_syllable_qwi" },
+ { 0x124B, "ethiopic_syllable_qwaa" },
+ { 0x124C, "ethiopic_syllable_qwee" },
+ { 0x124D, "ethiopic_syllable_qwe" },
+ { 0x124E, "" },
+ { 0x124F, "" },
+ { 0x1250, "ethiopic_syllable_qha" },
+ { 0x1251, "ethiopic_syllable_qhu" },
+ { 0x1252, "ethiopic_syllable_qhi" },
+ { 0x1253, "ethiopic_syllable_qhaa" },
+ { 0x1254, "ethiopic_syllable_qhee" },
+ { 0x1255, "ethiopic_syllable_qhe" },
+ { 0x1256, "ethiopic_syllable_qho" },
+ { 0x1257, "" },
+ { 0x1258, "ethiopic_syllable_qhwa" },
+ { 0x1259, "" },
+ { 0x125A, "ethiopic_syllable_qhwi" },
+ { 0x125B, "ethiopic_syllable_qhwaa" },
+ { 0x125C, "ethiopic_syllable_qhwee" },
+ { 0x125D, "ethiopic_syllable_qhwe" },
+ { 0x125E, "" },
+ { 0x125F, "" },
+ { 0x1260, "ethiopic_syllable_ba" },
+ { 0x1261, "ethiopic_syllable_bu" },
+ { 0x1262, "ethiopic_syllable_bi" },
+ { 0x1263, "ethiopic_syllable_baa" },
+ { 0x1264, "ethiopic_syllable_bee" },
+ { 0x1265, "ethiopic_syllable_be" },
+ { 0x1266, "ethiopic_syllable_bo" },
+ { 0x1267, "ethiopic_syllable_bwaa" },
+ { 0x1268, "ethiopic_syllable_va" },
+ { 0x1269, "ethiopic_syllable_vu" },
+ { 0x126A, "ethiopic_syllable_vi" },
+ { 0x126B, "ethiopic_syllable_vaa" },
+ { 0x126C, "ethiopic_syllable_vee" },
+ { 0x126D, "ethiopic_syllable_ve" },
+ { 0x126E, "ethiopic_syllable_vo" },
+ { 0x126F, "ethiopic_syllable_vwa" },
+ { 0x1270, "ethiopic_syllable_ta" },
+ { 0x1271, "ethiopic_syllable_tu" },
+ { 0x1272, "ethiopic_syllable_ti" },
+ { 0x1273, "ethiopic_syllable_taa" },
+ { 0x1274, "ethiopic_syllable_tee" },
+ { 0x1275, "ethiopic_syllable_te" },
+ { 0x1276, "ethiopic_syllable_to" },
+ { 0x1277, "ethiopic_syllable_twa" },
+ { 0x1278, "ethiopic_syllable_ca" },
+ { 0x1279, "ethiopic_syllable_cu" },
+ { 0x127A, "ethiopic_syllable_ci" },
+ { 0x127B, "ethiopic_syllable_caa" },
+ { 0x127C, "ethiopic_syllable_cee" },
+ { 0x127D, "ethiopic_syllable_ce" },
+ { 0x127E, "ethiopic_syllable_co" },
+ { 0x127F, "ethiopic_syllable_cwa" },
+ { 0x1280, "ethiopic_syllable_xa" },
+ { 0x1281, "ethiopic_syllable_xu" },
+ { 0x1282, "ethiopic_syllable_xi" },
+ { 0x1283, "ethiopic_syllable_xaa" },
+ { 0x1284, "ethiopic_syllable_xee" },
+ { 0x1285, "ethiopic_syllable_xe" },
+ { 0x1286, "ethiopic_syllable_xo" },
+ { 0x1287, "" },
+ { 0x1288, "ethiopic_syllable_xwa" },
+ { 0x1289, "" },
+ { 0x128A, "ethiopic_syllable_xwi" },
+ { 0x128B, "ethiopic_syllable_xwaa" },
+ { 0x128C, "ethiopic_syllable_xwee" },
+ { 0x128D, "ethiopic_syllable_xwe" },
+ { 0x128E, "" },
+ { 0x128F, "" },
+ { 0x1290, "ethiopic_syllable_na" },
+ { 0x1291, "ethiopic_syllable_nu" },
+ { 0x1292, "ethiopic_syllable_ni" },
+ { 0x1293, "ethiopic_syllable_naa" },
+ { 0x1294, "ethiopic_syllable_nee" },
+ { 0x1295, "ethiopic_syllable_ne" },
+ { 0x1296, "ethiopic_syllable_no" },
+ { 0x1297, "ethiopic_syllable_nwa" },
+ { 0x1298, "ethiopic_syllable_nya" },
+ { 0x1299, "ethiopic_syllable_nyu" },
+ { 0x129A, "ethiopic_syllable_nyi" },
+ { 0x129B, "ethiopic_syllable_nyaa" },
+ { 0x129C, "ethiopic_syllable_nyee" },
+ { 0x129D, "ethiopic_syllable_nye" },
+ { 0x129E, "ethiopic_syllable_nyo" },
+ { 0x129F, "ethiopic_syllable_nywa" },
+ { 0x12A0, "ethiopic_syllable_glottal_a" },
+ { 0x12A1, "ethiopic_syllable_glottal_u" },
+ { 0x12A2, "ethiopic_syllable_glottal_i" },
+ { 0x12A3, "ethiopic_syllable_glottal_aa" },
+ { 0x12A4, "ethiopic_syllable_glottal_ee" },
+ { 0x12A5, "ethiopic_syllable_glottal_e" },
+ { 0x12A6, "ethiopic_syllable_glottal_o" },
+ { 0x12A7, "ethiopic_syllable_glottal_wa" },
+ { 0x12A8, "ethiopic_syllable_ka" },
+ { 0x12A9, "ethiopic_syllable_ku" },
+ { 0x12AA, "ethiopic_syllable_ki" },
+ { 0x12AB, "ethiopic_syllable_kaa" },
+ { 0x12AC, "ethiopic_syllable_kee" },
+ { 0x12AD, "ethiopic_syllable_ke" },
+ { 0x12AE, "ethiopic_syllable_ko" },
+ { 0x12AF, "" },
+ { 0x12B0, "ethiopic_syllable_kwa" },
+ { 0x12B1, "" },
+ { 0x12B2, "ethiopic_syllable_kwi" },
+ { 0x12B3, "ethiopic_syllable_kwaa" },
+ { 0x12B4, "ethiopic_syllable_kwee" },
+ { 0x12B5, "ethiopic_syllable_kwe" },
+ { 0x12B6, "" },
+ { 0x12B7, "" },
+ { 0x12B8, "ethiopic_syllable_kxa" },
+ { 0x12B9, "ethiopic_syllable_kxu" },
+ { 0x12BA, "ethiopic_syllable_kxi" },
+ { 0x12BB, "ethiopic_syllable_kxaa" },
+ { 0x12BC, "ethiopic_syllable_kxee" },
+ { 0x12BD, "ethiopic_syllable_kxe" },
+ { 0x12BE, "ethiopic_syllable_kxo" },
+ { 0x12BF, "" },
+ { 0x12C0, "ethiopic_syllable_kxwa" },
+ { 0x12C1, "" },
+ { 0x12C2, "ethiopic_syllable_kxwi" },
+ { 0x12C3, "ethiopic_syllable_kxwaa" },
+ { 0x12C4, "ethiopic_syllable_kxwee" },
+ { 0x12C5, "ethiopic_syllable_kxwe" },
+ { 0x12C6, "" },
+ { 0x12C7, "" },
+ { 0x12C8, "ethiopic_syllable_wa" },
+ { 0x12C9, "ethiopic_syllable_wu" },
+ { 0x12CA, "ethiopic_syllable_wi" },
+ { 0x12CB, "ethiopic_syllable_waa" },
+ { 0x12CC, "ethiopic_syllable_wee" },
+ { 0x12CD, "ethiopic_syllable_we" },
+ { 0x12CE, "ethiopic_syllable_wo" },
+ { 0x12CF, "" },
+ { 0x12D0, "ethiopic_syllable_pharyngeal_a" },
+ { 0x12D1, "ethiopic_syllable_pharyngeal_u" },
+ { 0x12D2, "ethiopic_syllable_pharyngeal_i" },
+ { 0x12D3, "ethiopic_syllable_pharyngeal_aa" },
+ { 0x12D4, "ethiopic_syllable_pharyngeal_ee" },
+ { 0x12D5, "ethiopic_syllable_pharyngeal_e" },
+ { 0x12D6, "ethiopic_syllable_pharyngeal_o" },
+ { 0x12D7, "" },
+ { 0x12D8, "ethiopic_syllable_za" },
+ { 0x12D9, "ethiopic_syllable_zu" },
+ { 0x12DA, "ethiopic_syllable_zi" },
+ { 0x12DB, "ethiopic_syllable_zaa" },
+ { 0x12DC, "ethiopic_syllable_zee" },
+ { 0x12DD, "ethiopic_syllable_ze" },
+ { 0x12DE, "ethiopic_syllable_zo" },
+ { 0x12DF, "ethiopic_syllable_zwa" },
+ { 0x12E0, "ethiopic_syllable_zha" },
+ { 0x12E1, "ethiopic_syllable_zhu" },
+ { 0x12E2, "ethiopic_syllable_zhi" },
+ { 0x12E3, "ethiopic_syllable_zhaa" },
+ { 0x12E4, "ethiopic_syllable_zhee" },
+ { 0x12E5, "ethiopic_syllable_zhe" },
+ { 0x12E6, "ethiopic_syllable_zho" },
+ { 0x12E7, "ethiopic_syllable_zhwa" },
+ { 0x12E8, "ethiopic_syllable_ya" },
+ { 0x12E9, "ethiopic_syllable_yu" },
+ { 0x12EA, "ethiopic_syllable_yi" },
+ { 0x12EB, "ethiopic_syllable_yaa" },
+ { 0x12EC, "ethiopic_syllable_yee" },
+ { 0x12ED, "ethiopic_syllable_ye" },
+ { 0x12EE, "ethiopic_syllable_yo" },
+ { 0x12EF, "" },
+ { 0x12F0, "ethiopic_syllable_da" },
+ { 0x12F1, "ethiopic_syllable_du" },
+ { 0x12F2, "ethiopic_syllable_di" },
+ { 0x12F3, "ethiopic_syllable_daa" },
+ { 0x12F4, "ethiopic_syllable_dee" },
+ { 0x12F5, "ethiopic_syllable_de" },
+ { 0x12F6, "ethiopic_syllable_do" },
+ { 0x12F7, "ethiopic_syllable_dwa" },
+ { 0x12F8, "ethiopic_syllable_dda" },
+ { 0x12F9, "ethiopic_syllable_ddu" },
+ { 0x12FA, "ethiopic_syllable_ddi" },
+ { 0x12FB, "ethiopic_syllable_ddaa" },
+ { 0x12FC, "ethiopic_syllable_ddee" },
+ { 0x12FD, "ethiopic_syllable_dde" },
+ { 0x12FE, "ethiopic_syllable_ddo" },
+ { 0x12FF, "ethiopic_syllable_ddwa" },
+ { 0x1300, "ethiopic_syllable_ja" },
+ { 0x1301, "ethiopic_syllable_ju" },
+ { 0x1302, "ethiopic_syllable_ji" },
+ { 0x1303, "ethiopic_syllable_jaa" },
+ { 0x1304, "ethiopic_syllable_jee" },
+ { 0x1305, "ethiopic_syllable_je" },
+ { 0x1306, "ethiopic_syllable_jo" },
+ { 0x1307, "ethiopic_syllable_jwa" },
+ { 0x1308, "ethiopic_syllable_ga" },
+ { 0x1309, "ethiopic_syllable_gu" },
+ { 0x130A, "ethiopic_syllable_gi" },
+ { 0x130B, "ethiopic_syllable_gaa" },
+ { 0x130C, "ethiopic_syllable_gee" },
+ { 0x130D, "ethiopic_syllable_ge" },
+ { 0x130E, "ethiopic_syllable_go" },
+ { 0x130F, "" },
+ { 0x1310, "ethiopic_syllable_gwa" },
+ { 0x1311, "" },
+ { 0x1312, "ethiopic_syllable_gwi" },
+ { 0x1313, "ethiopic_syllable_gwaa" },
+ { 0x1314, "ethiopic_syllable_gwee" },
+ { 0x1315, "ethiopic_syllable_gwe" },
+ { 0x1316, "" },
+ { 0x1317, "" },
+ { 0x1318, "ethiopic_syllable_gga" },
+ { 0x1319, "ethiopic_syllable_ggu" },
+ { 0x131A, "ethiopic_syllable_ggi" },
+ { 0x131B, "ethiopic_syllable_ggaa" },
+ { 0x131C, "ethiopic_syllable_ggee" },
+ { 0x131D, "ethiopic_syllable_gge" },
+ { 0x131E, "ethiopic_syllable_ggo" },
+ { 0x131F, "" },
+ { 0x1320, "ethiopic_syllable_tha" },
+ { 0x1321, "ethiopic_syllable_thu" },
+ { 0x1322, "ethiopic_syllable_thi" },
+ { 0x1323, "ethiopic_syllable_thaa" },
+ { 0x1324, "ethiopic_syllable_thee" },
+ { 0x1325, "ethiopic_syllable_the" },
+ { 0x1326, "ethiopic_syllable_tho" },
+ { 0x1327, "ethiopic_syllable_thwa" },
+ { 0x1328, "ethiopic_syllable_cha" },
+ { 0x1329, "ethiopic_syllable_chu" },
+ { 0x132A, "ethiopic_syllable_chi" },
+ { 0x132B, "ethiopic_syllable_chaa" },
+ { 0x132C, "ethiopic_syllable_chee" },
+ { 0x132D, "ethiopic_syllable_che" },
+ { 0x132E, "ethiopic_syllable_cho" },
+ { 0x132F, "ethiopic_syllable_chwa" },
+ { 0x1330, "ethiopic_syllable_pha" },
+ { 0x1331, "ethiopic_syllable_phu" },
+ { 0x1332, "ethiopic_syllable_phi" },
+ { 0x1333, "ethiopic_syllable_phaa" },
+ { 0x1334, "ethiopic_syllable_phee" },
+ { 0x1335, "ethiopic_syllable_phe" },
+ { 0x1336, "ethiopic_syllable_pho" },
+ { 0x1337, "ethiopic_syllable_phwa" },
+ { 0x1338, "ethiopic_syllable_tsa" },
+ { 0x1339, "ethiopic_syllable_tsu" },
+ { 0x133A, "ethiopic_syllable_tsi" },
+ { 0x133B, "ethiopic_syllable_tsaa" },
+ { 0x133C, "ethiopic_syllable_tsee" },
+ { 0x133D, "ethiopic_syllable_tse" },
+ { 0x133E, "ethiopic_syllable_tso" },
+ { 0x133F, "ethiopic_syllable_tswa" },
+ { 0x1340, "ethiopic_syllable_tza" },
+ { 0x1341, "ethiopic_syllable_tzu" },
+ { 0x1342, "ethiopic_syllable_tzi" },
+ { 0x1343, "ethiopic_syllable_tzaa" },
+ { 0x1344, "ethiopic_syllable_tzee" },
+ { 0x1345, "ethiopic_syllable_tze" },
+ { 0x1346, "ethiopic_syllable_tzo" },
+ { 0x1347, "" },
+ { 0x1348, "ethiopic_syllable_fa" },
+ { 0x1349, "ethiopic_syllable_fu" },
+ { 0x134A, "ethiopic_syllable_fi" },
+ { 0x134B, "ethiopic_syllable_faa" },
+ { 0x134C, "ethiopic_syllable_fee" },
+ { 0x134D, "ethiopic_syllable_fe" },
+ { 0x134E, "ethiopic_syllable_fo" },
+ { 0x134F, "ethiopic_syllable_fwaa" },
+ { 0x1350, "ethiopic_syllable_pa" },
+ { 0x1351, "ethiopic_syllable_pu" },
+ { 0x1352, "ethiopic_syllable_pi" },
+ { 0x1353, "ethiopic_syllable_paa" },
+ { 0x1354, "ethiopic_syllable_pee" },
+ { 0x1355, "ethiopic_syllable_pe" },
+ { 0x1356, "ethiopic_syllable_po" },
+ { 0x1357, "ethiopic_syllable_pwaa" },
+ { 0x1358, "ethiopic_syllable_mya" },
+ { 0x1359, "ethiopic_syllable_rya" },
+ { 0x135A, "ethiopic_syllable_fya" },
+ { 0x135B, "" },
+ { 0x135C, "" },
+ { 0x135D, "" },
+ { 0x135E, "" },
+ { 0x135F, "" },
+ { 0x1360, "" },
+ { 0x1361, "ethiopic_wordspace" },
+ { 0x1362, "ethiopic_full_stop" },
+ { 0x1363, "ethiopic_comma" },
+ { 0x1364, "ethiopic_semicolon" },
+ { 0x1365, "ethiopic_colon" },
+ { 0x1366, "ethiopic_preface_colon" },
+ { 0x1367, "ethiopic_question_mark" },
+ { 0x1368, "ethiopic_paragraph_separator" },
+ { 0x1369, "ethiopic_digit_one" },
+ { 0x136A, "ethiopic_digit_two" },
+ { 0x136B, "ethiopic_digit_three" },
+ { 0x136C, "ethiopic_digit_four" },
+ { 0x136D, "ethiopic_digit_five" },
+ { 0x136E, "ethiopic_digit_six" },
+ { 0x136F, "ethiopic_digit_seven" },
+ { 0x1370, "ethiopic_digit_eight" },
+ { 0x1371, "ethiopic_digit_nine" },
+ { 0x1372, "ethiopic_number_ten" },
+ { 0x1373, "ethiopic_number_twenty" },
+ { 0x1374, "ethiopic_number_thirty" },
+ { 0x1375, "ethiopic_number_forty" },
+ { 0x1376, "ethiopic_number_fifty" },
+ { 0x1377, "ethiopic_number_sixty" },
+ { 0x1378, "ethiopic_number_seventy" },
+ { 0x1379, "ethiopic_number_eighty" },
+ { 0x137A, "ethiopic_number_ninety" },
+ { 0x137B, "ethiopic_number_hundred" },
+ { 0x137C, "ethiopic_number_ten_thousand" },
+ { 0x137D, "" },
+ { 0x137E, "" },
+ { 0x137F, "" }
};
/*
* fgconsole.c - aeb - 960123 - Print foreground console
*/
+#include <stdio.h>
#include <sys/ioctl.h>
#include <linux/vt.h>
+#include "getfd.h"
#include "nls.h"
int
-main(){
- struct vt_stat vtstat;
+main(int argc, char **argv){
+ int fd;
+ struct vt_stat vtstat;
- setlocale(LC_ALL, "");
- bindtextdomain(PACKAGE, LOCALEDIR);
- textdomain(PACKAGE);
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
- /* replace 0 by getfd() for a somewhat more robust version */
- if (ioctl(0, VT_GETSTATE, &vtstat)) {
- perror("fgconsole: VT_GETSTATE");
- exit(1);
- }
- printf("%d\n", vtstat.v_active);
- return 0;
+ fd = getfd();
+ if (ioctl(fd, VT_GETSTATE, &vtstat)) {
+ perror("fgconsole: VT_GETSTATE");
+ exit(1);
+ }
+ printf("%d\n", vtstat.v_active);
+ return 0;
}
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
+#include "xmalloc.h"
+#include "findfile.h"
#include "nls.h"
-void *
-xmalloc(size_t n) {
- void *p = malloc(n);
- if (p == NULL) {
- fprintf(stderr, _("Out of Memory\n"));
- exit(1);
- }
- return p;
-}
-
-char *
-xstrdup(char *p) {
- char *q = strdup(p);
- if (q == NULL) {
- fprintf(stderr, _("Out of Memory?\n"));
- exit(1);
- }
- return q;
-}
-
char pathname[1024];
static int ispipe;
--- /dev/null
+extern void fpclose(FILE *fp);
+extern FILE *findfile(char *fnam, char **dirpath, char **suffixes);
#include <stdio.h>
+#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <linux/kd.h>
#include <sys/ioctl.h>
#include "nls.h"
+#include "getfd.h"
/*
* getfd.c
fd = open(fnam, O_RDONLY);
if (fd < 0 && errno == EACCES)
fd = open(fnam, O_WRONLY);
- if (fd < 0 || ! is_a_console(fd))
+ if (fd < 0)
return -1;
+ if (!is_a_console(fd)) {
+ close(fd);
+ return -1;
+ }
return fd;
}
--- /dev/null
+extern int getfd(void);
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
+#include "getfd.h"
#include "nls.h"
+#include "version.h"
-extern int getfd(void);
-
-void
+static void
usage(void) {
fprintf(stderr, _("usage: getkeycodes\n"));
exit(1);
int fd, sc;
struct kbkeycode a;
+ set_progname(argv[0]);
+
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
if (argc != 1)
usage();
fd = getfd();
#include <stdio.h>
+#include <stdlib.h>
#include <errno.h>
-#include <asm/ioctls.h>
+#include <sys/ioctl.h>
#include <linux/kd.h>
+#include "getfd.h"
+#include "xmalloc.h"
#include "nls.h"
+#include "version.h"
#ifndef USE_LIBC
/* There is such function in libc5 but it doesn't work for me [libc 5.4.13] */
#define wctomb our_wctomb
#endif
-extern int getfd();
-extern char *malloc();
+static int
+ud_compar(const void *u1, const void *u2){
+ unsigned short fp1 = ((struct unipair *) u1)->fontpos;
+ unsigned short fp2 = ((struct unipair *) u2)->fontpos;
+ return (int) fp1 - (int) fp2;
+}
+
+int
+main(int argc, char **argv){
+ int sortflag = 0;
+ char mb[]={0,0,0,0,0,0,0,0};
+ unsigned mb_length;
+ int fd, ct;
+ struct unimapdesc ud;
+ int i;
-main(){
- char mb[]={0,0,0,0,0,0,0,0};
- unsigned mb_length;
- int fd, ct;
- struct unimapdesc ud;
- int i;
+ set_progname(argv[0]);
- setlocale(LC_ALL, "");
- bindtextdomain(PACKAGE, LOCALEDIR);
- textdomain(PACKAGE);
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
- fd = getfd();
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
- ud.entry_ct = ct = 0;
- ud.entries = 0;
- if (ioctl(fd, GIO_UNIMAP, &ud)) {
- if (errno != ENOMEM) {
- perror("GIO_UNIMAP");
- exit(1);
+ if (argc == 2 && !strcmp(argv[1], "-s")) {
+ sortflag = 1;
+ argc--;
+ }
+ if (argc != 1) {
+ fprintf(stderr, _("Usage:\n\t%s [-s]\n"), progname);
+ exit(1);
}
- ct = ud.entry_ct;
- ud.entries = (struct unipair *) malloc(ct * sizeof(struct unipair));
+
+ fd = getfd();
+
+ ud.entry_ct = ct = 0;
+ ud.entries = 0;
if (ioctl(fd, GIO_UNIMAP, &ud)) {
- perror("GIO_UNIMAP (2)");
- exit(1);
+ if (errno != ENOMEM) {
+ perror("GIO_UNIMAP");
+ exit(1);
+ }
+ ct = ud.entry_ct;
+ ud.entries = xmalloc(ct * sizeof(struct unipair));
+ if (ioctl(fd, GIO_UNIMAP, &ud)) {
+ perror("GIO_UNIMAP (2)");
+ exit(1);
+ }
+ if (ct != ud.entry_ct)
+ fprintf(stderr,
+ _("strange... ct changed from %d to %d\n"),
+ ct, ud.entry_ct);
+
+ /* someone could change the unimap between our
+ first and second ioctl, so the above errors
+ are not impossible */
+ }
+
+ if (sortflag) {
+ printf("# sorted kernel unimap - count=%d\n", ud.entry_ct);
+ /* sort and merge entries */
+ qsort (ud.entries, ud.entry_ct, sizeof(ud.entries[0]),
+ ud_compar);
+ for(i=0; i<ud.entry_ct && i<ct; i++) {
+ int fp = ud.entries[i].fontpos;
+ printf("0x%03x\tU+%04x", fp, ud.entries[i].unicode);
+ while (i+1 < ud.entry_ct && i+1 < ct &&
+ ud.entries[i+1].fontpos == fp)
+ printf(" U+%04x", ud.entries[++i].unicode);
+ printf("\n");
+ }
+ } else {
+ printf("# kernel unimap - count=%d\n", ud.entry_ct);
+ for(i=0; i<ud.entry_ct && i<ct; i++) {
+ mb_length=wctomb (mb, ud.entries[i].unicode);
+ mb[ (mb_length > 6) ? 0 : mb_length ] = 0 ;
+ printf("0x%03x\tU+%04x\t# %s \n",
+ ud.entries[i].fontpos,
+ ud.entries[i].unicode, mb);
+ }
}
- if (ct != ud.entry_ct)
- fprintf(stderr, _("strange... ct changed from %d to %d\n"),
- ct, ud.entry_ct);
-
- /* someone could change the unimap between our
- first and second ioctl, so the above errors
- are not impossible */
- }
- printf("# count=%d\n", ud.entry_ct);
- for(i=0; i<ud.entry_ct && i<ct; i++) {
- mb_length=wctomb (mb, ud.entries[i].unicode);
- mb[ (mb_length > 6) ? 0 : mb_length ] = 0 ;
- printf("0x%03x\tU+%04x\t# %s \n", ud.entries[i].fontpos,
- ud.entries[i].unicode, mb);
- }
+
+ return 0;
}
#include <sys/ioctl.h>
#include <linux/types.h>
#include <linux/kd.h>
+#include "getfd.h"
#include "nls.h"
+#include "version.h"
-char *progname;
-
-extern int getfd(void);
-
-void
-usage(){
+static void
+usage(void){
fprintf(stderr, _("usage: kbd_mode [-a|-u|-k|-s]\n"));
exit(1);
}
main(int argc, char *argv[]){
int fd, mode;
- progname = argv[0];
+ set_progname(argv[0]);
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
fd = getfd();
if (argc == 1) {
--- /dev/null
+/*
+From: faith@cs.unc.edu (Rik Faith)
+Subject: User mode keyboard rate changer
+Date: 27 Apr 92 13:44:26 GMT
+
+I put together this program, called kbdrate.c, which will reset the keyboard
+repeat rate and delay in user mode. The program must have read/write
+access to /dev/port, so if /dev/port is only read/writeable by group port,
+then kbdrate must run setgid to group port (for example).
+
+The "rate" is the rate in characters per second
+
+The "delay" is the amount of time the key must remain depressed before it
+will start to repeat.
+
+Usage examples:
+
+kbdrate set rate to IBM default (10.9 cps, 250ms delay)
+kbdrate -r 30.0 set rate to 30 cps and delay to 250ms
+kbdrate -r 20.0 -s set rate to 20 cps (delay 250ms) -- don't print message
+kbdrate -r 0 -d 0 set rate to 2.0 cps and delay to 250 ms
+
+I find it useful to put kbdrate in my /etc/rc file so that the keyboard
+rate is set to something that I find comfortable at boot time. This sure
+beats rebuilding the kernel!
+
+
+ kbdrate.c -- Set keyboard typematic rate (and delay)
+ Created: Thu Apr 23 12:24:30 1992
+ Author: Rickard E. Faith, faith@cs.unc.edu
+
+ Copyright 1992 Rickard E. Faith. Distributed under the GPL.
+ This program comes with ABSOLUTELY NO WARRANTY.
+ Usage: kbdrate [-r rate] [-d delay] [-s]
+ Rate can range from 2.0 to 30.0 (units are characters per second)
+ Delay can range from 250 to 1000 (units are milliseconds)
+ -s suppressed message
+ Compiles under gcc 2.1 for Linux (tested with the pre-0.96 kernel)
+
+ Wed Jun 22 21:35:43 1994, faith@cs.unc.edu:
+ Changed valid_rates per suggestion by Andries.Brouwer@cwi.nl.
+ Wed Jun 22 22:18:29 1994, faith@cs.unc.edu:
+ Added patch for AUSTIN notebooks from John Bowman
+ (bowman@hagar.ph.utexas.edu)
+
+ Linux/68k modifications by Roman Hodek
+ (Roman.Hodek@informatik.uni-erlangen.de):
+
+ Reading/writing the Intel I/O ports via /dev/port is not the
+ English way... Such hardware dependant stuff can never work on
+ other architectures.
+
+ Linux/68k has an new ioctl for setting the keyboard repeat rate
+ and delay. Both values are counted in msecs, the kernel will do
+ any rounding to values possible with the underlying hardware.
+
+ kbdrate now first tries if the KDKBDREP ioctl is available. If it
+ is, it is used, else the old method is applied.
+
+ 1999-02-22 Arkadiusz Mi¶kiewicz <misiek@misiek.eu.org>
+ - added Native Language Support
+
+ 1999-03-17
+ Linux/SPARC modifications by Jeffrey Connell <ankh@canuck.gen.nz>:
+ It seems that the KDKBDREP ioctl is not available on this platform.
+ However, Linux/SPARC has its own ioctl for this, with yet another
+ different measurement system. Thus, try for KIOCSRATE, too.
+
+*/
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <sys/file.h>
+#include <sys/ioctl.h>
+
+#include "../defines.h"
+#ifdef HAVE_kd_h
+#include <linux/kd.h>
+#endif
+#ifdef __sparc__
+#include <asm/param.h>
+#include <asm/kbio.h>
+#endif
+
+#include "nls.h"
+#include "version.h"
+
+static int valid_rates[] = { 300, 267, 240, 218, 200, 185, 171, 160, 150,
+ 133, 120, 109, 100, 92, 86, 80, 75, 67,
+ 60, 55, 50, 46, 43, 40, 37, 33, 30, 27,
+ 25, 23, 21, 20 };
+#define RATE_COUNT (sizeof( valid_rates ) / sizeof( int ))
+
+static int valid_delays[] = { 250, 500, 750, 1000 };
+#define DELAY_COUNT (sizeof( valid_delays ) / sizeof( int ))
+
+static int
+KDKBDREP_ioctl_ok(double rate, int delay, int silent) {
+#ifdef KDKBDREP
+ /* This ioctl is defined in <linux/kd.h> but is not
+ implemented anywhere - must be in some m68k patches. */
+ struct kbd_repeat kbdrep_s;
+
+ /* don't change, just test */
+ kbdrep_s.rate = -1;
+ kbdrep_s.delay = -1;
+ if (ioctl( 0, KDKBDREP, &kbdrep_s )) {
+ if (errno == EINVAL)
+ return 0;
+ perror( "ioctl(KDKBDREP)" );
+ exit( 1 );
+ }
+
+ /* do the change */
+ if (rate == 0) /* switch repeat off */
+ kbdrep_s.rate = 0;
+ else
+ kbdrep_s.rate = 1000.0 / rate; /* convert cps to msec */
+ if (kbdrep_s.rate < 1)
+ kbdrep_s.rate = 1;
+ kbdrep_s.delay = delay;
+ if (kbdrep_s.delay < 1)
+ kbdrep_s.delay = 1;
+
+ if (ioctl( 0, KDKBDREP, &kbdrep_s )) {
+ perror( "ioctl(KDKBDREP)" );
+ exit( 1 );
+ }
+
+ /* report */
+ if (kbdrep_s.rate == 0)
+ rate = 0;
+ else
+ rate = 1000.0 / (double) kbdrep_s.rate;
+
+ if (!silent)
+ printf( _("Typematic Rate set to %.1f cps (delay = %d ms)\n"),
+ rate, kbdrep_s.delay );
+
+ return 1; /* success! */
+
+#else /* no KDKBDREP */
+ return 0;
+#endif /* KDKBDREP */
+}
+
+static int
+KIOCSRATE_ioctl_ok(double rate, int delay, int silent) {
+#ifdef KIOCSRATE
+ struct kbd_rate kbdrate_s;
+ int fd;
+
+ fd = open("/dev/kbd", O_RDONLY);
+ if (fd == -1) {
+ perror( "open(/dev/kbd)" );
+ exit( 1 );
+ }
+
+ kbdrate_s.rate = (int) (rate + 0.5); /* round up */
+ kbdrate_s.delay = delay * HZ / 1000; /* convert ms to Hz */
+ if (kbdrate_s.rate > 50)
+ kbdrate_s.rate = 50;
+
+ if (ioctl( fd, KIOCSRATE, &kbdrate_s )) {
+ perror( "ioctl(KIOCSRATE)" );
+ exit( 1 );
+ }
+ close( fd );
+
+ if (!silent)
+ printf( "Typematic Rate set to %d cps (delay = %d ms)\n",
+ kbdrate_s.rate, kbdrate_s.delay * 1000 / HZ );
+
+ return 1;
+#else /* no KIOCSRATE */
+ return 0;
+#endif /* KIOCSRATE */
+}
+
+int main( int argc, char **argv )
+{
+#ifdef __sparc__
+ double rate = 5.0; /* Default rate */
+ int delay = 200; /* Default delay */
+#else
+ double rate = 10.9; /* Default rate */
+ int delay = 250; /* Default delay */
+#endif
+ int value = 0x7f; /* Maximum delay with slowest rate */
+ /* DO NOT CHANGE this value */
+ int silent = 0;
+ int fd;
+ char data;
+ int c;
+ int i;
+ extern char *optarg;
+
+ set_progname(argv[0]);
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
+ while ( (c = getopt( argc, argv, "r:d:sv" )) != EOF ) {
+ switch (c) {
+ case 'r':
+ rate = atof( optarg );
+ break;
+ case 'd':
+ delay = atoi( optarg );
+ break;
+ case 's':
+ silent = 1;
+ break;
+ case 'v':
+ fprintf(stderr, "kbdrate from kbd-%s\n", VERSION);
+ exit(0);
+ }
+ }
+
+ if(KDKBDREP_ioctl_ok(rate, delay, silent)) /* m68k? */
+ return 0;
+
+ if(KIOCSRATE_ioctl_ok(rate, delay, silent)) /* sparc? */
+ return 0;
+
+
+ /* The ioport way */
+
+ for (i = 0; i < RATE_COUNT; i++)
+ if (rate * 10 >= valid_rates[i]) {
+ value &= 0x60;
+ value |= i;
+ break;
+ }
+
+
+ for (i = 0; i < DELAY_COUNT; i++)
+ if (delay <= valid_delays[i]) {
+ value &= 0x1f;
+ value |= i << 5;
+ break;
+ }
+
+ if ( (fd = open( "/dev/port", O_RDWR )) < 0) {
+ perror( _("Cannot open /dev/port") );
+ exit( 1 );
+ }
+
+ do {
+ lseek( fd, 0x64, 0 );
+ read( fd, &data, 1 );
+ } while ((data & 2) == 2 ); /* wait */
+
+ lseek( fd, 0x60, 0 );
+ data = 0xf3; /* set typematic rate */
+ write( fd, &data, 1 );
+
+ do {
+ lseek( fd, 0x64, 0 );
+ read( fd, &data, 1 );
+ } while ((data & 2) == 2 ); /* wait */
+
+ lseek( fd, 0x60, 0 );
+ sleep( 1 );
+ write( fd, &value, 1 );
+
+ close( fd );
+
+ if (!silent)
+ printf( _("Typematic Rate set to %.1f cps (delay = %d ms)\n"),
+ valid_rates[value & 0x1f] / 10.0,
+ valid_delays[ (value & 0x60) >> 5 ] );
+
+ return 0;
+}
-/* Font handling differs between various kernel versions */
+/*
+ * kdfontop.c - export getfont() and putfont()
+ *
+ * Font handling differs between various kernel versions.
+ * Hide the differences in this file.
+ */
#include <stdio.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
+#include "kdfontop.h"
#include "nls.h"
/*
data points to name / NULL */
#define KD_FONT_OP_COPY 3 /* Copy from another console */
+#define KD_FONT_FLAG_OLD 0x80000000 /* Invoked via old interface */
#define KD_FONT_FLAG_DONT_RECALC 1 /* Don't call adjust_height() */
/* (Used internally for PIO_FONT support) */
#endif /* KDFONTOP */
int
-getfont(int fd, char *buf, int *count) {
+getfont(int fd, char *buf, int *count, int *height) {
struct consolefontdesc cfd;
struct console_font_op cfo;
int i;
/* First attempt: KDFONTOP */
cfo.op = KD_FONT_OP_GET;
cfo.flags = 0;
- cfo.width = cfo.height = 0;
+ cfo.width = cfo.height = 32;
cfo.charcount = *count;
cfo.data = buf;
i = ioctl(fd, KDFONTOP, &cfo);
if (i == 0) {
*count = cfo.charcount;
+ if (height)
+ *height = cfo.height;
+ if (cfo.width != 8) {
+ fprintf(stderr,
+ _("kdfontop.c: only width 8 supported\n"));
+ exit(1);
+ }
return 0;
}
if (errno != ENOSYS && errno != EINVAL) {
- perror("setfont: KDFONTOP");
+ perror("getfont: KDFONTOP");
return -1;
}
return 0;
}
if (errno != ENOSYS && errno != EINVAL) {
- perror("setfont: GIO_FONTX");
+ perror("getfont: GIO_FONTX");
return -1;
}
/* Third attempt: GIO_FONT */
if (*count < 256) {
- fprintf(stderr, _("setfont bug: getfont called with count<256\n"));
+ fprintf(stderr, _("bug: getfont called with count<256\n"));
exit(1);
}
i = ioctl(fd, GIO_FONT, buf);
if (i) {
- perror("setfont: GIO_FONT");
+ perror("getfont: GIO_FONT");
return -1;
}
*count = 256;
if (i == 0)
return 0;
if (errno != ENOSYS && errno != EINVAL) {
- perror("setfont: KDFONTOP");
+ perror("putfont: KDFONTOP");
return -1;
}
if (i == 0)
return 0;
if (errno != ENOSYS && errno != EINVAL) {
- perror("setfont: PIO_FONTX");
+ perror("putfont: PIO_FONTX");
return -1;
}
/* Third attempt: PIO_FONT */
- if (count < 256) {
- fprintf(stderr, _("setfont bug: getfont called with count<256\n"));
- exit(1);
- }
+ /* This will load precisely 256 chars, independent of count */
i = ioctl(fd, PIO_FONT, buf);
if (i) {
- perror("setfont: PIO_FONT");
+ perror("putfont: PIO_FONT");
return -1;
}
return 0;
--- /dev/null
+/*
+ * Read kernel font into BUF with room for COUNT 32x32 glyphs.
+ * Return 0 on success -1 on failure.
+ * Sets number of glyphs in COUNT, glyph height in HEIGHT.
+ */
+extern int getfont(int fd, char *buf, int *count, int *height);
+
+/*
+ * Load kernel font of pointsize HEIGHT from BUF with length COUNT.
+ * Return 0 on success, -1 on failure.
+ */
+extern int putfont(int fd, char *buf, int count, int height);
+
+/*
+ * Find the maximum height of nonblank pixels (in the 32*COUNT bytes of BUF).
+ */
+extern int font_charheight(char *buf, int count);
--- /dev/null
+/* For koi8-r, see rfc1489.txt */
+/* For koi8-u, see rfc2319.txt
+ it is identical to koi8-r with 8 exceptions */
+/* Since koi8-r did not have letters on these 8 places,
+ we can use the same table for both. */
+/* TODO: check unicode values for these 8 positions */
+
+static sym koi8_syms[] = { /* 128-255 */
+ { 0x2500, "" }, /* 0200 */
+ { 0x2502, "" },
+ { 0x250c, "" },
+ { 0x2510, "" },
+ { 0x2514, "" },
+ { 0x2518, "" },
+ { 0x251c, "" },
+ { 0x2524, "" },
+ { 0x252c, "" }, /* 0210 */
+ { 0x2534, "" },
+ { 0x253c, "" },
+ { 0x2580, "" },
+ { 0x2584, "" },
+ { 0x2588, "" },
+ { 0x258c, "" },
+ { 0x2590, "" },
+ { 0x2591, "" }, /* 0220 */
+ { 0x2592, "" },
+ { 0x2593, "" },
+ { 0x2320, "" },
+ { 0x25a0, "" },
+ { 0x2219, "" },
+ { 0x221a, "" },
+ { 0x2248, "" },
+ { 0x2264, "" }, /* 0230 */
+ { 0x2265, "" },
+ { 0x00a0, "" },
+ { 0x2321, "" },
+ { 0x00b0, "" },
+ { 0x00b2, "" },
+ { 0x00b7, "" },
+ { 0x00f7, "" },
+ { 0x2550, "" }, /* 0240 */
+ { 0x2551, "" },
+ { 0x2552, "" },
+ { 0x0451, "cyrillic_small_letter_io" },
+ { 0x2553, "ukrainian_cyrillic_small_letter_ie" }, /* koi8-u #164 */
+ { 0x2554, "" },
+ { 0x2555, "ukrainian_cyrillic_small_letter_i" }, /* koi8-u #166 */
+ { 0x2556, "ukrainian_cyrillic_small_letter_yi" }, /* koi8-u #167 */
+ { 0x2557, "" }, /* 0250 */
+ { 0x2558, "" },
+ { 0x2559, "" },
+ { 0x255a, "" },
+ { 0x255b, "" },
+ { 0x255c, "ukrainian_cyrillic_small_letter_ghe_with_upturn" }, /* koi8-u #173 */
+ { 0x255d, "" },
+ { 0x255e, "" },
+ { 0x255f, "" }, /* 0260 */
+ { 0x2560, "" },
+ { 0x2561, "" },
+ { 0x0401, "cyrillic_capital_letter_io" },
+ { 0x2562, "ukrainian_cyrillic_capital_letter_ie" },/* koi8-u #180 */
+ { 0x2563, "" },
+ { 0x2564, "ukrainian_cyrillic_capital_letter_i" }, /* koi8-u #182 */
+ { 0x2565, "ukrainian_cyrillic_capital_letter_yi" },/* koi8-u #183 */
+ { 0x2566, "" }, /* 0270 */
+ { 0x2567, "" },
+ { 0x2568, "" },
+ { 0x2569, "" },
+ { 0x256a, "" },
+ { 0x256b, "ukrainian_cyrillic_capital_letter_ghe_with_upturn" },/* koi8-u #189 */
+ { 0x256c, "" },
+ { 0x00a9, "copyright" },
+ { 0x044e, "cyrillic_small_letter_yu" }, /* 0300 */
+ { 0x0430, "cyrillic_small_letter_a" },
+ { 0x0431, "cyrillic_small_letter_be" },
+ { 0x0446, "cyrillic_small_letter_tse" },
+ { 0x0434, "cyrillic_small_letter_de" },
+ { 0x0435, "cyrillic_small_letter_ie" },
+ { 0x0444, "cyrillic_small_letter_ef" },
+ { 0x0433, "cyrillic_small_letter_ghe" },
+ { 0x0445, "cyrillic_small_letter_ha" }, /* 0310 */
+ { 0x0438, "cyrillic_small_letter_i" },
+ { 0x0439, "cyrillic_small_letter_short_i" },
+ { 0x043a, "cyrillic_small_letter_ka" },
+ { 0x043b, "cyrillic_small_letter_el" },
+ { 0x043c, "cyrillic_small_letter_em" },
+ { 0x043d, "cyrillic_small_letter_en" },
+ { 0x043e, "cyrillic_small_letter_o" },
+ { 0x043f, "cyrillic_small_letter_pe" }, /* 0320 */
+ { 0x044f, "cyrillic_small_letter_ya" },
+ { 0x0440, "cyrillic_small_letter_er" },
+ { 0x0441, "cyrillic_small_letter_es" },
+ { 0x0442, "cyrillic_small_letter_te" },
+ { 0x0443, "cyrillic_small_letter_u" },
+ { 0x0436, "cyrillic_small_letter_zhe" },
+ { 0x0432, "cyrillic_small_letter_ve" },
+ { 0x044c, "cyrillic_small_soft_sign" }, /* 0330 */
+ { 0x044b, "cyrillic_small_letter_yeru" },
+ { 0x0437, "cyrillic_small_letter_ze" },
+ { 0x0448, "cyrillic_small_letter_sha" },
+ { 0x044d, "cyrillic_small_letter_e" },
+ { 0x0449, "cyrillic_small_letter_shcha" },
+ { 0x0447, "cyrillic_small_letter_che" },
+ { 0x044a, "cyrillic_small_hard_sign" },
+ { 0x042e, "cyrillic_capital_letter_yu" }, /* 0340 */
+ { 0x0410, "cyrillic_capital_letter_a" },
+ { 0x0411, "cyrillic_capital_letter_be" },
+ { 0x0426, "cyrillic_capital_letter_tse" },
+ { 0x0414, "cyrillic_capital_letter_de" },
+ { 0x0415, "cyrillic_capital_letter_ie" },
+ { 0x0424, "cyrillic_capital_letter_ef" },
+ { 0x0413, "cyrillic_capital_letter_ghe" },
+ { 0x0425, "cyrillic_capital_letter_ha" }, /* 0350 */
+ { 0x0418, "cyrillic_capital_letter_i" },
+ { 0x0419, "cyrillic_capital_letter_short_i" },
+ { 0x041a, "cyrillic_capital_letter_ka" },
+ { 0x041b, "cyrillic_capital_letter_el" },
+ { 0x041c, "cyrillic_capital_letter_em" },
+ { 0x041d, "cyrillic_capital_letter_en" },
+ { 0x041e, "cyrillic_capital_letter_o" },
+ { 0x041f, "cyrillic_capital_letter_pe" }, /* 0360 */
+ { 0x042f, "cyrillic_capital_letter_ya" },
+ { 0x0420, "cyrillic_capital_letter_er" },
+ { 0x0421, "cyrillic_capital_letter_es" },
+ { 0x0422, "cyrillic_capital_letter_te" },
+ { 0x0423, "cyrillic_capital_letter_u" },
+ { 0x0416, "cyrillic_capital_letter_zhe" },
+ { 0x0412, "cyrillic_capital_letter_ve" },
+ { 0x042c, "cyrillic_capital_soft_sign" }, /* 0370 */
+ { 0x042b, "cyrillic_capital_letter_yeru" },
+ { 0x0417, "cyrillic_capital_letter_ze" },
+ { 0x0428, "cyrillic_capital_letter_sha" },
+ { 0x042d, "cyrillic_capital_letter_e" },
+ { 0x0429, "cyrillic_capital_letter_shcha" },
+ { 0x0427, "cyrillic_capital_letter_che" },
+ { 0x042a, "cyrillic_capital_hard_sign" }
+};
#include "ksyms.h"
#include "nls.h"
-static char *latin1_syms[] = {
+/* Keysyms whose KTYP is KT_LATIN or KT_LETTER and whose KVAL is 0..127. */
+
+static const char *iso646_syms[] = {
"nul",
"Control_a",
"Control_b",
"braceright",
"asciitilde",
"Delete",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
+
+ /* set_charset() fills in charset dependent strings here. */
+ /* start with the latin1 defaults */
+ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"nobreakspace",
"exclamdown",
"cent",
"udiaeresis",
"yacute",
"thorn",
- "ydiaeresis"
+ "ydiaeresis",
+};
+
+/* Keysyms whose KTYP is KT_LATIN or KT_LETTER and whose KVAL is 128..255,
+ and their Unicode equivalent. */
+
+static sym latin1_syms[] = {
+ { 0x00a0, "nobreakspace" },
+ { 0x00a1, "exclamdown" },
+ { 0x00a2, "cent" },
+ { 0x00a3, "sterling" },
+ { 0x00a4, "currency" },
+ { 0x00a5, "yen" },
+ { 0x00a6, "brokenbar" },
+ { 0x00a7, "section" },
+ { 0x00a8, "diaeresis" },
+ { 0x00a9, "copyright" },
+ { 0x00aa, "ordfeminine" },
+ { 0x00ab, "guillemotleft" },
+ { 0x00ac, "notsign" },
+ { 0x00ad, "hyphen" },
+ { 0x00ae, "registered" },
+ { 0x00af, "macron" },
+ { 0x00b0, "degree" },
+ { 0x00b1, "plusminus" },
+ { 0x00b2, "twosuperior" },
+ { 0x00b3, "threesuperior" },
+ { 0x00b4, "acute" },
+ { 0x00b5, "mu" },
+ { 0x00b6, "paragraph" },
+ { 0x00b7, "periodcentered" },
+ { 0x00b8, "cedilla" },
+ { 0x00b9, "onesuperior" },
+ { 0x00ba, "masculine" },
+ { 0x00bb, "guillemotright" },
+ { 0x00bc, "onequarter" },
+ { 0x00bd, "onehalf" },
+ { 0x00be, "threequarters" },
+ { 0x00bf, "questiondown" },
+ { 0x00c0, "Agrave" },
+ { 0x00c1, "Aacute" },
+ { 0x00c2, "Acircumflex" },
+ { 0x00c3, "Atilde" },
+ { 0x00c4, "Adiaeresis" },
+ { 0x00c5, "Aring" },
+ { 0x00c6, "AE" },
+ { 0x00c7, "Ccedilla" },
+ { 0x00c8, "Egrave" },
+ { 0x00c9, "Eacute" },
+ { 0x00ca, "Ecircumflex" },
+ { 0x00cb, "Ediaeresis" },
+ { 0x00cc, "Igrave" },
+ { 0x00cd, "Iacute" },
+ { 0x00ce, "Icircumflex" },
+ { 0x00cf, "Idiaeresis" },
+ { 0x00d0, "ETH" },
+ { 0x00d1, "Ntilde" },
+ { 0x00d2, "Ograve" },
+ { 0x00d3, "Oacute" },
+ { 0x00d4, "Ocircumflex" },
+ { 0x00d5, "Otilde" },
+ { 0x00d6, "Odiaeresis" },
+ { 0x00d7, "multiply" },
+ { 0x00d8, "Ooblique" },
+ { 0x00d9, "Ugrave" },
+ { 0x00da, "Uacute" },
+ { 0x00db, "Ucircumflex" },
+ { 0x00dc, "Udiaeresis" },
+ { 0x00dd, "Yacute" },
+ { 0x00de, "THORN" },
+ { 0x00df, "ssharp" },
+ { 0x00e0, "agrave" },
+ { 0x00e1, "aacute" },
+ { 0x00e2, "acircumflex" },
+ { 0x00e3, "atilde" },
+ { 0x00e4, "adiaeresis" },
+ { 0x00e5, "aring" },
+ { 0x00e6, "ae" },
+ { 0x00e7, "ccedilla" },
+ { 0x00e8, "egrave" },
+ { 0x00e9, "eacute" },
+ { 0x00ea, "ecircumflex" },
+ { 0x00eb, "ediaeresis" },
+ { 0x00ec, "igrave" },
+ { 0x00ed, "iacute" },
+ { 0x00ee, "icircumflex" },
+ { 0x00ef, "idiaeresis" },
+ { 0x00f0, "eth" },
+ { 0x00f1, "ntilde" },
+ { 0x00f2, "ograve" },
+ { 0x00f3, "oacute" },
+ { 0x00f4, "ocircumflex" },
+ { 0x00f5, "otilde" },
+ { 0x00f6, "odiaeresis" },
+ { 0x00f7, "division" },
+ { 0x00f8, "oslash" },
+ { 0x00f9, "ugrave" },
+ { 0x00fa, "uacute" },
+ { 0x00fb, "ucircumflex" },
+ { 0x00fc, "udiaeresis" },
+ { 0x00fd, "yacute" },
+ { 0x00fe, "thorn" },
+ { 0x00ff, "ydiaeresis" }
};
-static char *latin2_syms[] = {
- "", "Aogonek", "breve", "Lstroke", "", "Lcaron", "Sacute", "",
- "", "Scaron", "Scedilla", "Tcaron", "Zacute", "", "Zcaron", "Zabovedot",
- "", "aogonek", "ogonek", "lstroke", "", "lcaron", "sacute", "caron",
- "", "scaron", "scedilla", "tcaron", "zacute", "doubleacute", "zcaron", "zabovedot",
- "Racute", "", "", "Abreve", "", "Lacute", "Cacute", "",
- "Ccaron", "", "Eogonek", "", "Ecaron", "", "", "Dcaron",
- "Dstroke", "Nacute", "Ncaron", "", "", "Odoubleacute", "", "",
- "Rcaron", "Uring", "", "Udoubleacute", "", "", "Tcedilla", "",
- "racute", "", "", "abreve", "", "lacute", "cacute", "",
- "ccaron", "", "eogonek", "", "ecaron", "", "", "dcaron",
- "dstroke", "nacute", "ncaron", "", "", "odoubleacute", "", "",
- "rcaron", "uring", "", "udoubleacute", "", "", "tcedilla", "abovedot"
+static sym latin2_syms[] = {
+ { 0x00a0, "" },
+ { 0x0104, "Aogonek" },
+ { 0x02d8, "breve" },
+ { 0x0141, "Lstroke" },
+ { 0x00a4, "" },
+ { 0x013d, "Lcaron" },
+ { 0x015a, "Sacute" },
+ { 0x00a7, "" },
+ { 0x00a8, "" },
+ { 0x0160, "Scaron" },
+ { 0x015e, "Scedilla" },
+ { 0x0164, "Tcaron" },
+ { 0x0179, "Zacute" },
+ { 0x00ad, "" },
+ { 0x017d, "Zcaron" },
+ { 0x017b, "Zabovedot" },
+ { 0x00b0, "" },
+ { 0x0105, "aogonek" },
+ { 0x02db, "ogonek" },
+ { 0x0142, "lstroke" },
+ { 0x00b4, "" },
+ { 0x013e, "lcaron" },
+ { 0x015b, "sacute" },
+ { 0x02c7, "caron" },
+ { 0x00b8, "" },
+ { 0x0161, "scaron" },
+ { 0x015f, "scedilla" },
+ { 0x0165, "tcaron" },
+ { 0x017a, "zacute" },
+ { 0x02dd, "doubleacute" },
+ { 0x017e, "zcaron" },
+ { 0x017c, "zabovedot" },
+ { 0x0154, "Racute" },
+ { 0x00c1, "" },
+ { 0x00c2, "" },
+ { 0x0102, "Abreve" },
+ { 0x00c4, "" },
+ { 0x0139, "Lacute" },
+ { 0x0106, "Cacute" },
+ { 0x00c7, "" },
+ { 0x010c, "Ccaron" },
+ { 0x00c9, "" },
+ { 0x0118, "Eogonek" },
+ { 0x00cb, "" },
+ { 0x011a, "Ecaron" },
+ { 0x00cd, "" },
+ { 0x00ce, "" },
+ { 0x010e, "Dcaron" },
+ { 0x0110, "Dstroke" },
+ { 0x0143, "Nacute" },
+ { 0x0147, "Ncaron" },
+ { 0x00d3, "" },
+ { 0x00d4, "" },
+ { 0x0150, "Odoubleacute" },
+ { 0x00d6, "" },
+ { 0x00d7, "" },
+ { 0x0158, "Rcaron" },
+ { 0x016e, "Uring" },
+ { 0x00da, "" },
+ { 0x0170, "Udoubleacute" },
+ { 0x00dc, "" },
+ { 0x00dd, "" },
+ { 0x0162, "Tcedilla" },
+ { 0x00df, "" },
+ { 0x0155, "racute" },
+ { 0x00e1, "" },
+ { 0x00e2, "" },
+ { 0x0103, "abreve" },
+ { 0x00e4, "" },
+ { 0x013a, "lacute" },
+ { 0x0107, "cacute" },
+ { 0x00e7, "" },
+ { 0x010d, "ccaron" },
+ { 0x00e9, "" },
+ { 0x0119, "eogonek" },
+ { 0x00eb, "" },
+ { 0x011b, "ecaron" },
+ { 0x00ed, "" },
+ { 0x00ee, "" },
+ { 0x010f, "dcaron" },
+ { 0x0111, "dstroke" },
+ { 0x0144, "nacute" },
+ { 0x0148, "ncaron" },
+ { 0x00f3, "" },
+ { 0x00f4, "" },
+ { 0x0151, "odoubleacute" },
+ { 0x00f6, "" },
+ { 0x00f7, "" },
+ { 0x0159, "rcaron" },
+ { 0x016f, "uring" },
+ { 0x00fa, "" },
+ { 0x0171, "udoubleacute" },
+ { 0x00fc, "" },
+ { 0x00fd, "" },
+ { 0x0163, "tcedilla" },
+ { 0x02d9, "abovedot" }
};
-static char *mazovia_syms[] = { /* as specified by Wlodek Bzyl <matwb@univ.gda.pl> */
- "", "", "", "", "", "", "aogonek", "", /* 8x */
- "", "", "", "", "", "cacute", "", "Aogonek",
- "Eogonek", "eogonek", "lstroke", "", "", "Cacute", "", "", /* 9x */
- "Sacute", "", "", "", "Lstroke", "", "sacute", "",
- "Zacute", "Zabovedot", "oacute", "Oacute",
- "nacute", "Nacute", "zacute", "zabovedot", /* ax */
- "", "", "", "", "", "", "guillemotleft", "guillemotright",
- "", "", "", "", "", "", "", "", /* bx */
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "", /* cx */
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "", /* dx */
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "", /* ex */
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "", /* fx */
- "", "", "", "", "", "", "", "quotedblbase"
+static sym mazovia_syms[] = {
+ /* as specified by Wlodek Bzyl <matwb@univ.gda.pl> */
+ { 0x0080, "" },
+ { 0x0081, "" },
+ { 0x0082, "" },
+ { 0x0083, "" },
+ { 0x0084, "" },
+ { 0x0085, "" },
+ { 0x0105, "aogonek" },
+ { 0x0087, "" },
+ { 0x0088, "" },
+ { 0x0089, "" },
+ { 0x008a, "" },
+ { 0x008b, "" },
+ { 0x008c, "" },
+ { 0x0107, "cacute" },
+ { 0x008e, "" },
+ { 0x0104, "Aogonek" },
+ { 0x0118, "Eogonek" },
+ { 0x0119, "eogonek" },
+ { 0x0142, "lstroke" },
+ { 0x0093, "" },
+ { 0x0094, "" },
+ { 0x0106, "Cacute" },
+ { 0x0096, "" },
+ { 0x0097, "" },
+ { 0x015a, "Sacute" },
+ { 0x0099, "" },
+ { 0x009a, "" },
+ { 0x009b, "" },
+ { 0x0141, "Lstroke" },
+ { 0x009d, "" },
+ { 0x015b, "sacute" },
+ { 0x009f, "" },
+ { 0x0179, "Zacute" },
+ { 0x017b, "Zabovedot" },
+ { 0x00f3, "oacute" },
+ { 0x00d3, "Oacute" },
+ { 0x0144, "nacute" },
+ { 0x0143, "Nacute" },
+ { 0x017a, "zacute" },
+ { 0x017c, "zabovedot" },
+ { 0x00a8, "" },
+ { 0x00a9, "" },
+ { 0x00aa, "" },
+ { 0x00ab, "" },
+ { 0x00ac, "" },
+ { 0x00ad, "" },
+ { 0x00ab, "guillemotleft" },
+ { 0x00bb, "guillemotright" },
+ { 0x00b0, "" },
+ { 0x00b1, "" },
+ { 0x00b2, "" },
+ { 0x00b3, "" },
+ { 0x00b4, "" },
+ { 0x00b5, "" },
+ { 0x00b6, "" },
+ { 0x00b7, "" },
+ { 0x00b8, "" },
+ { 0x00b9, "" },
+ { 0x00ba, "" },
+ { 0x00bb, "" },
+ { 0x00bc, "" },
+ { 0x00bd, "" },
+ { 0x00be, "" },
+ { 0x00bf, "" },
+ { 0x00c0, "" },
+ { 0x00c1, "" },
+ { 0x00c2, "" },
+ { 0x00c3, "" },
+ { 0x00c4, "" },
+ { 0x00c5, "" },
+ { 0x00c6, "" },
+ { 0x00c7, "" },
+ { 0x00c8, "" },
+ { 0x00c9, "" },
+ { 0x00ca, "" },
+ { 0x00cb, "" },
+ { 0x00cc, "" },
+ { 0x00cd, "" },
+ { 0x00ce, "" },
+ { 0x00cf, "" },
+ { 0x00d0, "" },
+ { 0x00d1, "" },
+ { 0x00d2, "" },
+ { 0x00d3, "" },
+ { 0x00d4, "" },
+ { 0x00d5, "" },
+ { 0x00d6, "" },
+ { 0x00d7, "" },
+ { 0x00d8, "" },
+ { 0x00d9, "" },
+ { 0x00da, "" },
+ { 0x00db, "" },
+ { 0x00dc, "" },
+ { 0x00dd, "" },
+ { 0x00de, "" },
+ { 0x00df, "" },
+ { 0x00e0, "" },
+ { 0x00e1, "" },
+ { 0x00e2, "" },
+ { 0x00e3, "" },
+ { 0x00e4, "" },
+ { 0x00e5, "" },
+ { 0x00e6, "" },
+ { 0x00e7, "" },
+ { 0x00e8, "" },
+ { 0x00e9, "" },
+ { 0x00ea, "" },
+ { 0x00eb, "" },
+ { 0x00ec, "" },
+ { 0x00ed, "" },
+ { 0x00ee, "" },
+ { 0x00ef, "" },
+ { 0x00f0, "" },
+ { 0x00f1, "" },
+ { 0x00f2, "" },
+ { 0x00f3, "" },
+ { 0x00f4, "" },
+ { 0x00f5, "" },
+ { 0x00f6, "" },
+ { 0x00f7, "" },
+ { 0x00f8, "" },
+ { 0x00f9, "" },
+ { 0x00fa, "" },
+ { 0x00fb, "" },
+ { 0x00fc, "" },
+ { 0x00fd, "" },
+ { 0x00fe, "" },
+ { 0x201e, "quotedblbase" }
};
-static char *latin3_syms[] = {
- "", "Hstroke", "", "", "", "", "Hcircumflex", "",
- "", "Iabovedot", "", "Gbreve", "Jcircumflex", "", "", "",
- "", "hstroke", "", "", "", "", "hcircumflex", "",
- "", "idotless", "", "gbreve", "jcircumflex", "", "", "",
- "", "", "", "", "", "Cabovedot", "Ccircumflex", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "Gabovedot", "", "",
- "Gcircumflex", "", "", "", "", "Ubreve", "Scircumflex", "",
- "", "", "", "", "", "cabovedot", "ccircumflex", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "gabovedot", "", "",
- "gcircumflex", "", "", "", "", "ubreve", "scircumflex", ""
+static sym latin3_syms[] = {
+ { 0x00a0, "" },
+ { 0x0126, "Hstroke" },
+ { 0x02d8, "" },
+ { 0x00a3, "" },
+ { 0x00a4, "" },
+ { 0xfffd, "" },
+ { 0x0124, "Hcircumflex" },
+ { 0x00a7, "" },
+ { 0x00a8, "" },
+ { 0x0130, "Iabovedot" },
+ { 0x015e, "" },
+ { 0x011e, "Gbreve" },
+ { 0x0134, "Jcircumflex" },
+ { 0x00ad, "" },
+ { 0xfffd, "" },
+ { 0x017b, "" },
+ { 0x00b0, "" },
+ { 0x0127, "hstroke" },
+ { 0x00b2, "" },
+ { 0x00b3, "" },
+ { 0x00b4, "" },
+ { 0x00b5, "" },
+ { 0x0125, "hcircumflex" },
+ { 0x00b7, "" },
+ { 0x00b8, "" },
+ { 0x0131, "idotless" },
+ { 0x015f, "" },
+ { 0x011f, "gbreve" },
+ { 0x0135, "jcircumflex" },
+ { 0x00bd, "" },
+ { 0xfffd, "" },
+ { 0x017c, "" },
+ { 0x00c0, "" },
+ { 0x00c1, "" },
+ { 0x00c2, "" },
+ { 0xfffd, "" },
+ { 0x00c4, "" },
+ { 0x010a, "Cabovedot" },
+ { 0x0108, "Ccircumflex" },
+ { 0x00c7, "" },
+ { 0x00c8, "" },
+ { 0x00c9, "" },
+ { 0x00ca, "" },
+ { 0x00cb, "" },
+ { 0x00cc, "" },
+ { 0x00cd, "" },
+ { 0x00ce, "" },
+ { 0x00cf, "" },
+ { 0xfffd, "" },
+ { 0x00d1, "" },
+ { 0x00d2, "" },
+ { 0x00d3, "" },
+ { 0x00d4, "" },
+ { 0x0120, "Gabovedot" },
+ { 0x00d6, "" },
+ { 0x00d7, "" },
+ { 0x011c, "Gcircumflex" },
+ { 0x00d9, "" },
+ { 0x00da, "" },
+ { 0x00db, "" },
+ { 0x00dc, "" },
+ { 0x016c, "Ubreve" },
+ { 0x015c, "Scircumflex" },
+ { 0x00df, "" },
+ { 0x00e0, "" },
+ { 0x00e1, "" },
+ { 0x00e2, "" },
+ { 0xfffd, "" },
+ { 0x00e4, "" },
+ { 0x010b, "cabovedot" },
+ { 0x0109, "ccircumflex" },
+ { 0x00e7, "" },
+ { 0x00e8, "" },
+ { 0x00e9, "" },
+ { 0x00ea, "" },
+ { 0x00eb, "" },
+ { 0x00ec, "" },
+ { 0x00ed, "" },
+ { 0x00ee, "" },
+ { 0x00ef, "" },
+ { 0xfffd, "" },
+ { 0x00f1, "" },
+ { 0x00f2, "" },
+ { 0x00f3, "" },
+ { 0x00f4, "" },
+ { 0x0121, "gabovedot" },
+ { 0x00f6, "" },
+ { 0x00f7, "" },
+ { 0x011d, "gcircumflex" },
+ { 0x00f9, "" },
+ { 0x00fa, "" },
+ { 0x00fb, "" },
+ { 0x00fc, "" },
+ { 0x016d, "ubreve" },
+ { 0x015d, "scircumflex" },
+ { 0x02d9, "" }
};
-static char *latin4_syms[] = {
- "", "", "kra", "Rcedilla", "", "Itilde", "Lcedilla", "",
- "", "", "Emacron", "Gcedilla", "Tslash", "", "", "",
- "", "", "", "rcedilla", "", "itilde", "lcedilla", "",
- "", "", "emacron", "gcedilla", "tslash", "ENG", "", "eng",
- "Amacron", "", "", "", "", "", "", "Iogonek",
- "", "", "", "", "Eabovedot", "", "", "Imacron",
- "", "Ncedilla", "Omacron", "Kcedilla", "", "", "", "",
- "", "Uogonek", "", "", "", "Utilde", "Umacron", "",
- "amacron", "", "", "", "", "", "", "iogonek",
- "", "", "", "", "eabovedot", "", "", "imacron",
- "", "ncedilla", "omacron", "kcedilla", "", "", "", "",
- "", "uogonek", "", "", "", "utilde", "umacron", ""
+static sym latin4_syms[] = {
+ { 0x00a0, "" },
+ { 0x0104, "" },
+ { 0x0138, "kra" },
+ { 0x0156, "Rcedilla" },
+ { 0x00a4, "" },
+ { 0x0128, "Itilde" },
+ { 0x013b, "Lcedilla" },
+ { 0x00a7, "" },
+ { 0x00a8, "" },
+ { 0x0160, "" },
+ { 0x0112, "Emacron" },
+ { 0x0122, "Gcedilla" },
+ { 0x0166, "Tslash" },
+ { 0x00ad, "" },
+ { 0x017d, "" },
+ { 0x00af, "" },
+ { 0x00b0, "" },
+ { 0x0105, "" },
+ { 0x02db, "" },
+ { 0x0157, "rcedilla" },
+ { 0x00b4, "" },
+ { 0x0129, "itilde" },
+ { 0x013c, "lcedilla" },
+ { 0x02c7, "" },
+ { 0x00b8, "" },
+ { 0x0161, "" },
+ { 0x0113, "emacron" },
+ { 0x0123, "gcedilla" },
+ { 0x0167, "tslash" },
+ { 0x014a, "ENG" },
+ { 0x017e, "" },
+ { 0x014b, "eng" },
+ { 0x0100, "Amacron" },
+ { 0x00c1, "" },
+ { 0x00c2, "" },
+ { 0x00c3, "" },
+ { 0x00c4, "" },
+ { 0x00c5, "" },
+ { 0x00c6, "" },
+ { 0x012e, "Iogonek" },
+ { 0x010c, "" },
+ { 0x00c9, "" },
+ { 0x0118, "" },
+ { 0x00cb, "" },
+ { 0x0116, "Eabovedot" },
+ { 0x00cd, "" },
+ { 0x00ce, "" },
+ { 0x012a, "Imacron" },
+ { 0x0110, "" },
+ { 0x0145, "Ncedilla" },
+ { 0x014c, "Omacron" },
+ { 0x0136, "Kcedilla" },
+ { 0x00d4, "" },
+ { 0x00d5, "" },
+ { 0x00d6, "" },
+ { 0x00d7, "" },
+ { 0x00d8, "" },
+ { 0x0172, "Uogonek" },
+ { 0x00da, "" },
+ { 0x00db, "" },
+ { 0x00dc, "" },
+ { 0x0168, "Utilde" },
+ { 0x016a, "Umacron" },
+ { 0x00df, "" },
+ { 0x0101, "amacron" },
+ { 0x00e1, "" },
+ { 0x00e2, "" },
+ { 0x00e3, "" },
+ { 0x00e4, "" },
+ { 0x00e5, "" },
+ { 0x00e6, "" },
+ { 0x012f, "iogonek" },
+ { 0x010d, "" },
+ { 0x00e9, "" },
+ { 0x0119, "" },
+ { 0x00eb, "" },
+ { 0x0117, "eabovedot" },
+ { 0x00ed, "" },
+ { 0x00ee, "" },
+ { 0x012b, "imacron" },
+ { 0x0111, "" },
+ { 0x0146, "ncedilla" },
+ { 0x014d, "omacron" },
+ { 0x0137, "kcedilla" },
+ { 0x00f4, "" },
+ { 0x00f5, "" },
+ { 0x00f6, "" },
+ { 0x00f7, "" },
+ { 0x00f8, "" },
+ { 0x0173, "uogonek" },
+ { 0x00fa, "" },
+ { 0x00fb, "" },
+ { 0x00fc, "" },
+ { 0x0169, "utilde" },
+ { 0x016b, "umacron" },
+ { 0x02d9, "" }
};
-static char *iso_8859_5_syms[] = { /* 160-255 */
- "no-break_space", /* 0240 */
- "cyrillic_capital_letter_io",
- "serbocroatian_cyrillic_capital_letter_dje",
- "macedonian_cyrillic_capital_letter_gje",
- "ukrainian_cyrillic_capital_letter_ie",
- "macedonian_cyrillic_capital_letter_dze",
- "ukrainian_cyrillic_capital_letter_i",
- "ukrainian_cyrillic_capital_letter_yi",
- "cyrillic_capital_letter_je", /* 0250 */
- "cyrillic_capital_letter_lje",
- "cyrillic_capital_letter_nje",
- "serbocroatian_cyrillic_capital_letter_chje",
- "macedonian_cyrillic_capital_letter_kje",
- "soft_hyphen",
- "bielorussian_cyrillic_capital_letter_short_u",
- "cyrillic_capital_letter_dze",
- "cyrillic_capital_letter_a", /* 0260 */
- "cyrillic_capital_letter_be",
- "cyrillic_capital_letter_ve",
- "cyrillic_capital_letter_ghe",
- "cyrillic_capital_letter_de",
- "cyrillic_capital_letter_ie",
- "cyrillic_capital_letter_zhe",
- "cyrillic_capital_letter_ze",
- "cyrillic_capital_letter_i", /* 0270 */
- "cyrillic_capital_letter_short_i",
- "cyrillic_capital_letter_ka",
- "cyrillic_capital_letter_el",
- "cyrillic_capital_letter_em",
- "cyrillic_capital_letter_en",
- "cyrillic_capital_letter_o",
- "cyrillic_capital_letter_pe",
- "cyrillic_capital_letter_er", /* 0300 */
- "cyrillic_capital_letter_es",
- "cyrillic_capital_letter_te",
- "cyrillic_capital_letter_u",
- "cyrillic_capital_letter_ef",
- "cyrillic_capital_letter_ha",
- "cyrillic_capital_letter_tse",
- "cyrillic_capital_letter_che",
- "cyrillic_capital_letter_sha", /* 0310 */
- "cyrillic_capital_letter_shcha",
- "cyrillic_capital_hard_sign",
- "cyrillic_capital_letter_yeru",
- "cyrillic_capital_soft_sign",
- "cyrillic_capital_letter_e",
- "cyrillic_capital_letter_yu",
- "cyrillic_capital_letter_ya",
- "cyrillic_small_letter_a", /* 0320 */
- "cyrillic_small_letter_be",
- "cyrillic_small_letter_ve",
- "cyrillic_small_letter_ghe",
- "cyrillic_small_letter_de",
- "cyrillic_small_letter_ie",
- "cyrillic_small_letter_zhe",
- "cyrillic_small_letter_ze",
- "cyrillic_small_letter_i", /* 0330 */
- "cyrillic_small_letter_short_i",
- "cyrillic_small_letter_ka",
- "cyrillic_small_letter_el",
- "cyrillic_small_letter_em",
- "cyrillic_small_letter_en",
- "cyrillic_small_letter_o",
- "cyrillic_small_letter_pe",
- "cyrillic_small_letter_er", /* 0340 */
- "cyrillic_small_letter_es",
- "cyrillic_small_letter_te",
- "cyrillic_small_letter_u",
- "cyrillic_small_letter_ef",
- "cyrillic_small_letter_ha",
- "cyrillic_small_letter_tse",
- "cyrillic_small_letter_che",
- "cyrillic_small_letter_sha", /* 0350 */
- "cyrillic_small_letter_shcha",
- "cyrillic_small_hard_sign",
- "cyrillic_small_letter_yeru",
- "cyrillic_small_soft_sign",
- "cyrillic_small_letter_e",
- "cyrillic_small_letter_yu",
- "cyrillic_small_letter_ya",
- "number_acronym", /* 0360 */
- "cyrillic_small_letter_io",
- "serbocroatian_cyrillic_small_letter_dje",
- "macedonian_cyrillic_small_letter_gje",
- "ukrainian_cyrillic_small_letter_ie",
- "macedonian_cyrillic_small_letter_dze",
- "ukrainian_cyrillic_small_letter_i",
- "ukrainian_cyrillic_small_letter_yi",
- "cyrillic_small_letter_je", /* 0370 */
- "cyrillic_small_letter_lje",
- "cyrillic_small_letter_nje",
- "serbocroatian_cyrillic_small_letter_chje",
- "macedonian_cyrillic_small_letter_kje",
- "paragraph_sign",
- "bielorussian_cyrillic_small_letter_short_u", /* printing error in ECMA-113 */
- "cyrillic_small_letter_dze"
+static sym iso_8859_5_syms[] = { /* 160-255 */
+ { 0x00a0, "no-break_space" }, /* 0240 */
+ { 0x0401, "cyrillic_capital_letter_io" },
+ { 0x0402, "serbocroatian_cyrillic_capital_letter_dje" },
+ { 0x0403, "macedonian_cyrillic_capital_letter_gje" },
+ { 0x0404, "ukrainian_cyrillic_capital_letter_ie" },
+ { 0x0405, "macedonian_cyrillic_capital_letter_dze" },
+ { 0x0406, "ukrainian_cyrillic_capital_letter_i" },
+ { 0x0407, "ukrainian_cyrillic_capital_letter_yi" },
+ { 0x0408, "cyrillic_capital_letter_je" }, /* 0250 */
+ { 0x0409, "cyrillic_capital_letter_lje" },
+ { 0x040a, "cyrillic_capital_letter_nje" },
+ { 0x040b, "serbocroatian_cyrillic_capital_letter_chje" },
+ { 0x040c, "macedonian_cyrillic_capital_letter_kje" },
+ { 0x00ad, "soft_hyphen" },
+ { 0x040e, "bielorussian_cyrillic_capital_letter_short_u" },
+ { 0x040f, "cyrillic_capital_letter_dze" },
+ { 0x0410, "cyrillic_capital_letter_a" }, /* 0260 */
+ { 0x0411, "cyrillic_capital_letter_be" },
+ { 0x0412, "cyrillic_capital_letter_ve" },
+ { 0x0413, "cyrillic_capital_letter_ghe" },
+ { 0x0414, "cyrillic_capital_letter_de" },
+ { 0x0415, "cyrillic_capital_letter_ie" },
+ { 0x0416, "cyrillic_capital_letter_zhe" },
+ { 0x0417, "cyrillic_capital_letter_ze" },
+ { 0x0418, "cyrillic_capital_letter_i" }, /* 0270 */
+ { 0x0419, "cyrillic_capital_letter_short_i" },
+ { 0x041a, "cyrillic_capital_letter_ka" },
+ { 0x041b, "cyrillic_capital_letter_el" },
+ { 0x041c, "cyrillic_capital_letter_em" },
+ { 0x041d, "cyrillic_capital_letter_en" },
+ { 0x041e, "cyrillic_capital_letter_o" },
+ { 0x041f, "cyrillic_capital_letter_pe" },
+ { 0x0420, "cyrillic_capital_letter_er" }, /* 0300 */
+ { 0x0421, "cyrillic_capital_letter_es" },
+ { 0x0422, "cyrillic_capital_letter_te" },
+ { 0x0423, "cyrillic_capital_letter_u" },
+ { 0x0424, "cyrillic_capital_letter_ef" },
+ { 0x0425, "cyrillic_capital_letter_ha" },
+ { 0x0426, "cyrillic_capital_letter_tse" },
+ { 0x0427, "cyrillic_capital_letter_che" },
+ { 0x0428, "cyrillic_capital_letter_sha" }, /* 0310 */
+ { 0x0429, "cyrillic_capital_letter_shcha" },
+ { 0x042a, "cyrillic_capital_hard_sign" },
+ { 0x042b, "cyrillic_capital_letter_yeru" },
+ { 0x042c, "cyrillic_capital_soft_sign" },
+ { 0x042d, "cyrillic_capital_letter_e" },
+ { 0x042e, "cyrillic_capital_letter_yu" },
+ { 0x042f, "cyrillic_capital_letter_ya" },
+ { 0x0430, "cyrillic_small_letter_a" }, /* 0320 */
+ { 0x0431, "cyrillic_small_letter_be" },
+ { 0x0432, "cyrillic_small_letter_ve" },
+ { 0x0433, "cyrillic_small_letter_ghe" },
+ { 0x0434, "cyrillic_small_letter_de" },
+ { 0x0435, "cyrillic_small_letter_ie" },
+ { 0x0436, "cyrillic_small_letter_zhe" },
+ { 0x0437, "cyrillic_small_letter_ze" },
+ { 0x0438, "cyrillic_small_letter_i" }, /* 0330 */
+ { 0x0439, "cyrillic_small_letter_short_i" },
+ { 0x043a, "cyrillic_small_letter_ka" },
+ { 0x043b, "cyrillic_small_letter_el" },
+ { 0x043c, "cyrillic_small_letter_em" },
+ { 0x043d, "cyrillic_small_letter_en" },
+ { 0x043e, "cyrillic_small_letter_o" },
+ { 0x043f, "cyrillic_small_letter_pe" },
+ { 0x0440, "cyrillic_small_letter_er" }, /* 0340 */
+ { 0x0441, "cyrillic_small_letter_es" },
+ { 0x0442, "cyrillic_small_letter_te" },
+ { 0x0443, "cyrillic_small_letter_u" },
+ { 0x0444, "cyrillic_small_letter_ef" },
+ { 0x0445, "cyrillic_small_letter_ha" },
+ { 0x0446, "cyrillic_small_letter_tse" },
+ { 0x0447, "cyrillic_small_letter_che" },
+ { 0x0448, "cyrillic_small_letter_sha" }, /* 0350 */
+ { 0x0449, "cyrillic_small_letter_shcha" },
+ { 0x044a, "cyrillic_small_hard_sign" },
+ { 0x044b, "cyrillic_small_letter_yeru" },
+ { 0x044c, "cyrillic_small_soft_sign" },
+ { 0x044d, "cyrillic_small_letter_e" },
+ { 0x044e, "cyrillic_small_letter_yu" },
+ { 0x044f, "cyrillic_small_letter_ya" },
+ { 0x2116, "number_acronym" }, /* 0360 */
+ { 0x0451, "cyrillic_small_letter_io" },
+ { 0x0452, "serbocroatian_cyrillic_small_letter_dje" },
+ { 0x0453, "macedonian_cyrillic_small_letter_gje" },
+ { 0x0454, "ukrainian_cyrillic_small_letter_ie" },
+ { 0x0455, "macedonian_cyrillic_small_letter_dze" },
+ { 0x0456, "ukrainian_cyrillic_small_letter_i" },
+ { 0x0457, "ukrainian_cyrillic_small_letter_yi" },
+ { 0x0458, "cyrillic_small_letter_je" }, /* 0370 */
+ { 0x0459, "cyrillic_small_letter_lje" },
+ { 0x045a, "cyrillic_small_letter_nje" },
+ { 0x045b, "serbocroatian_cyrillic_small_letter_chje" },
+ { 0x045c, "macedonian_cyrillic_small_letter_kje" },
+ { 0x00a7, "paragraph_sign" },
+ { 0x045e, "bielorussian_cyrillic_small_letter_short_u" }, /* printing error in ECMA-113 */
+ { 0x045f, "cyrillic_small_letter_dze" }
};
-static char *iso_8859_7_syms[] = { /* 160-255 */
- "", "leftquote", "rightquote", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "accent", "diaeresisaccent", "Alphaaccent", "",
- "Epsilonaccent", "Etaaccent", "Iotaaccent", "rightanglequote", "Omicronaccent", "onehalf", "Upsilonaccent", "Omegaaccent",
- "iotadiaeresisaccent", "Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta",
- "Theta", "Iota", "Kappa", "Lamda" /*sic*/, "Mu", "Nu", "Ksi", "Omicron",
- "Pi", "Rho", "", "Sigma", "Tau", "Upsilon", "Phi", "Khi",
- "Psi", "Omega", "Iotadiaeresis", "Upsilondiaeresis", "alphaaccent", "epsilonaccent", "etaaccent", "iotaaccent",
- "upsilondiaeresisaccent", "alpha", "beta", "gamma", "delta", "epsilon", "zeta", "eta",
- "theta", "iota", "kappa", "lamda" /*sic*/, "mu", "nu", "ksi", "omicron",
- "pi", "rho", "terminalsigma", "sigma", "tau", "upsilon", "phi", "khi",
- "psi", "omega", "iotadiaeresis", "upsilondiaeresis", "omicronaccent", "upsilonaccent", "omegaaccent", ""
+static sym iso_8859_7_syms[] = { /* 160-255 */
+ { 0x00a0, "" },
+ { 0x02bd, "leftquote" },
+ { 0x02bc, "rightquote" },
+ { 0x00a3, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0x00a6, "" },
+ { 0x00a7, "" },
+ { 0x00a8, "" },
+ { 0x00a9, "" },
+ { 0xfffd, "" },
+ { 0x00ab, "" },
+ { 0x00ac, "" },
+ { 0x00ad, "" },
+ { 0xfffd, "" },
+ { 0x2015, "" },
+ { 0x00b0, "" },
+ { 0x00b1, "" },
+ { 0x00b2, "" },
+ { 0x00b3, "" },
+ { 0x0384, "accent" },
+ { 0x0385, "diaeresisaccent" },
+ { 0x0386, "Alphaaccent" },
+ { 0x00b7, "" },
+ { 0x0388, "Epsilonaccent" },
+ { 0x0389, "Etaaccent" },
+ { 0x038a, "Iotaaccent" },
+ { 0x00bb, "rightanglequote" },
+ { 0x038c, "Omicronaccent" },
+ { 0x00bd, "onehalf" },
+ { 0x038e, "Upsilonaccent" },
+ { 0x038f, "Omegaaccent" },
+ { 0x0390, "iotadiaeresisaccent" },
+ { 0x0391, "Alpha" },
+ { 0x0392, "Beta" },
+ { 0x0393, "Gamma" },
+ { 0x0394, "Delta" },
+ { 0x0395, "Epsilon" },
+ { 0x0396, "Zeta" },
+ { 0x0397, "Eta" },
+ { 0x0398, "Theta" },
+ { 0x0399, "Iota" },
+ { 0x039a, "Kappa" },
+ { 0x039b, "Lamda" /*sic*/ },
+ { 0x039c, "Mu" },
+ { 0x039d, "Nu" },
+ { 0x039e, "Ksi" },
+ { 0x039f, "Omicron" },
+ { 0x03a0, "Pi" },
+ { 0x03a1, "Rho" },
+ { 0xfffd, "" },
+ { 0x03a3, "Sigma" },
+ { 0x03a4, "Tau" },
+ { 0x03a5, "Upsilon" },
+ { 0x03a6, "Phi" },
+ { 0x03a7, "Khi" },
+ { 0x03a8, "Psi" },
+ { 0x03a9, "Omega" },
+ { 0x03aa, "Iotadiaeresis" },
+ { 0x03ab, "Upsilondiaeresis" },
+ { 0x03ac, "alphaaccent" },
+ { 0x03ad, "epsilonaccent" },
+ { 0x03ae, "etaaccent" },
+ { 0x03af, "iotaaccent" },
+ { 0x03b0, "upsilondiaeresisaccent" },
+ { 0x03b1, "alpha" },
+ { 0x03b2, "beta" },
+ { 0x03b3, "gamma" },
+ { 0x03b4, "delta" },
+ { 0x03b5, "epsilon" },
+ { 0x03b6, "zeta" },
+ { 0x03b7, "eta" },
+ { 0x03b8, "theta" },
+ { 0x03b9, "iota" },
+ { 0x03ba, "kappa" },
+ { 0x03bb, "lamda" /*sic*/ },
+ { 0x03bc, "mu" },
+ { 0x03bd, "nu" },
+ { 0x03be, "ksi" },
+ { 0x03bf, "omicron" },
+ { 0x03c0, "pi" },
+ { 0x03c1, "rho" },
+ { 0x03c2, "terminalsigma" },
+ { 0x03c3, "sigma" },
+ { 0x03c4, "tau" },
+ { 0x03c5, "upsilon" },
+ { 0x03c6, "phi" },
+ { 0x03c7, "khi" },
+ { 0x03c8, "psi" },
+ { 0x03c9, "omega" },
+ { 0x03ca, "iotadiaeresis" },
+ { 0x03cb, "upsilondiaeresis" },
+ { 0x03cc, "omicronaccent" },
+ { 0x03cd, "upsilonaccent" },
+ { 0x03ce, "omegaaccent" },
+ { 0xfffd, "" }
};
-static char *iso_8859_8_syms[] = {
- "", "", "", "", "", "", "", "",
- "", "", "multiplication", "", "", "", "", "overscore",
- "", "", "", "", "", "", "", "",
- "", "", "division", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "doubleunderscore",
- "alef", "bet", "gimel", "dalet", "he", "vav", "zayin", "het",
- "tet", "yod", "finalkaf", "kaf", "lamed", "finalmem", "mem", "finalnun",
- "nun", "samekh", "ayin", "finalpe", "pe", "finaltsadi", "tsadi", "qof",
- "resh", "shin", "tav", "", "", "", "", ""
+static sym iso_8859_8_syms[] = {
+ { 0x00a0, "" },
+ { 0xfffd, "" },
+ { 0x00a2, "" },
+ { 0x00a3, "" },
+ { 0x00a4, "" },
+ { 0x00a5, "" },
+ { 0x00a6, "" },
+ { 0x00a7, "" },
+ { 0x00a8, "" },
+ { 0x00a9, "" },
+ { 0x00d7, "multiplication" },
+ { 0x00ab, "" },
+ { 0x00ac, "" },
+ { 0x00ad, "" },
+ { 0x00ae, "" },
+ { 0x203e, "overscore" },
+ { 0x00b0, "" },
+ { 0x00b1, "" },
+ { 0x00b2, "" },
+ { 0x00b3, "" },
+ { 0x00b4, "" },
+ { 0x00b5, "" },
+ { 0x00b6, "" },
+ { 0x00b7, "" },
+ { 0x00b8, "" },
+ { 0x00b9, "" },
+ { 0x00f7, "division" },
+ { 0x00bb, "" },
+ { 0x00bc, "" },
+ { 0x00bd, "" },
+ { 0x00be, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0x2017, "doubleunderscore" },
+ { 0x05d0, "alef" },
+ { 0x05d1, "bet" },
+ { 0x05d2, "gimel" },
+ { 0x05d3, "dalet" },
+ { 0x05d4, "he" },
+ { 0x05d5, "vav" },
+ { 0x05d6, "zayin" },
+ { 0x05d7, "het" },
+ { 0x05d8, "tet" },
+ { 0x05d9, "yod" },
+ { 0x05da, "finalkaf" },
+ { 0x05db, "kaf" },
+ { 0x05dc, "lamed" },
+ { 0x05dd, "finalmem" },
+ { 0x05de, "mem" },
+ { 0x05df, "finalnun" },
+ { 0x05e0, "nun" },
+ { 0x05e1, "samekh" },
+ { 0x05e2, "ayin" },
+ { 0x05e3, "finalpe" },
+ { 0x05e4, "pe" },
+ { 0x05e5, "finaltsadi" },
+ { 0x05e6, "tsadi" },
+ { 0x05e7, "qof" },
+ { 0x05e8, "resh" },
+ { 0x05e9, "shin" },
+ { 0x05ea, "tav" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" },
+ { 0xfffd, "" }
};
-static char *iso_8859_9_syms[] = { /* latin-5 */
+static sym iso_8859_9_syms[] = { /* latin-5 */
/* Identical to latin-1, but with the 6 symbols
ETH, eth, THORN, thorn, Yacute, yacute replaced by
Gbreve, gbreve, Scedilla, scedilla, Idotabove, dotlessi */
- "Gbreve", "", "", "", "", "", "", "", /* 0320-0327 */
- "", "", "", "", "", "Idotabove", "Scedilla", "",
- "", "", "", "", "", "", "", "", /* 0340-0347 */
- "", "", "", "", "", "", "", "", /* 0350-0357 */
- "gbreve", "", "", "", "", "", "", "", /* 0360-0367 */
- "", "", "", "", "", "dotlessi", "scedilla", ""
+ { 0x011e, "Gbreve" },
+ { 0x00d1, "" },
+ { 0x00d2, "" },
+ { 0x00d3, "" },
+ { 0x00d4, "" },
+ { 0x00d5, "" },
+ { 0x00d6, "" },
+ { 0x00d7, "" },
+ { 0x00d8, "" },
+ { 0x00d9, "" },
+ { 0x00da, "" },
+ { 0x00db, "" },
+ { 0x00dc, "" },
+ { 0x0130, "Idotabove" },
+ { 0x015e, "Scedilla" },
+ { 0x00df, "" },
+ { 0x00e0, "" },
+ { 0x00e1, "" },
+ { 0x00e2, "" },
+ { 0x00e3, "" },
+ { 0x00e4, "" },
+ { 0x00e5, "" },
+ { 0x00e6, "" },
+ { 0x00e7, "" },
+ { 0x00e8, "" },
+ { 0x00e9, "" },
+ { 0x00ea, "" },
+ { 0x00eb, "" },
+ { 0x00ec, "" },
+ { 0x00ed, "" },
+ { 0x00ee, "" },
+ { 0x00ef, "" },
+ { 0x011f, "gbreve" },
+ { 0x00f1, "" },
+ { 0x00f2, "" },
+ { 0x00f3, "" },
+ { 0x00f4, "" },
+ { 0x00f5, "" },
+ { 0x00f6, "" },
+ { 0x00f7, "" },
+ { 0x00f8, "" },
+ { 0x00f9, "" },
+ { 0x00fa, "" },
+ { 0x00fb, "" },
+ { 0x00fc, "" },
+ { 0x0131, "dotlessi" },
+ { 0x015f, "scedilla" },
+ { 0x00ff, "" }
};
-#include "cyrillic.syms.h"
+#include "koi8.syms.h"
#include "ethiopic.syms.h"
-static char *fn_syms[] = {
+static sym iso_8859_15_syms[] = {
+ /* latin-1 with 8 changes */
+ { 0x00a0, "" },
+ { 0x00a1, "" },
+ { 0x00a2, "" },
+ { 0x00a3, "" },
+ { 0x20ac, "euro" },
+ { 0x00a5, "" },
+ { 0x0160, "Scaron" },
+ { 0x00a7, "" },
+ { 0x0161, "scaron" },
+ { 0x00a9, "" },
+ { 0x00aa, "" },
+ { 0x00ab, "" },
+ { 0x00ac, "" },
+ { 0x00ad, "" },
+ { 0x00ae, "" },
+ { 0x00af, "" },
+ { 0x00b0, "" },
+ { 0x00b1, "" },
+ { 0x00b2, "" },
+ { 0x00b3, "" },
+ { 0x017d, "Zcaron" },
+ { 0x00b5, "" },
+ { 0x00b6, "" },
+ { 0x00b7, "" },
+ { 0x017e, "zcaron" },
+ { 0x00b9, "" },
+ { 0x00ba, "" },
+ { 0x00bb, "" },
+ { 0x0152, "OE" },
+ { 0x0153, "oe" },
+ { 0x0178, "Ydiaeresis" },
+ { 0x00bf, "" },
+ { 0x00c0, "" },
+ { 0x00c1, "" },
+ { 0x00c2, "" },
+ { 0x00c3, "" },
+ { 0x00c4, "" },
+ { 0x00c5, "" },
+ { 0x00c6, "" },
+ { 0x00c7, "" },
+ { 0x00c8, "" },
+ { 0x00c9, "" },
+ { 0x00ca, "" },
+ { 0x00cb, "" },
+ { 0x00cc, "" },
+ { 0x00cd, "" },
+ { 0x00ce, "" },
+ { 0x00cf, "" },
+ { 0x00d0, "" },
+ { 0x00d1, "" },
+ { 0x00d2, "" },
+ { 0x00d3, "" },
+ { 0x00d4, "" },
+ { 0x00d5, "" },
+ { 0x00d6, "" },
+ { 0x00d7, "" },
+ { 0x00d8, "" },
+ { 0x00d9, "" },
+ { 0x00da, "" },
+ { 0x00db, "" },
+ { 0x00dc, "" },
+ { 0x00dd, "" },
+ { 0x00de, "" },
+ { 0x00df, "" },
+ { 0x00e0, "" },
+ { 0x00e1, "" },
+ { 0x00e2, "" },
+ { 0x00e3, "" },
+ { 0x00e4, "" },
+ { 0x00e5, "" },
+ { 0x00e6, "" },
+ { 0x00e7, "" },
+ { 0x00e8, "" },
+ { 0x00e9, "" },
+ { 0x00ea, "" },
+ { 0x00eb, "" },
+ { 0x00ec, "" },
+ { 0x00ed, "" },
+ { 0x00ee, "" },
+ { 0x00ef, "" },
+ { 0x00f0, "" },
+ { 0x00f1, "" },
+ { 0x00f2, "" },
+ { 0x00f3, "" },
+ { 0x00f4, "" },
+ { 0x00f5, "" },
+ { 0x00f6, "" },
+ { 0x00f7, "" },
+ { 0x00f8, "" },
+ { 0x00f9, "" },
+ { 0x00fa, "" },
+ { 0x00fb, "" },
+ { 0x00fc, "" },
+ { 0x00fd, "" },
+ { 0x00fe, "" },
+ { 0x00ff, "" }
+};
+
+/* Keysyms whose KTYP is KT_FN. */
+
+static const char *fn_syms[] = {
"F1", "F2", "F3", "F4", "F5",
"F6", "F7", "F8", "F9", "F10",
"F11", "F12", "F13", "F14", "F15",
"F246" /* there are 10 keys named Insert etc., total 256 */
};
-static char *spec_syms[] = {
+/* Keysyms whose KTYP is KT_SPEC. */
+
+static const char *spec_syms[] = {
"VoidSymbol",
"Return",
"Show_Registers",
"Bare_Num_Lock"
};
-static char *pad_syms[] = {
+/* Keysyms whose KTYP is KT_PAD. */
+
+static const char *pad_syms[] = {
"KP_0",
"KP_1",
"KP_2",
"KP_MinPlus"
};
-static char *dead_syms[] = {
+/* Keysyms whose KTYP is KT_DEAD. */
+
+static const char *dead_syms[] = {
"dead_grave",
"dead_acute",
"dead_circumflex",
"dead_cedilla"
};
-static char *cons_syms[] = {
+/* Keysyms whose KTYP is KT_CONS. */
+
+static const char *cons_syms[] = {
"Console_1",
"Console_2",
"Console_3",
"Console_63"
};
-static char *cur_syms[] = {
+/* Keysyms whose KTYP is KT_CUR. */
+
+static const char *cur_syms[] = {
"Down",
"Left",
"Right",
"Up"
};
-static char *shift_syms[] = {
+/* Keysyms whose KTYP is KT_SHIFT. */
+
+static const char *shift_syms[] = {
"Shift",
"AltGr",
"Control",
"CapsShift"
};
-static char *ascii_syms[] = {
+/* Keysyms whose KTYP is KT_ASCII. */
+
+static const char *ascii_syms[] = {
"Ascii_0",
"Ascii_1",
"Ascii_2",
"Hex_F"
};
-static char *lock_syms[] = {
+/* Keysyms whose KTYP is KT_LOCK. */
+
+static const char *lock_syms[] = {
"Shift_Lock",
"AltGr_Lock",
"Control_Lock",
"CtrlR_Lock"
};
-static char *sticky_syms[] = {
+/* Keysyms whose KTYP is KT_SLOCK. */
+
+static const char *sticky_syms[] = {
"SShift",
"SAltGr",
"SControl",
"SCtrlR"
};
-#define E(x) { x, sizeof(x) / sizeof(char **) }
+#define E(x) { x, sizeof(x) / sizeof(x[0]) }
syms_entry syms[] = {
- E(latin1_syms),
- E(fn_syms),
- E(spec_syms),
- E(pad_syms),
- E(dead_syms),
- E(cons_syms),
- E(cur_syms),
- E(shift_syms),
+ E(iso646_syms), /* KT_LATIN */
+ E(fn_syms), /* KT_FN */
+ E(spec_syms), /* KT_SPEC */
+ E(pad_syms), /* KT_PAD */
+ E(dead_syms), /* KT_DEAD */
+ E(cons_syms), /* KT_CONS */
+ E(cur_syms), /* KT_CUR */
+ E(shift_syms), /* KT_SHIFT */
{ 0, 0 }, /* KT_META */
- E(ascii_syms),
- E(lock_syms),
+ E(ascii_syms), /* KT_ASCII */
+ E(lock_syms), /* KT_LOCK */
{ 0, 0 }, /* KT_LETTER */
- E(sticky_syms)
+ E(sticky_syms) /* KT_SLOCK */
};
#undef E
const int syn_size = sizeof(synonyms) / sizeof(synonyms[0]);
struct cs {
- char *charset;
- char **charnames;
+ const char *charset;
+ sym *charnames;
int start;
} charsets[] = {
- { "iso-8859-1", 0, 0 },
- { "mazovia", mazovia_syms, 128 },
+ { "iso-8859-1", latin1_syms, 160 },
{ "iso-8859-2", latin2_syms, 160 },
{ "iso-8859-3", latin3_syms, 160 },
{ "iso-8859-4", latin4_syms, 160 },
{ "iso-8859-7", iso_8859_7_syms, 160 },
{ "iso-8859-8", iso_8859_8_syms, 160 },
{ "iso-8859-9", iso_8859_9_syms, 208 },
- { "koi8-r", koi8_r_syms, 160 },
- { "koi8-u", koi8_r_syms, 160 },
-/* I don't know the differences between koi8-r and koi8-u,
- so I use the same syms table - Pablo Saratxaga */
+ { "iso-8859-15", iso_8859_15_syms, 160 },
+ { "mazovia", mazovia_syms, 128 },
+ { "koi8-r", koi8_syms, 128 },
+ { "koi8-u", koi8_syms, 128 },
{ "iso-10646-18", iso_10646_18_syms, 159 }, /* ethiopic */
};
+/* Functions for both dumpkeys and loadkeys. */
+
+static int prefer_unicode = 0;
+static const char *chosen_charset = NULL;
+
+void
+list_charsets(FILE *f) {
+ int i,j,lth,ct;
+ char *mm[] = { "iso-8859-", "koi8-" };
+
+ for (j=0; j<sizeof(mm)/sizeof(mm[0]); j++) {
+ if(j)
+ fprintf(f, ",");
+ fprintf(f, "%s{", mm[j]);
+ ct = 0;
+ lth = strlen(mm[j]);
+ for(i=0; i < sizeof(charsets)/sizeof(charsets[0]); i++) {
+ if(!strncmp(charsets[i].charset, mm[j], lth)) {
+ if(ct++)
+ fprintf(f, ",");
+ fprintf(f, charsets[i].charset+lth);
+ }
+ }
+ fprintf(f, "}");
+ }
+ for(i=0; i < sizeof(charsets)/sizeof(charsets[0]); i++) {
+ for (j=0; j<sizeof(mm)/sizeof(mm[0]); j++) {
+ lth = strlen(mm[j]);
+ if(!strncmp(charsets[i].charset, mm[j], lth))
+ goto nxti;
+ }
+ fprintf(f, ",%s", charsets[i].charset);
+ nxti:;
+ }
+ fprintf(f, "\n");
+}
+
int
-set_charset(char *charset) {
- char **p;
+set_charset(const char *charset) {
+ sym *p;
int i;
+ if (!strcasecmp(charset, "unicode")) {
+ prefer_unicode = 1;
+ return 0;
+ }
+
for (i = 0; i < sizeof(charsets)/sizeof(charsets[0]); i++) {
- if (!strcasecmp(charsets[i].charset, charset)) {
- p = charsets[i].charnames;
- if (p)
- for (i = charsets[i].start; i < 256; i++,p++) {
- if(*p && **p)
- syms[0].table[i] = *p;
+ if (!strcasecmp(charsets[i].charset, charset)) {
+ p = charsets[i].charnames;
+ for (i = charsets[i].start; i < 256; i++,p++) {
+ if(p->name[0])
+ syms[0].table[i] = p->name;
+ }
+ chosen_charset = charset;
+ return 0;
}
- return 0;
- }
}
- if (!strcasecmp(charset, "unicode")) {
- fprintf (stderr, _("unknown charset %s - ignoring charset request\n"),
- charset);
- return 1;
+ fprintf (stderr, _("unknown charset %s - ignoring charset request\n"),
+ charset);
+ return 1;
+}
+
+const char *
+unicodetoksym(int code) {
+ int i, j;
+ sym *p;
+
+ if (code < 0)
+ return NULL;
+ if (code < 0x80)
+ return iso646_syms[code];
+ for (i = 0; i < sizeof(charsets)/sizeof(charsets[0]); i++) {
+ p = charsets[i].charnames;
+ for (j = charsets[i].start; j < 256; j++, p++) {
+ if (p->uni == code && p->name[0])
+ return p->name;
+ }
}
- return 0;
+ return NULL;
}
+/* Functions for loadkeys. */
+
+int unicode_used = 0;
+
int
-ksymtocode(char *s)
-{
+ksymtocode(const char *s) {
int i;
- int j;
+ int j, jmax;
int keycode;
- static int warn = 0;
+ sym *p;
if (!strncmp(s, "Meta_", 5)) {
keycode = ksymtocode(s+5);
/* fall through to error printf */
}
- for (i = 0; i < syms_size; i++)
- for (j = 0; j < syms[i].size; j++)
+ for (i = 0; i < syms_size; i++) {
+ jmax = ((i == 0 && prefer_unicode) ? 128 : syms[i].size);
+ for (j = 0; j < jmax; j++)
if (!strcmp(s,syms[i].table[j]))
return K(i, j);
+ }
for (i = 0; i < syn_size; i++)
if (!strcmp(s, synonyms[i].synonym))
return ksymtocode(synonyms[i].official_name);
- for (i = 0; i < 256 - 160; i++)
- if (!strcmp(s, latin2_syms[i])) {
- if(!warn++)
- fprintf(stderr, _("assuming iso-8859-2 %s\n"), s);
- return K(KT_LATIN, 160 + i);
+ if (prefer_unicode) {
+ for (i = 0; i < sizeof(charsets)/sizeof(charsets[0]); i++) {
+ p = charsets[i].charnames;
+ for (j = charsets[i].start; j < 256; j++, p++)
+ if (!strcmp(s,p->name)) {
+ unicode_used = 1;
+ return (p->uni ^ 0xf000); /* %%% */
+ }
}
+ } else /* if (!chosen_charset) */ {
+ /* note: some keymaps use latin1 but with euro,
+ so set_charset() would fail */
+ /* note: some keymaps with charset line still use
+ symbols from more than one character set,
+ so we cannot have the `if (!chosen_charset)' here */
- for (i = 0; i < 256 - 160; i++)
- if (!strcmp(s, latin3_syms[i])) {
- if(!warn++)
- fprintf(stderr, _("assuming iso-8859-3 %s\n"), s);
- return K(KT_LATIN, 160 + i);
- }
+ for (i = 0; i < 256 - 160; i++)
+ if (!strcmp(s, latin1_syms[i].name)) {
+ fprintf(stderr,
+ _("assuming iso-8859-1 %s\n"), s);
+ return K(KT_LATIN, 160 + i);
+ }
- for (i = 0; i < 256 - 160; i++)
- if (!strcmp(s, latin4_syms[i])) {
- if(!warn++)
- fprintf(stderr, _("assuming iso-8859-4 %s\n"), s);
- return K(KT_LATIN, 160 + i);
- }
+ for (i = 0; i < 256 - 160; i++)
+ if (!strcmp(s, iso_8859_15_syms[i].name)) {
+ fprintf(stderr,
+ _("assuming iso-8859-15 %s\n"), s);
+ return K(KT_LATIN, 160 + i);
+ }
+
+ for (i = 0; i < 256 - 160; i++)
+ if (!strcmp(s, latin2_syms[i].name)) {
+ fprintf(stderr,
+ _("assuming iso-8859-2 %s\n"), s);
+ return K(KT_LATIN, 160 + i);
+ }
+
+ for (i = 0; i < 256 - 160; i++)
+ if (!strcmp(s, latin3_syms[i].name)) {
+ fprintf(stderr,
+ _("assuming iso-8859-3 %s\n"), s);
+ return K(KT_LATIN, 160 + i);
+ }
+
+ for (i = 0; i < 256 - 160; i++)
+ if (!strcmp(s, latin4_syms[i].name)) {
+ fprintf(stderr,
+ _("assuming iso-8859-4 %s\n"), s);
+ return K(KT_LATIN, 160 + i);
+ }
+ }
fprintf(stderr, _("unknown keysym '%s'\n"), s);
return -1;
}
+
+int
+unicodetocode(int code) {
+ const char *s;
+
+ s = unicodetoksym(code);
+ if (s)
+ return ksymtocode(s);
+ else {
+ unicode_used = 1;
+ return (code ^ 0xf000); /* %%% */
+ }
+}
+
+int
+add_capslock(int code)
+{
+ char buf[7];
+ const char *p;
+
+ if (KTYP(code) == KT_LATIN)
+ return K(KT_LETTER, KVAL(code));
+ if (KTYP(code) >= syms_size) {
+ if ((p = unicodetoksym(code ^ 0xf000)) == NULL) {
+ sprintf(buf, "U+%04x", code ^ 0xf000);
+ p = buf;
+ }
+ } else {
+ sprintf(buf, "0x%04x", code);
+ p = buf;
+ }
+ fprintf(stderr, _("plus before %s ignored\n"), p);
+ return code;
+}
+#ifndef KSYMS_H
+#define KSYMS_H
+
+typedef struct {
+ unsigned short uni;
+ const char *name;
+} sym;
+
typedef struct {
- char **table;
+ const char **table;
int size;
} syms_entry;
extern syms_entry syms[];
struct syn {
- char *synonym;
- char *official_name;
+ const char *synonym;
+ const char *official_name;
};
extern struct syn synonyms[];
extern const int syms_size;
extern const int syn_size;
-extern int set_charset(char *name);
+extern int set_charset(const char *name);
+extern const char *unicodetoksym(int code);
+extern void list_charsets(FILE *f);
+extern int ksymtocode(const char *s);
+extern int unicodetocode(int code);
+extern int add_capslock(int code);
+
+#endif
#include <sys/ioctl.h>
#include <ctype.h>
#include "paths.h"
+#include "getfd.h"
+#include "findfile.h"
#include "modifiers.h"
#include "nls.h"
+#include "version.h"
#ifndef KT_LETTER
#define KT_LETTER KT_LATIN
#endif
-/* name to use in error messages */
-char *progname;
-
/* What keymaps are we defining? */
char defining[MAX_NR_KEYMAPS];
char keymaps_line_seen = 0;
#undef ECHO
#include "analyze.c"
-#define VERSION "0.99"
-
static void addmap(int map, int explicit);
static void addkey(int index, int table, int keycode);
static void addfunc(struct kbsentry kbs_buf);
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(char *, int);
-extern int set_charset(char *charset);
+static void lkfatal0(const char *, int);
+extern int set_charset(const char *charset);
extern int getfd(void);
extern char *xstrdup(char *);
int key_buf[MAX_NR_KEYMAPS];
int mod;
-int unicode_used;
+extern int unicode_used;
int private_error_ct = 0;
%}
| UNUMBER
{$$=($1 ^ 0xf000); unicode_used=1;}
| PLUS NUMBER
- {$$=K(KT_LETTER, KVAL($2));}
+ {$$=add_capslock($2);}
| LITERAL
{$$=$1;}
| PLUS LITERAL
- {$$=K(KT_LETTER, KVAL($2));}
+ {$$=add_capslock($2);}
;
%%
" -h --help display this help text\n"
" -m --mktable output a \"defkeymap.c\" to stdout\n"
" -s --clearstrings clear kernel string table\n"
+" -u --unicode implicit conversion to Unicode\n"
" -v --verbose report the changes\n"), VERSION);
exit(1);
}
int
main(unsigned int argc, char *argv[]) {
- const char *short_opts = "cdhmsqv";
+ const char *short_opts = "cdhmsuqvV";
const struct option long_opts[] = {
{ "clearcompose", no_argument, NULL, 'c' },
{ "default", no_argument, NULL, 'd' },
{ "help", no_argument, NULL, 'h' },
{ "mktable", no_argument, NULL, 'm' },
{ "clearstrings", no_argument, NULL, 's' },
+ { "unicode", no_argument, NULL, 'u' },
{ "quiet", no_argument, NULL, 'q' },
{ "verbose", no_argument, NULL, 'v' },
+ { "version", no_argument, NULL, 'V' },
{ NULL, 0, NULL, 0 }
};
int c;
- progname = argv[0];
+ set_progname(argv[0]);
while ((c = getopt_long(argc, argv,
short_opts, long_opts, NULL)) != -1) {
case 's':
opts = 1;
break;
+ case 'u':
+ set_charset("unicode");
+ break;
case 'q':
quiet = 1;
break;
case 'v':
verbose++;
break;
+ case 'V':
+ print_version_and_exit();
case 'h':
case '?':
usage();
int line_nr = 1;
int
-yyerror(char *s) {
+yyerror(const char *s) {
fprintf(stderr, "%s:%d: %s\n", filename, line_nr, s);
private_error_ct++;
return(0);
/* fatal errors - change to varargs next time */
void
-lkfatal(char *s) {
+lkfatal(const char *s) {
fprintf(stderr, "%s: %s:%d: %s\n", progname, filename, line_nr, s);
exit(1);
}
void
-lkfatal0(char *s, int d) {
+lkfatal0(const char *s, int d) {
fprintf(stderr, "%s: %s:%d: ", progname, filename, line_nr);
fprintf(stderr, s, d);
fprintf(stderr, "\n");
}
void
-lkfatal1(char *s, char *s2) {
+lkfatal1(const char *s, const char *s2) {
fprintf(stderr, "%s: %s:%d: ", progname, filename, line_nr);
fprintf(stderr, s, s2);
fprintf(stderr, "\n");
static void strings_as_usual(void) {
/*
- * 28 strings, mostly inspired by the VT100 family
+ * 26 strings, mostly inspired by the VT100 family
*/
char *stringvalues[30] = {
/* F1 .. F20 */
/* Find, Insert, Remove, Select, Prior */
"\033[1~", "\033[2~", "\033[3~", "\033[4~", "\033[5~",
/* Next, Macro, Help, Do, Pause */
- "\033[6~", "\033[M", 0, 0, "\033[P"
+ "\033[6~", 0, 0, 0, 0
};
int i;
for (i=0; i<30; i++) if(stringvalues[i]) {
/*
* loadunimap.c - aeb
*
- * Version 0.97
+ * Version 1.00
*/
#include <errno.h>
#include <linux/kd.h>
#include <sys/ioctl.h>
#include "paths.h"
+#include "getfd.h"
+#include "xmalloc.h"
+#include "findfile.h"
+#include "psffontop.h"
+#include "loadunimap.h"
#include "psf.h"
#include "nls.h"
-/* the three exported functions */
-void saveunicodemap(int fd, char *oufil); /* save humanly readable */
-void loadunicodemap(int fd, char *ufil);
-void appendunicodemap(int fd, FILE *fp, int ct);/* append in psf style */
-
-extern char *malloc(), *realloc();
extern char *progname;
-extern int getfd(void);
extern int force;
-static char *unidirpath[] = { "", DATADIR "/" TRANSDIR "/", 0 };
+static char *unidirpath[] = { "", DATADIR "/" UNIMAPDIR "/", 0 };
static char *unisuffixes[] = { "", ".uni", 0 };
#ifdef MAIN
+#include "version.h"
int verbose = 0;
int force = 0;
-char *progname;
int
main(int argc, char *argv[]) {
int fd;
- progname = argv[0];
+ set_progname(argv[0]);
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
fd = getfd();
if (argc >= 3 && !strcmp(argv[1], "-o")) {
exit(0);
}
- if (argc > 2) {
- fprintf(stderr, _("usage: %s [-o map.orig] map-file\n"),
+ if (argc > 2 || (argc == 2 && argv[1][0] == '-' && argv[1][1])) {
+ fprintf(stderr, _("usage: %s [-o map.orig] [map-file]\n"),
progname);
exit(1);
}
* Skip spaces and read U+1234 or return -1 for error.
* Return first non-read position in *p0 (unchanged on error).
*/
+static
int getunicode(char **p0) {
char *p = *p0;
int listct = 0;
int fd;
-void outlist() {
+static void
+outlist(void) {
advice.advised_hashsize = 0;
advice.advised_hashstep = 0;
advice.advised_hashlevel = 1;
listct = 0;
}
-void addpair(int fp, int un) {
+static void
+addpair(int fp, int un) {
if (listct == listsz) {
listsz += 4096;
- list = realloc((char *)list, listsz);
- if (!list) {
- fprintf(stderr, _("%s: out of memory\n"), progname);
- exit(1);
- }
+ list = xrealloc((char *)list, listsz);
}
list[listct].fontpos = fp;
list[listct].unicode = un;
printf(_("Saved unicode map on `%s'\n"), oufil);
}
-static void
-appendunsignedshort(FILE *fp, unsigned short u) {
- unsigned char unicodepair[2];
-
- unicodepair[0] = (u & 0xff);
- unicodepair[1] = ((u >> 8) & 0xff);
- if (fwrite(unicodepair, sizeof(unicodepair), 1, fp) != 1) {
- perror("appendunimap");
- exit(1);
- }
-}
-
void
-appendunicodemap(int fd, FILE *fp, int fontsize) {
- struct unimapdesc descr;
- struct unipair *list;
- int i, j;
-
- descr = getunicodemap(fd);
- list = descr.entries;
-
- for(i=0; i<fontsize; i++) {
- for(j=0; j<descr.entry_ct; j++)
- if (list[j].fontpos == i)
- appendunsignedshort(fp, list[j].unicode);
- appendunsignedshort(fp, PSF_SEPARATOR);
- }
+appendunicodemap(int fd, FILE *fp, int fontsize, int utf8) {
+ struct unimapdesc descr;
+ struct unipair *list;
+ int i, j;
+
+ descr = getunicodemap(fd);
+ list = descr.entries;
+
+ for(i=0; i<fontsize; i++) {
+ for(j=0; j<descr.entry_ct; j++)
+ if (list[j].fontpos == i)
+ appendunicode(fp, list[j].unicode, utf8);
+ appendseparator(fp, 0, utf8);
+ }
- if (verbose)
- printf(_("Appended Unicode map\n"));
+ if (verbose)
+ printf(_("Appended Unicode map\n"));
}
--- /dev/null
+/* 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);
#include <sys/ioctl.h>
#include <sys/kd.h>
#include "paths.h"
+#include "findfile.h"
#include "nls.h"
/* the two exported functions */
static char *mapsuffixes[] = { "", 0 };
#ifdef MAIN
-extern int getfd(void);
+#include "getfd.h"
+#include "version.h"
int verbose = 0;
main(int argc, char *argv[]) {
int fd;
+ set_progname(argv[0]);
+
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
fd = getfd();
if (argc >= 3 && !strcmp(argv[1], "-o")) {
if (argc != 2) {
fprintf(stderr, _("usage: %s [-o map.orig] map-file\n"),
- argv[0]);
+ progname);
exit(1);
}
loadnewmap(fd, argv[1]);
--- /dev/null
+/* outpsfheader - auxiliary fn - not to be installed */
+#include <stdio.h>
+#include "psf.h"
+
+void
+usage(void) {
+ fprintf(stderr, "call: outpsfheader psftype fontsize charsize hastable\n");
+ exit(1);
+}
+
+int
+main(int argc, char **argv){
+ int psftype, fontsize, charsize, hastable;
+
+ if (argc != 5)
+ usage();
+ psftype = atoi(argv[1]);
+ fontsize = atoi(argv[2]);
+ charsize = atoi(argv[3]);
+ hastable = atoi(argv[4]);
+
+ if (psftype == 1) {
+ struct psf1_header h1;
+
+ if (fontsize != 256 && fontsize != 512)
+ usage();
+ h1.magic[0] = PSF1_MAGIC0;
+ h1.magic[1] = PSF1_MAGIC1;
+ h1.mode = (fontsize == 256) ? 0 : PSF1_MODE512;
+ if (hastable)
+ h1.mode |= PSF1_MODEHASTAB;
+ h1.charsize = charsize;
+ if (fwrite(&h1, sizeof(h1), 1, stdout) != 1) {
+ fprintf(stderr, "write error\n");
+ exit(1);
+ }
+ } else if (psftype == 2) {
+ struct psf2_header h2;
+
+ h2.magic[0] = PSF2_MAGIC0;
+ h2.magic[1] = PSF2_MAGIC1;
+ h2.magic[2] = PSF2_MAGIC2;
+ h2.magic[3] = PSF2_MAGIC3;
+ h2.version = 0;
+ h2.headersize = sizeof(h2);
+ h2.flags = (hastable ? PSF2_HAS_UNICODE_TABLE : 0);
+ h2.length = fontsize;
+ h2.charsize = charsize;
+ h2.width = 8;
+ h2.height = charsize;
+ if (fwrite(&h2, sizeof(h2), 1, stdout) != 1) {
+ fprintf(stderr, "write error\n");
+ exit(1);
+ }
+ } else
+ usage();
+ return 0;
+}
/*
* All data is in subdirectories of DATADIR, by default /usr/lib/kbd
- * The following four subdirectories are defined:
+ * The following five subdirectories are defined:
*/
#define KEYMAPDIR "keymaps"
-#define OLDKEYMAPDIR "keytables"
-#define FONTDIR "consolefonts"
+#define UNIMAPDIR "unimaps"
#define TRANSDIR "consoletrans"
#define VIDEOMODEDIR "videomodes"
+#define FONTDIR "consolefonts"
+/* subdir of the latter */
+#define PARTIALDIR "partialfonts"
+/* obsolete */
+#define OLDKEYMAPDIR "keytables"
/*
* Default keymap, and where the kernel copy of it lives.
-#define PSF_MAGIC1 0x36
-#define PSF_MAGIC2 0x04
+/*
+ * Format of a psf font file:
+ *
+ * 1. The header
+ * 2. The font
+ * 3. Unicode information
+ */
-#define PSF_MODE512 0x01
-#define PSF_MODEHASTAB 0x02
-#define PSF_MAXMODE 0x03
-#define PSF_SEPARATOR 0xFFFF
+/*
+ * Format of the Unicode information:
+ *
+ * For each font position <uc>*<seq>*<term>
+ * where <uc> is a 2-byte little endian Unicode value,
+ * <seq> = <ss><uc><uc>*, <ss> = psf1 ? 0xFFFE : 0xFE,
+ * <term> = psf1 ? 0xFFFF : 0xFF.
+ * and * denotes zero or more occurrences of the preceding item.
+ *
+ * Semantics:
+ * The leading <uc>* part gives Unicode symbols that are all
+ * represented by this font position. The following sequences
+ * are sequences of Unicode symbols - probably a symbol
+ * together with combining accents - also represented by
+ * this font position.
+ *
+ * Example:
+ * At the font position for a capital A-ring glyph, we
+ * may have:
+ * 00C5,212B,FFFE,0041,030A,FFFF
+ * Some font positions may be described by sequences only,
+ * namely when there is no precomposed Unicode value for the glyph.
+ */
-struct psf_header
-{
- unsigned char magic1, magic2; /* Magic number */
+
+#define PSF1_MAGIC0 0x36
+#define PSF1_MAGIC1 0x04
+
+#define PSF1_MODE512 0x01
+#define PSF1_MODEHASTAB 0x02
+#define PSF1_MODEHASSEQ 0x04
+#define PSF1_MAXMODE 0x05
+
+#define PSF1_SEPARATOR 0xFFFF
+#define PSF1_STARTSEQ 0xFFFE
+
+struct psf1_header {
+ unsigned char magic[2]; /* Magic number */
unsigned char mode; /* PSF font mode */
unsigned char charsize; /* Character size */
};
-#define PSF_MAGIC_OK(x) ((x).magic1 == PSF_MAGIC1 && (x).magic2 == PSF_MAGIC2)
+/*
+ * Format and semantics of psf2 version 0 are as psf (with PSF_MAXMODE == 5).
+ * However, this allows one to specify the length.
+ * It turns out to be very useful to be able to work with fonts
+ * with a few symbols or even only one (like the Euro), and
+ * with very large fonts (like several thousand Unicode symbols
+ * done in the same style).
+ * Following hpa's suggestion, psf2 uses UTF-8 rather than UCS-2,
+ * and has 32-bit magic 0x864ab572.
+ */
+
+#define PSF2_MAGIC0 0x72
+#define PSF2_MAGIC1 0xb5
+#define PSF2_MAGIC2 0x4a
+#define PSF2_MAGIC3 0x86
+
+struct psf2_header {
+ unsigned char magic[4];
+ unsigned int version;
+ unsigned int headersize; /* offset of bitmaps in file */
+ unsigned int flags;
+ unsigned int length; /* number of glyphs */
+ unsigned int charsize; /* number of bytes for each character */
+ unsigned int height, width; /* max dimensions of glyphs */
+ /* charsize = height * ((width + 7) / 8) */
+};
+
+/* bits used in flags */
+#define PSF2_HAS_UNICODE_TABLE 0x01
+
+/* max version recognized so far */
+#define PSF2_MAXVERSION 0
+
+/* UTF8 separators */
+#define PSF2_SEPARATOR 0xFF
+#define PSF2_STARTSEQ 0xFE
+
+
+#define PSF1_MAGIC_OK(x) ((x)[0]==PSF1_MAGIC0 && (x)[1]==PSF1_MAGIC1)
+#define PSF2_MAGIC_OK(x) ((x)[0]==PSF2_MAGIC0 && (x)[1]==PSF2_MAGIC1 \
+ && (x)[2]==PSF2_MAGIC2 && (x)[3]==PSF2_MAGIC3)
+
#
-# PC Screen (console) Fonts
+# PC Screen (console) Fonts - psf1 header
#
0 leshort 0x0436 psf screen font data
>2 byte 0 256 characters, no index
>2 byte 1 512 characters, no index
>2 byte 2 256 characters, Unicode index
>2 byte 3 512 characters, Unicode index
+>2 byte 4 256 characters, Unicode level 2 index
+>2 byte 5 512 characters, Unicode level 2 index
+>3 byte x 8x%d
+#
+# PC Screen (console) Fonts - psf2 header
+#
+0 lelong 0x864ab572 psf2 screen font data
+>12 lelong&1 1 with Unicode index
+>16 lelong x \b, %d glyphs
+>28 lelong x \b, %dx
+>24 lelong x \b%d
+++ /dev/null
-/*
- * psfaddtable.c
- *
- * Add a Unicode character table to a PSF font
- *
- * Copyright (C) 1994 H. Peter Anvin
- *
- * This program may be freely copied under the terms of the GNU
- * General Public License (GPL), version 2, or at your option
- * any later version.
- *
- * Added input ranges, aeb.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sysexits.h>
-#include <string.h>
-#include <ctype.h>
-#include "psf.h"
-#include "nls.h"
-
-typedef unsigned short unicode;
-
-struct unicode_list
-{
- unicode uc; /* Unicode listed */
- struct unicode_list *next;
-};
-
-void usage(char *argv0)
-{
- fprintf(stderr, _("Usage: \n"
- " %s psffont chartable [outfile]\n"), argv0);
- exit(EX_USAGE);
-}
-
-int getunicode(char **p0)
-{
- char *p = *p0;
-
- while (*p == ' ' || *p == '\t')
- p++;
- if (*p != 'U' || p[1] != '+' ||
- !isxdigit(p[2]) || !isxdigit(p[3]) || !isxdigit(p[4]) ||
- !isxdigit(p[5]) || isxdigit(p[6]))
- return -1;
- *p0 = p+6;
- return strtol(p+2,0,16);
-}
-
-struct unicode_list **hookptr[512];
-
-void addpair(int fp, int un)
-{
- struct unicode_list *newmbr;
-
- if ( un != PSF_SEPARATOR && un <= 0xFFFF )
- {
- /* Add to linked list IN ORDER READ */
-
- newmbr = malloc(sizeof(struct unicode_list));
- newmbr->uc = (unicode) un;
- newmbr->next = NULL;
- *(hookptr[fp]) = newmbr;
- hookptr[fp] = &(newmbr->next);
- }
- /* otherwise: ignore */
-}
-
-int main(int argc, char *argv[])
-{
- FILE *in, *ctbl, *out;
- char *inname, *tblname;
- char buffer[65536];
- unsigned char unicodepair[2];
- struct unicode_list *unilist[512];
- struct unicode_list *newmbr, tmpmbr;
- struct psf_header psfhdr;
- int fontlen;
- int i;
- int fp0, fp1, un0, un1;
- char *p, *p1;
-
- setlocale(LC_ALL, "");
- bindtextdomain(PACKAGE, LOCALEDIR);
- textdomain(PACKAGE);
-
- if ( argc < 3 || argc > 4 )
- usage(argv[0]);
-
- if ( !strcmp(argv[1],"-") )
- {
- in = stdin;
- inname = "stdin";
- }
- else
- {
- in = fopen(inname = argv[1], "r");
- if ( !in )
- {
- perror(inname);
- exit(EX_NOINPUT);
- }
- }
-
- if ( !strcmp(argv[2],"-") && in != stdin )
- {
- ctbl = stdin;
- tblname = "stdin";
- }
- else
- {
- ctbl = fopen(tblname = argv[2], "r");
- if ( !ctbl )
- {
- perror(tblname);
- exit(EX_NOINPUT);
- }
- }
-
- if ( argc < 4 || !strcmp(argv[3],"-") )
- out = stdout;
- else
- {
- out = fopen(argv[3], "w");
- if ( !out )
- {
- perror(argv[3]);
- exit(EX_CANTCREAT);
- }
- }
-
- if ( fread(&psfhdr, sizeof(struct psf_header), 1, in) < 1 )
- {
- fprintf(stderr, _("%s: Cannot read psf header\n"), inname);
- exit(EX_DATAERR);
- }
-
- if (! PSF_MAGIC_OK(psfhdr) )
- {
- fprintf(stderr, _("%s: Bad magic number\n"), inname);
- exit(EX_DATAERR);
- }
-
- if ( psfhdr.mode > PSF_MAXMODE )
- {
- fprintf(stderr, _("%s: Unknown mode number (%d)\n"), inname, psfhdr.mode);
- exit(EX_DATAERR);
- }
-
- fontlen = ( psfhdr.mode & PSF_MODE512 ) ? 512 : 256;
-
- /* Copy font data */
- if ( fread(buffer, psfhdr.charsize, fontlen, in) < fontlen )
- {
- perror(inname);
- exit(EX_DATAERR);
- }
- fclose(in); /* Done with input */
-
- /* Set has-table bit in mode field, and copy to output */
-
- psfhdr.mode |= PSF_MODEHASTAB;
- fwrite(&psfhdr, sizeof(struct psf_header), 1, out);
- fwrite(buffer, psfhdr.charsize, fontlen, out);
-
- /* Now we come to the tricky part. Parse the input table. */
-
- for ( i = 0 ; i < 512 ; i++ ) /* Initialize unicode list */
- unilist[i] = NULL;
-
- for ( i = 0 ; i < 512 ; i++ ) /* Initialize hook pointer list */
- hookptr[i] = &(unilist[i]);
-
- while ( fgets(buffer, sizeof(buffer), ctbl) != NULL )
- {
- if ( (p = strchr(buffer, '\n')) != NULL )
- *p = '\0';
- else
- fprintf(stderr, _("%s: Warning: line too long\n"), tblname);
-
- p = buffer;
-
-/*
- * Syntax accepted:
- * <fontpos> <unicode> <unicode> ...
- * <range> idem
- * <range> <unicode range>
- *
- * where <range> ::= <fontpos>-<fontpos>
- * and <unicode> ::= U+<h><h><h><h>
- * and <h> ::= <hexadecimal digit>
- */
-
- while (*p == ' ' || *p == '\t')
- p++;
- if (!*p || *p == '#')
- continue; /* skip comment or blank line */
-
- fp0 = strtol(p, &p1, 0);
- if (p1 == p)
- {
- fprintf(stderr, _("Bad input line: %s\n"), buffer);
- exit(EX_DATAERR);
- }
- p = p1;
-
- while (*p == ' ' || *p == '\t')
- p++;
- if (*p == '-')
- {
- p++;
- fp1 = strtol(p, &p1, 0);
- if (p1 == p)
- {
- fprintf(stderr, _("Bad input line: %s\n"), buffer);
- exit(EX_DATAERR);
- }
- p = p1;
- }
- else
- fp1 = 0;
-
- if ( fp0 < 0 || fp0 >= fontlen )
- {
- fprintf(stderr,
- _("%s: Glyph number (0x%x) larger than font length\n"),
- tblname, fp0);
- exit(EX_DATAERR);
- }
- if ( fp1 && (fp1 < fp0 || fp1 >= fontlen) )
- {
- fprintf(stderr,
- _("%s: Bad end of range (0x%x)\n"),
- tblname, fp1);
- exit(EX_DATAERR);
- }
-
- if (fp1)
- {
- /* we have a range; expect the word "idem" or a Unicode range of the
- same length */
- while (*p == ' ' || *p == '\t')
- p++;
- if (!strncmp(p, "idem", 4))
- {
- for (i=fp0; i<=fp1; i++)
- addpair(i,i);
- p += 4;
- }
- else
- {
- un0 = getunicode(&p);
- while (*p == ' ' || *p == '\t')
- p++;
- if (*p != '-')
- {
- fprintf(stderr,
- _("%s: Corresponding to a range of font positions, "
- "there should be a Unicode range\n"),
- tblname);
- exit(EX_DATAERR);
- }
- p++;
- un1 = getunicode(&p);
- if (un0 < 0 || un1 < 0)
- {
- fprintf(stderr,
- _("%s: Bad Unicode range corresponding to font "
- "position range 0x%x-0x%x\n"),
- tblname, fp0, fp1);
- exit(EX_DATAERR);
- }
- if (un1 - un0 != fp1 - fp0)
- {
- fprintf(stderr,
- _("%s: Unicode range U+%x-U+%x not of the same "
- "length as font position range 0x%x-0x%x\n"),
- tblname, un0, un1, fp0, fp1);
- exit(EX_DATAERR);
- }
- for (i=fp0; i<=fp1; i++)
- addpair(i, un0-fp0+i);
- }
- }
- else
- {
- /* no range; expect a list of unicode values for a single font position */
-
- while ( (un0 = getunicode(&p)) >= 0 )
- addpair(fp0, un0);
- }
- while (*p == ' ' || *p == '\t')
- p++;
- if (*p && *p != '#')
- fprintf(stderr, _("%s: trailing junk (%s) ignored\n"), tblname, p);
- }
-
- /* Okay, we hit EOF, now glyph table should be read */
-
- fclose(ctbl);
-
- for ( i = 0 ; i < fontlen ; i++ )
- {
- for ( newmbr = unilist[i] ; newmbr ; newmbr = tmpmbr.next )
- {
- tmpmbr = *newmbr;
- unicodepair[0] = (tmpmbr.uc & 0xff);
- unicodepair[1] = ((tmpmbr.uc >> 8) & 0xff);
- fwrite(unicodepair, sizeof(unicodepair), 1, out);
- free(newmbr);
- }
-
- /* Write string terminator */
- unicodepair[0] = (PSF_SEPARATOR & 0xff);
- unicodepair[1] = ((PSF_SEPARATOR >> 8) & 0xff);
- fwrite(unicodepair, sizeof(unicodepair), 1, out);
- }
-
- fclose(out);
-
- exit(EX_OK);
-}
--- /dev/null
+/*
+ * psffontop.c - aeb@cwi.nl, 990921
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sysexits.h>
+#include "xmalloc.h"
+#include "nls.h"
+#include "psf.h"
+#include "psffontop.h"
+
+extern char *progname;
+
+static void
+addpair(struct unicode_list *up, unsigned int uc) {
+ struct unicode_list *ul;
+ struct unicode_seq *us;
+
+ ul = xmalloc(sizeof(struct unicode_list));
+ us = xmalloc(sizeof(struct unicode_seq));
+ us->uc = uc;
+ us->prev = us;
+ us->next = NULL;
+ ul->seq = us;
+ ul->prev = up->prev;
+ ul->prev->next = ul;
+ ul->next = NULL;
+ up->prev = ul;
+}
+
+static void
+addseq(struct unicode_list *up, unsigned int uc) {
+ struct unicode_list *ul;
+ struct unicode_seq *us;
+
+ ul = up->prev;
+ us = xmalloc(sizeof(struct unicode_seq));
+ us->uc = uc;
+ us->prev = ul->seq->prev;
+ us->prev->next = us;
+ us->next = NULL;
+ ul->seq->prev = us;
+}
+
+static unsigned int
+assemble_ucs2(char **inptr, int cnt) {
+ unsigned char **in = (unsigned char **) inptr;
+ unsigned int u1, u2;
+
+ if (cnt < 2) {
+ char *u = _("%s: short ucs2 unicode table\n");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+
+ u1 = *(*in)++;
+ u2 = *(*in)++;
+ return (u1 | (u2 << 8));
+}
+
+/* called with cnt > 0 and **inptr not 0xff or 0xfe */
+static unsigned int
+assemble_utf8(char **inptr, int cnt) {
+ unsigned char *in;
+ unsigned int uc, uc2;
+ int need, bit, bad = 0;
+
+ in = (unsigned char *)(* inptr);
+ uc = *in++;
+ need = 0;
+ bit = 0x80;
+ while(uc & bit) {
+ need++;
+ bit >>= 1;
+ }
+ uc &= (bit-1);
+ if (cnt < need) {
+ char *u = _("%s: short utf8 unicode table\n");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+ if (need == 1)
+ bad = 1;
+ else if (need) while(--need) {
+ uc2 = *in++;
+ if ((uc2 & 0xc0) != 0x80) {
+ bad = 1;
+ break;
+ }
+ uc = ((uc << 6) | (uc2 & 0x3f));
+ }
+ if (bad) {
+ char *u = _("%s: bad utf8\n");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+ *inptr = in;
+ return uc;
+}
+
+
+/*
+ * Read description of a single font position.
+ */
+static void
+get_uni_entry(char **inptr, char **endptr, struct unicode_list *up, int utf8) {
+ unsigned char **in = (unsigned char **) inptr;
+ unsigned char uc;
+ unicode unichar;
+ int inseq = 0;
+
+ up->next = NULL;
+ up->seq = NULL;
+ up->prev = up;
+
+ while(1) {
+ if (*endptr == *inptr) {
+ char *u = _("%s: short unicode table\n");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+ if (utf8) {
+ uc = *(*in)++;
+ if (uc == PSF2_SEPARATOR)
+ break;
+ if (uc == PSF2_STARTSEQ) {
+ inseq = 1;
+ continue;
+ }
+ --(*in);
+ unichar = assemble_utf8(inptr, *endptr - *inptr);
+ } else {
+ unichar = assemble_ucs2(inptr, *endptr - *inptr);
+ if (unichar == PSF1_SEPARATOR)
+ break;
+ if (unichar == PSF1_STARTSEQ) {
+ inseq = 1;
+ continue;
+ }
+ }
+ if (inseq == 0)
+ addpair(up, unichar);
+ else {
+ addseq(up, unichar);
+ inseq++;
+ }
+ }
+}
+
+/*
+ * Read a psf font and return >= 0 on success and -1 on failure.
+ * Failure means that the font was not psf (but has been read).
+ * > 0 means that the Unicode table contains sequences.
+ *
+ * The font is read either from file (when FONT is non-NULL)
+ * or from memory (namely from *ALLBUFP of size *ALLSZP).
+ * In the former case, if ALLBUFP is non-NULL, a pointer to
+ * the entire fontfile contents (possibly read from pipe)
+ * is returned in *ALLBUFP, and the size in ALLSZP, where this
+ * buffer was allocated using malloc().
+ * In FONTBUFP, FONTSZP the subinterval of ALLBUFP containing
+ * the font data is given.
+ * The number of glyphs is stored in FONTLENP.
+ * The unicodetable is stored in UCLISTHEADSP (when non-NULL), with
+ * fontpositions counted from FONTPOS0 (so that calling this several
+ * times can achieve font merging).
+ */
+extern char *progname;
+
+int
+readpsffont(FILE *fontf, char **allbufp, int *allszp,
+ char **fontbufp, int *fontszp,
+ int *fontlenp, int fontpos0,
+ struct unicode_list **uclistheadsp) {
+ char *inputbuf = NULL;
+ int inputbuflth = 0;
+ int inputlth, fontlen, charsize, hastable, ftoffset, utf8;
+ int i, k, n;
+
+ /*
+ * We used to look at the length of the input file
+ * with stat(); now that we accept compressed files,
+ * just read the entire file.
+ */
+ if (fontf) {
+ inputbuflth = 16384; /* random */
+ inputbuf = xmalloc(inputbuflth);
+ n = 0;
+
+ while(1) {
+ if (n >= inputbuflth) {
+ inputbuflth *= 2;
+ inputbuf = xrealloc(inputbuf, inputbuflth);
+ }
+ n += fread(inputbuf+n, 1, inputbuflth-n, fontf);
+ if (ferror(fontf)) {
+ char *u = _("%s: Error reading input font");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+ if (feof(fontf))
+ break;
+ }
+ if (allbufp)
+ *allbufp = inputbuf;
+ if (allszp)
+ *allszp = n;
+ inputlth = n;
+ } else {
+ if (!allbufp || !allszp) {
+ char *u = _("%s: Bad call of readpsffont\n");
+ fprintf(stderr, u, progname);
+ exit(EX_SOFTWARE);
+ }
+ inputbuf = *allbufp;
+ inputbuflth = inputlth = n = *allszp;
+ }
+
+ if (inputlth >= sizeof(struct psf1_header) &&
+ PSF1_MAGIC_OK((unsigned char *)inputbuf)) {
+ struct psf1_header *psfhdr;
+
+ psfhdr = (struct psf1_header *) &inputbuf[0];
+
+ if (psfhdr->mode > PSF1_MAXMODE) {
+ char *u = _("%s: Unsupported psf file mode (%d)\n");
+ fprintf(stderr, u, progname, psfhdr->mode);
+ exit(EX_DATAERR);
+ }
+ fontlen = ((psfhdr->mode & PSF1_MODE512) ? 512 : 256);
+ charsize = psfhdr->charsize;
+ hastable = (psfhdr->mode & (PSF1_MODEHASTAB|PSF1_MODEHASSEQ));
+ ftoffset = sizeof(struct psf1_header);
+ utf8 = 0;
+ } else if (inputlth >= sizeof(struct psf2_header) &&
+ PSF2_MAGIC_OK((unsigned char *)inputbuf)) {
+ struct psf2_header *psfhdr;
+
+ psfhdr = (struct psf2_header *) &inputbuf[0];
+
+ if (psfhdr->version > PSF2_MAXVERSION) {
+ char *u = _("%s: Unsupported psf version (%d)\n");
+ fprintf(stderr, u, progname, psfhdr->version);
+ exit(EX_DATAERR);
+ }
+ fontlen = psfhdr->length;
+ charsize = psfhdr->charsize;
+ hastable = (psfhdr->flags & PSF2_HAS_UNICODE_TABLE);
+ ftoffset = psfhdr->headersize;
+ utf8 = 1;
+ } else
+ return -1; /* not psf */
+
+ /* tests required - we divide by these */
+ if (fontlen == 0) {
+ char *u = _("%s: zero input font length?\n");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+ if (charsize == 0) {
+ char *u = _("%s: zero input character size?\n");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+ i = ftoffset + fontlen * charsize;
+ if (i > inputlth || (!hastable && i != inputlth)) {
+ char *u = _("%s: Input file: bad input length (%d)\n");
+ fprintf(stderr, u, progname, inputlth);
+ exit(EX_DATAERR);
+ }
+
+ if (fontbufp && allbufp)
+ *fontbufp = *allbufp + ftoffset;
+ if (fontszp)
+ *fontszp = fontlen * charsize;
+ if (fontlenp)
+ *fontlenp = fontlen;
+
+ if (hastable && uclistheadsp) {
+ char *inptr, *endptr;
+
+ inptr = inputbuf + ftoffset + fontlen * charsize;
+ endptr = inputbuf + inputlth;
+
+ *uclistheadsp = xrealloc(*uclistheadsp,
+ (fontpos0+fontlen)*sizeof(struct unicode_list));
+
+ for (i=0; i<fontlen; i++) {
+ k = fontpos0 + i;
+ get_uni_entry(&inptr, &endptr,
+ &(*uclistheadsp)[k], utf8);
+ }
+ if (inptr != endptr) {
+ char *u = _("%s: Input file: trailing garbage\n");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+ }
+
+ return 0; /* got psf font */
+}
+
+static int
+has_sequences(struct unicode_list *uclistheads, int fontlen) {
+ struct unicode_list *ul;
+ struct unicode_seq *us;
+ int i;
+
+ for (i=0; i<fontlen; i++) {
+ ul = uclistheads[i].next;
+ while(ul) {
+ us = ul->seq;
+ if (us && us->next)
+ return 1;
+ ul = ul->next;
+ }
+ }
+ return 0;
+}
+
+void
+appendunicode(FILE *fp, unsigned int uc, int utf8) {
+ int n = 6;
+ unsigned char out[6];
+
+ if (uc & ~0x7fffffff) {
+ fprintf(stderr, _("appendunicode: illegal unicode %u\n"), uc);
+ exit(1);
+ }
+ if (!utf8) {
+ out[--n] = ((uc >> 8) & 0xff);
+ out[--n] = (uc & 0xff);
+ } else if (uc < 0x80) {
+ out[--n] = uc;
+ } else {
+ int mask = 0x3f;
+ while (uc & ~mask) {
+ out[--n] = 0x80 + (uc & 0x3f);
+ uc >>= 6;
+ mask >>= 1;
+ }
+ out[--n] = ((uc + ~mask + ~mask) & 0xff);
+ }
+ if (fwrite(out+n, 6-n, 1, fp) != 1) {
+ perror("appendunimap");
+ exit(1);
+ }
+}
+
+void
+appendseparator(FILE *fp, int seq, int utf8) {
+ int n;
+
+ if (utf8) {
+ unsigned char u = (seq ? PSF2_STARTSEQ : PSF2_SEPARATOR);
+ n = fwrite(&u, sizeof(u), 1, fp);
+ } else {
+ unsigned short u = (seq ? PSF1_STARTSEQ : PSF1_SEPARATOR);
+ n = fwrite(&u, sizeof(u), 1, fp);
+ }
+ if (n != 1) {
+ perror("appendseparator");
+ exit(1);
+ }
+}
+
+void
+writepsffont(FILE *ofil, char *fontbuf, int charsize, int fontlen,
+ int psftype, struct unicode_list *uclistheads) {
+ int i;
+ int utf8;
+ int seqs = 0;
+
+ if (uclistheads)
+ seqs = has_sequences(uclistheads, fontlen);
+
+ /* Output new font file */
+ if ((fontlen != 256 && fontlen != 512) || psftype == 2) {
+ struct psf2_header h;
+
+ h.magic[0] = PSF2_MAGIC0;
+ h.magic[1] = PSF2_MAGIC1;
+ h.magic[2] = PSF2_MAGIC2;
+ h.magic[3] = PSF2_MAGIC3;
+ h.version = 0;
+ h.headersize = sizeof(h);
+ h.flags = 0;
+ if (uclistheads != NULL)
+ h.flags |= PSF2_HAS_UNICODE_TABLE;
+ h.length = fontlen;
+ h.charsize = charsize;
+ h.width = 8;
+ h.height = charsize;
+ fwrite(&h, sizeof(h), 1, ofil);
+ utf8 = 1;
+ } else {
+ struct psf1_header h;
+
+ h.magic[0] = PSF1_MAGIC0;
+ h.magic[1] = PSF1_MAGIC1;
+ h.mode = 0;
+ if (fontlen == 512)
+ h.mode |= PSF1_MODE512;
+ if (uclistheads != NULL)
+ h.mode |= (seqs ? PSF1_MODEHASSEQ : PSF1_MODEHASTAB);
+ h.charsize = charsize;
+ fwrite(&h, sizeof(h), 1, ofil);
+ utf8 = 0;
+ }
+ fwrite(fontbuf, charsize, fontlen, ofil);
+ if (uclistheads != NULL) {
+ struct unicode_list *ul;
+ struct unicode_seq *us;
+
+ for (i=0; i<fontlen; i++) {
+ ul = uclistheads[i].next;
+ while(ul) {
+ us = ul->seq;
+ if (us && us->next)
+ appendseparator(ofil, 1, utf8);
+ while(us) {
+ appendunicode(ofil, us->uc, utf8);
+ us = us->next;
+ }
+ ul = ul->next;
+ }
+ appendseparator(ofil, 0, utf8);
+ }
+ }
+}
+
--- /dev/null
+typedef unsigned int unicode;
+
+struct unicode_seq {
+ struct unicode_seq *next;
+ struct unicode_seq *prev;
+ unicode uc;
+};
+
+struct unicode_list {
+ struct unicode_list *next;
+ struct unicode_list *prev;
+ struct unicode_seq *seq;
+};
+
+extern int readpsffont(FILE *fontf, char **allbufp, int *allszp,
+ char **fontbufp, int *fontszp,
+ int *fontlenp, int fontpos0,
+ struct unicode_list **uclistheadsp);
+
+extern void writepsffont(FILE *ofil, char *fontbuf,
+ int charsize, int fontlen, int psftype,
+ struct unicode_list *uclistheads);
+
+extern void appendunicode(FILE *fp, unsigned int uc, int utf8);
+extern void appendseparator(FILE *fp, int seq, int utf8);
+++ /dev/null
-/*
- * psfgettable.c
- *
- * Extract a Unicode character table from a PSF font
- *
- * Copyright (C) 1994 H. Peter Anvin
- *
- * This program may be freely copied under the terms of the GNU
- * General Public License (GPL), version 2, or at your option
- * any later version.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sysexits.h>
-#include <string.h>
-#include "psf.h"
-#include "nls.h"
-
-typedef unsigned short unicode;
-void usage(char *argv0)
-{
- fprintf(stderr, _("Usage: \n"
- " %s psffont [outfile]\n"), argv0);
- exit(EX_USAGE);
-}
-
-int
-main(int argc, char *argv[])
-{
- FILE *in, *out;
- char *inname;
- struct psf_header psfhdr;
- int glyph;
- unicode unichar;
- unsigned char unicodepair[2];
- int fontlen;
-
- setlocale(LC_ALL, "");
- bindtextdomain(PACKAGE, LOCALEDIR);
- textdomain(PACKAGE);
-
- if ( argc < 2 || argc > 3 )
- usage(argv[0]);
-
- if ( !strcmp(argv[1],"-") )
- {
- in = stdin;
- inname = "stdin";
- }
- else
- {
- in = fopen(inname = argv[1], "r");
- if ( !in )
- {
- perror(inname);
- exit(EX_NOINPUT);
- }
- }
-
- if ( argc < 4 || !strcmp(argv[3],"-") )
- out = stdout;
- else
- {
- out = fopen(argv[3], "w");
- if ( !out )
- {
- perror(argv[3]);
- exit(EX_CANTCREAT);
- }
- }
-
- if ( fread(&psfhdr, sizeof(struct psf_header), 1, in) < 1 )
- {
- fprintf(stderr, _("%s: Cannot read psf header\n"), inname);
- exit(EX_DATAERR);
- }
-
- if (! PSF_MAGIC_OK(psfhdr) )
- {
- fprintf(stderr, _("%s: Bad magic number\n"), inname);
- exit(EX_DATAERR);
- }
-
- if ( psfhdr.mode > PSF_MAXMODE )
- {
- fprintf(stderr, _("%s: Unknown mode number (%d)\n"),
- inname, psfhdr.mode);
- exit(EX_DATAERR);
- }
-
- fontlen = ( psfhdr.mode & PSF_MODE512 ) ? 512 : 256;
-
- if ( ! (psfhdr.mode & PSF_MODEHASTAB ) )
- {
- fprintf(stderr, _("%s: Font has no character table\n"), inname);
- exit(EX_DATAERR);
- }
-
- /* Skip font data */
- if ( fseek(in, psfhdr.charsize * fontlen, SEEK_CUR) == -1)
- {
- perror(inname);
- exit(EX_DATAERR);
- }
-
- /* Copy table */
-
- fprintf(out, "#\n# Character table extracted from font %s\n#\n", inname);
-
- for ( glyph = 0 ; glyph < fontlen ; glyph++ )
- {
- if ( fontlen <= 256 )
- fprintf(out, "0x%02x\t", glyph);
- else
- fprintf(out, "0x%03x\t", glyph);
-
- while ( fread(unicodepair, sizeof(unicodepair), 1, in) == 1 ) {
- unichar = (unicodepair[0] | (unicodepair[1] << 8));
- if ( unichar == PSF_SEPARATOR )
- break;
- fprintf(out, " U+%04x", unichar);
- }
- putc('\n', out);
- }
-
- fclose(in);
- fclose(out);
-
- exit(EX_OK);
-}
+++ /dev/null
-/*
- * psfgettable.c
- *
- * Extract a Unicode character table from a PSF font
- *
- * Copyright (C) 1994 H. Peter Anvin
- *
- * This program may be freely copied under the terms of the GNU
- * General Public License (GPL), version 2, or at your option
- * any later version.
- *
- * fix, aeb, 970316
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sysexits.h>
-#include <string.h>
-#include "psf.h"
-#include "nls.h"
-
-typedef unsigned short unicode;
-void usage(char *argv0)
-{
- fprintf(stderr, _("Usage: \n"
- " %s psffont [outfile]\n"), argv0);
- exit(EX_USAGE);
-}
-
-int
-main(int argc, char *argv[])
-{
- FILE *in, *out;
- char *inname;
- struct psf_header psfhdr;
- int fontlen;
- char buffer[65536]; /* Font data, is scratch only */
-
- setlocale(LC_ALL, "");
- bindtextdomain(PACKAGE, LOCALEDIR);
- textdomain(PACKAGE);
-
- if ( argc < 2 || argc > 3 )
- usage(argv[0]);
-
- if ( !strcmp(argv[1],"-") )
- {
- in = stdin;
- inname = "stdin";
- }
- else
- {
- in = fopen(inname = argv[1], "r");
- if ( !in )
- {
- perror(inname);
- exit(EX_NOINPUT);
- }
- }
-
- if ( argc < 3 || !strcmp(argv[2],"-") )
- out = stdout;
- else
- {
- out = fopen(argv[2], "w");
- if ( !out )
- {
- perror(argv[2]);
- exit(EX_CANTCREAT);
- }
- }
-
- if ( fread(&psfhdr, sizeof(struct psf_header), 1, in) < 1 )
- {
- fprintf(stderr, _("%s: Cannot read psf header\n"), inname);
- exit(EX_DATAERR);
- }
-
- if (! PSF_MAGIC_OK(psfhdr) )
- {
- fprintf(stderr, _("%s: Bad magic number\n"), inname);
- exit(EX_DATAERR);
- }
-
- if ( psfhdr.mode > PSF_MAXMODE )
- {
- fprintf(stderr, _("%s: Unknown mode number (%d)\n"),
- inname, psfhdr.mode);
- exit(EX_DATAERR);
- }
-
- fontlen = ( psfhdr.mode & PSF_MODE512 ) ? 512 : 256;
-
- if ( ! (psfhdr.mode & PSF_MODEHASTAB ) )
- {
- fprintf(stderr, _("%s: Font already had no character table\n"), inname);
- }
-
- psfhdr.mode &= ~PSF_MODEHASTAB; /* Clear the bit */
-
- /* Read font data */
- if ( fread(buffer, psfhdr.charsize, fontlen, in) < fontlen )
- {
- perror(inname);
- exit(EX_DATAERR);
- }
-
- fclose(in);
-
- /* Write new font file */
- fwrite(&psfhdr, sizeof(struct psf_header), 1, out);
- fwrite(buffer, psfhdr.charsize, fontlen, out);
- fclose(out);
-
- exit(EX_OK);
-}
--- /dev/null
+/*
+ * psfxtable.c
+ *
+ * Manipulate headers and Unicode tables for psf fonts
+ *
+ * Copyright (C) 1999 Andries E. Brouwer
+ * derived from sources that were
+ * Copyright (C) 1994 H. Peter Anvin
+ *
+ * This program may be freely copied under the terms of the GNU
+ * General Public License (GPL), version 2, or at your option
+ * any later version.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <sysexits.h>
+#include "nls.h"
+#include "version.h"
+#include "psf.h"
+#include "xmalloc.h"
+#include "psffontop.h"
+
+/*
+ * call: psfxtable -i infont -o outfont -it intable -ot outtable
+ * psfaddtable infont intable [outfont]
+ * psfgettable infont [outtable]
+ * psfstriptable infont [outfont]
+ *
+ * When outfont is requested it will get psf1 header when
+ * infont had psf1 header and intable does not have sequences
+ * and psf2 header otherwise.
+ */
+
+/*
+ * Parse humanly readable unicode table.
+ * Format: lines
+ * <fontposition><tab><uc_defs>
+ * or
+ * <fontrange><tab><uc_defs>
+ * or
+ * <fontrange><tab><uc_range>
+ * where
+ * <uc_defs> :: <empty> | <uc_def><space><uc_defs>
+ * <uc_def> :: <uc> | <uc>,<uc_def>
+ * <uc> :: U+<h><h><h><h>
+ * <h> :: <hexadecimal digit>
+ * <range> :: <value>-<value>
+ * Blank lines and lines starting with # are ignored.
+ */
+struct unicode_list *uclistheads;
+
+static void
+addpair(int fontpos, unsigned int uc) {
+ struct unicode_list *ul;
+ struct unicode_seq *us;
+
+ ul = xmalloc(sizeof(struct unicode_list));
+ us = xmalloc(sizeof(struct unicode_seq));
+ us->uc = uc;
+ us->prev = us;
+ us->next = NULL;
+ ul->seq = us;
+ ul->prev = uclistheads[fontpos].prev;
+ ul->prev->next = ul;
+ ul->next = NULL;
+ uclistheads[fontpos].prev = ul;
+}
+
+static void
+addseq(int fontpos, unsigned int uc) {
+ struct unicode_list *ul;
+ struct unicode_seq *us;
+
+ ul = uclistheads[fontpos].prev;
+ us = xmalloc(sizeof(struct unicode_seq));
+ us->uc = uc;
+ us->prev = ul->seq->prev;
+ us->prev->next = us;
+ us->next = NULL;
+ ul->seq->prev = us;
+}
+
+static int
+getunicode(char **p0) {
+ char *p = *p0;
+
+ while (*p == ' ' || *p == '\t')
+ p++;
+ if (*p != 'U' || p[1] != '+' ||
+ !isxdigit(p[2]) || !isxdigit(p[3]) || !isxdigit(p[4]) ||
+ !isxdigit(p[5]) || isxdigit(p[6]))
+ return -1;
+ *p0 = p+6;
+ return strtol(p+2,0,16);
+}
+
+static void
+parse_itab_line(char *buf, int fontlen){
+ char *p, *p1;
+ int i;
+ long fp0, fp1, un0, un1;
+
+ if ((p = strchr(buf, '\n')) != NULL)
+ *p = 0;
+ else {
+ char *u = _("%s: Warning: line too long\n");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+
+ p = buf;
+
+ while (*p == ' ' || *p == '\t')
+ p++;
+ if (!*p || *p == '#')
+ return;
+
+ fp0 = strtol(p, &p1, 0);
+ if (p1 == p) {
+ char *u = _("%s: Bad input line: %s\n");
+ fprintf(stderr, u, progname, buf);
+ exit(EX_DATAERR);
+ }
+ p = p1;
+
+ if (*p == '-') {
+ p++;
+ fp1 = strtol(p, &p1, 0);
+ if (p1 == p) {
+ char *u = _("%s: Bad input line: %s\n");
+ fprintf(stderr, u, progname, buf);
+ exit(EX_DATAERR);
+ }
+ p = p1;
+ } else
+ fp1 = 0;
+
+ if (fp0 < 0 || fp0 >= fontlen) {
+ char *u = _("%s: Glyph number (0x%lx) past end of font\n");
+ fprintf(stderr, u, progname, fp0);
+ exit(EX_DATAERR);
+ }
+ if (fp1 && (fp1 < fp0 || fp1 >= fontlen)) {
+ char *u = _("%s: Bad end of range (0x%lx)\n");
+ fprintf(stderr, u, progname, fp1);
+ exit(EX_DATAERR);
+ }
+
+ if (fp1) {
+ /* we have a range; expect the word "idem"
+ or a Unicode range of the same length */
+ while (*p == ' ' || *p == '\t')
+ p++;
+ if (!strncmp(p, "idem", 4)) {
+ for (i = fp0; i <= fp1; i++)
+ addpair(i,i);
+ p += 4;
+ } else {
+ un0 = getunicode(&p);
+ while (*p == ' ' || *p == '\t')
+ p++;
+ if (*p != '-') {
+ char *u = _("%s: Corresponding to a range of "
+ "font positions, there should be "
+ "a Unicode range\n");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+ p++;
+ un1 = getunicode(&p);
+ if (un0 < 0 || un1 < 0) {
+ char *u = _("%s: Bad Unicode range "
+ "corresponding to font position "
+ "range 0x%x-0x%x\n");
+ fprintf(stderr, u, progname, fp0, fp1);
+ exit(EX_DATAERR);
+ }
+ if (un1 - un0 != fp1 - fp0) {
+ char *u = _("%s: Unicode range U+%x-U+%x not "
+ "of the same length as font "
+ "position range 0x%x-0x%x\n");
+ fprintf(stderr, u, progname,
+ un0, un1, fp0, fp1);
+ exit(EX_DATAERR);
+ }
+ for (i = fp0; i <= fp1; i++)
+ addpair(i, un0-fp0+i);
+ } /* not idem */
+ } else { /* no range */
+ while ((un0 = getunicode(&p)) >= 0) {
+ addpair(fp0, un0);
+ while (*p++ == ',' && (un1 = getunicode(&p)) >= 0) {
+ addseq(fp0, un1);
+ }
+ p--;
+ }
+ while (*p == ' ' || *p == '\t')
+ p++;
+ if (*p && *p != '#') {
+ char *u = _("%s: trailing junk (%s) ignored\n");
+ fprintf(stderr, u, progname, p);
+ }
+ }
+}
+
+static void
+read_itable(FILE *itab, int fontlen, struct unicode_list **uclistheadsp) {
+ char buf[65536];
+ int i;
+
+ if (uclistheadsp) {
+ *uclistheadsp = xrealloc(*uclistheadsp,
+ fontlen*sizeof(struct unicode_list));
+ for (i=0; i<fontlen; i++) {
+ struct unicode_list *up = &((*uclistheadsp)[i]);
+ up->next = NULL;
+ up->seq = NULL;
+ up->prev = up;
+ }
+ while (fgets(buf, sizeof(buf), itab) != NULL)
+ parse_itab_line(buf, fontlen);
+ }
+}
+
+int
+main(int argc, char **argv) {
+ char *ifname, *ofname, *itname, *otname;
+ FILE *ifil, *ofil, *itab, *otab;
+ int psftype, fontlen, charsize, hastable, notable;
+ int i;
+ char *inbuf, *fontbuf;
+ int inbuflth, fontbuflth;
+
+ set_progname(argv[0]);
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
+ ifil = ofil = itab = otab = NULL;
+ ifname = ofname = itname = otname = NULL;
+ fontbuf = NULL;
+ notable = 0;
+
+ if (!strcmp(progname, "psfaddtable")) {
+ /* Do not send binary data to stdout without explicit "-" */
+ if (argc != 4) {
+ char *u = _("Usage:\n\t%s infont intable outfont\n");
+ fprintf(stderr, u, progname);
+ exit(EX_USAGE);
+ }
+ ifname = argv[1];
+ itname = argv[2];
+ ofname = argv[3];
+ } else if (!strcmp(progname, "psfgettable")) {
+ if (argc < 2 || argc > 3) {
+ char *u = _("Usage:\n\t%s infont [outtable]\n");
+ fprintf(stderr, u, progname);
+ exit(EX_USAGE);
+ }
+ ifname = argv[1];
+ otname = (argc == 3) ? argv[2] : "-";
+ } else if (!strcmp(progname, "psfstriptable")) {
+ /* Do not send binary data to stdout without explicit "-" */
+ if (argc != 3) {
+ char *u = _("Usage:\n\t%s infont outfont\n");
+ fprintf(stderr, u, progname);
+ exit(EX_USAGE);
+ }
+ ifname = argv[1];
+ ofname = argv[2];
+ notable = 1;
+ } else {
+ for (i = 1; i < argc; i ++) {
+ if (!strcmp(argv[i], "-i") && i < argc-1)
+ ifname = argv[++i];
+ else if(!strcmp(argv[i], "-o") && i < argc-1)
+ ofname = argv[++i];
+ else if(!strcmp(argv[i], "-it") && i < argc-1)
+ itname = argv[++i];
+ else if(!strcmp(argv[i], "-ot") && i < argc-1)
+ otname = argv[++i];
+ else if(!strcmp(argv[i], "-nt"))
+ notable = 1;
+ else
+ break;
+ }
+ if (i < argc || argc <= 1) {
+ char *u = _("Usage:\n\t%s [-i infont] [-o outfont] "
+ "[-it intable] [-ot outtable] [-nt]\n");
+ fprintf(stderr, u, progname);
+ exit(EX_USAGE);
+ }
+ }
+
+ if (!ifname)
+ ifname = "-";
+ if (!strcmp(ifname, "-"))
+ ifil = stdin;
+ else {
+ ifil = fopen(ifname, "r");
+ if (!ifil) {
+ perror(ifname);
+ exit(EX_NOINPUT);
+ }
+ }
+
+ if (!itname)
+ /* nothing */;
+ else if (!strcmp(itname, "-"))
+ itab = stdin;
+ else {
+ itab = fopen(itname, "r");
+ if (!itab) {
+ perror(itname);
+ exit(EX_NOINPUT);
+ }
+ }
+
+ /* Refuse ifil == itab == stdin ? Perhaps not. */
+
+ if (!ofname)
+ /* nothing */;
+ else if (!strcmp(ofname, "-"))
+ ofil = stdout;
+ else {
+ ofil = fopen(ofname, "w");
+ if (!ofil) {
+ perror(ofname);
+ exit(EX_CANTCREAT);
+ }
+ }
+
+ if (!otname)
+ /* nothing */;
+ else if (!strcmp(otname, "-"))
+ otab = stdout;
+ else {
+ otab = fopen(otname, "w");
+ if (!otab) {
+ perror(otname);
+ exit(EX_CANTCREAT);
+ }
+ }
+
+ if (readpsffont(ifil, &inbuf, &inbuflth, &fontbuf, &fontbuflth,
+ &fontlen, 0, itab ? NULL : &uclistheads) == -1) {
+ char *u = _("%s: Bad magic number on %s\n");
+ fprintf(stderr, u, progname, ifname);
+ exit(EX_DATAERR);
+ }
+ fclose(ifil);
+
+ charsize = fontbuflth/fontlen;
+
+ hastable = (uclistheads != NULL);
+
+ if (PSF1_MAGIC_OK((unsigned char *)inbuf)) {
+ psftype = 1;
+ } else if (PSF2_MAGIC_OK((unsigned char *)inbuf)) {
+ psftype = 2;
+ } else {
+ char *u = _("%s: psf file with unknown magic\n");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+
+ if (itab) {
+ read_itable(itab, fontlen, &uclistheads);
+ fclose(itab);
+ }
+
+ if (otab) {
+ struct unicode_list *ul;
+ struct unicode_seq *us;
+ char *sep;
+
+ if (!hastable) {
+ char *u = _("%s: input font does not have an index\n");
+ fprintf(stderr, u, progname);
+ exit(EX_DATAERR);
+ }
+ fprintf(otab,
+ "#\n# Character table extracted from font %s\n#\n",
+ ifname);
+ for (i=0; i<fontlen; i++) {
+ fprintf(otab, "0x%03x\t", i);
+ sep = "";
+ ul = uclistheads[i].next;
+ while (ul) {
+ us = ul->seq;
+ while(us) {
+ fprintf(otab, "%sU+%04x", sep, us->uc);
+ us = us->next;
+ sep = ", ";
+ }
+ ul = ul->next;
+ sep = " ";
+ }
+ fprintf(otab, "\n");
+ }
+ fclose(otab);
+ }
+
+ if (ofil) {
+ writepsffont(ofil, fontbuf, charsize, fontlen, psftype,
+ notable ? NULL : uclistheads);
+ fclose(ofil);
+ }
+
+ return EX_OK;
+}
/*
* resizecons.c - change console video mode
*
- * Version 0.98
+ * Version 1.00
*
* How to use this:
*
* For me this resulted in the files 80x25, 80x28, 80x50, 80x60, 100x40,
* 132x25, 132x28, 132x44. Put these files in /usr/lib/kbd/videomodes
* (or in your current dir).
- * 3. Now "resizecons COLSxROWS" will change your video mode. (Assuming you have
- * an appropriate kernel, and svgalib works for your video card.)
+ * 3. Now "resizecons COLSxROWS" will change your video mode. (Assuming you
+ * have an appropriate kernel, and svgalib works for your video card.)
*
* Note: this is experimental, but it works for me. Comments are welcome.
* You may have to be root to get the appropriate ioperm permissions.
#include <stdlib.h>
#include <unistd.h>
+#include <string.h>
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
#endif
#include <linux/vt.h>
#include "paths.h"
+#include "getfd.h"
+#include "findfile.h"
#include "nls.h"
+#include "version.h"
#define MODE_RESTORETEXTMODE 0
#define MODE_VGALINES 1
-extern char *index();
-extern int getfd();
static void usage(void);
/* VGA textmode register tweaking. */
-static void vga_init_io();
-static void vga_400_scanlines();
-static void vga_480_scanlines();
-static void vga_set_fontheight( int );
-static int vga_get_fontheight();
-static void vga_set_cursor( int, int );
-static void vga_set_verticaldisplayend_lowbyte( int );
+static void vga_init_io(void);
+static void vga_400_scanlines(void);
+static void vga_480_scanlines(void);
+static void vga_set_fontheight(int);
+static int vga_get_fontheight(void);
+static void vga_set_cursor(int, int);
+static void vga_set_verticaldisplayend_lowbyte(int);
char *dirpath[] = { "", DATADIR "/" VIDEOMODEDIR "/", 0};
char *suffixes[] = { "", 0 };
int
-main(argc, argv) int argc; char **argv; {
+main(int argc, char **argv) {
int rr, cc, fd, i, mode;
struct vt_sizes vtsizes;
struct vt_stat vtstat;
FILE *fin;
char *defaultfont;
+ set_progname(argv[0]);
+
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
if (argc < 2)
usage();
+
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
rr = 0; /* make gcc happy */
cc = atoi(argv[1]);
mode = MODE_RESTORETEXTMODE;
for (i=0; i<16; i++)
if (vtstat.v_state & (1<<i)) {
sprintf(tty, "/dev/tty%d", i);
- if ((fd = open(tty, 0)) > 0) {
+ if ((fd = open(tty, O_RDONLY)) > 0) {
if(ioctl(fd, TIOCSWINSZ, &winsize))
perror("TIOCSWINSZ");
close(fd);
}
}
+#if 0
/* Try to tell selection about the change */
- if ((fd = open("/tmp/selection.pid", 0)) >= 0) {
+ /* [may be a security risk?] */
+ if ((fd = open("/tmp/selection.pid", O_RDONLY)) >= 0) {
char buf[64];
int n = read(fd, buf, sizeof(buf));
if (n > 0) {
}
close(fd);
}
+#endif
/* do: setfont default8x16 */
/* (other people might wish other fonts - this should be settable) */
return 0;
}
-void
+static void
usage() {
fprintf(stderr,
_("resizecons:\n"
* and give them your favourite owners and permissions.
*/
#include <stdio.h>
-#include <linux/termios.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <sys/ioctl.h>
+#include "xmalloc.h"
#include "nls.h"
-extern char *malloc();
+#include "version.h"
int
main(int argc, char **argv) {
int fd, i, j;
char *inbuf, *outbuf, *p, *q;
+ set_progname(argv[0]);
+
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
if (argc > 2) {
fprintf(stderr, _("usage: screendump [n]\n"));
exit(1);
cons = (argc == 2) ? atoi(argv[1]) : 0;
sprintf(infile, "/dev/vcsa%d", cons);
- fd = open(infile, 0);
+ fd = open(infile, O_RDONLY);
+ if (fd < 0 && cons == 0 && errno == ENOENT)
+ fd = open("/dev/vcsa", O_RDONLY);
if (fd < 0 || read(fd, header, 4) != 4)
goto try_ioctl;
rows = header[0];
cols = header[1];
if (rows * cols == 0)
goto try_ioctl;
- inbuf = malloc(rows*cols*2);
- outbuf = malloc(rows*(cols+1));
- if(!inbuf || !outbuf) {
- fprintf(stderr, _("Out of memory?\n"));
- exit(1);
- }
+ inbuf = xmalloc(rows*cols*2);
+ outbuf = xmalloc(rows*(cols+1));
+
if (read(fd, inbuf, rows*cols*2) != rows*cols*2) {
fprintf(stderr, _("Error reading %s\n"), infile);
exit(1);
unsigned char *screenbuf;
sprintf(consnam, "/dev/tty%d", cons);
- if((fd = open(consnam, 0)) < 0) {
+ if((fd = open(consnam, O_RDONLY)) < 0) {
perror(consnam);
fd = 0;
}
exit(1);
}
- screenbuf = malloc(2 + win.ws_row * win.ws_col);
- if (!screenbuf) {
- fprintf(stderr, _("Out of memory.\n"));
- exit(1);
- }
-
+ screenbuf = xmalloc(2 + win.ws_row * win.ws_col);
screenbuf[0] = 0;
screenbuf[1] = (unsigned char) cons;
if (ioctl(fd,TIOCLINUX,screenbuf) &&
(!fd || ioctl(0,TIOCLINUX,screenbuf))) {
+#if 0
perror("TIOCLINUX");
fprintf(stderr,_("couldn't read %s, and cannot ioctl dump\n"),
infile);
+#else
+ /* we tried this just to be sure, but TIOCLINUX
+ function 0 has been disabled since 1.1.92
+ Do not mention `ioctl dump' in error msg */
+ fprintf(stderr,_("couldn't read %s\n"), infile);
+#endif
exit(1);
}
exit(1);
}
- outbuf = malloc(rows*(cols+1));
- if(!outbuf) {
- fprintf(stderr, _("Out of memory?\n"));
- exit(1);
- }
+ outbuf = xmalloc(rows*(cols+1));
p = screenbuf + 2;
q = outbuf;
for (i=0; i<rows; i++) {
/*
* setfont.c - Eugene Crosser & Andries Brouwer
*
- * Version 0.98
+ * Version 1.00
*
* Loads the console font, and possibly the corresponding screen map(s).
* We accept two kind of screen maps, one [-m] giving the correspondence
* font positions, and the second [-u] giving the correspondence between
* font positions and Unicode values.
*/
-#define VERSION "0.98"
#include <stdio.h>
#include <memory.h>
#include <fcntl.h>
#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/kd.h>
#include <endian.h>
+#include <sysexits.h>
#include "paths.h"
+#include "getfd.h"
+#include "findfile.h"
+#include "loadunimap.h"
#include "psf.h"
+#include "psffontop.h"
+#include "kdfontop.h"
+#include "xmalloc.h"
#include "nls.h"
-
-char *progname;
+#include "version.h"
static int position_codepage(int iunit);
static void saveoldfont(int fd, char *ofil);
static void saveoldfontplusunicodemap(int fd, char *Ofil);
static void loadnewfont(int fd, char *ifil,
int iunit, int hwunit, int no_m, int no_u);
+static void loadnewfonts(int fd, char **ifiles, int ifilct,
+ int iunit, int hwunit, int no_m, int no_u);
static void restorefont(int fd);
extern void saveoldmap(int fd, char *omfil);
extern void loadnewmap(int fd, char *mfil);
-extern void saveunicodemap(int fd, char *oufil);
-extern void loadunicodemap(int fd, char *ufil);
-extern void appendunicodemap(int fd, FILE *fp, int ct);
extern void activatemap(void);
-extern int getfd(void);
-extern int getfont(int fd, char *buf, int *count);
-extern int putfont(int fd, char *buf, int count, int height);
+extern void disactivatemap(void);
extern int font_charheight(char *buf, int count);
-extern char *malloc();
int verbose = 0;
int force = 0;
/* search for the font in these directories (with trailing /) */
char *fontdirpath[] = { "", DATADIR "/" FONTDIR "/", 0 };
char *fontsuffixes[] = { "", ".psfu", ".psf", ".cp", ".fnt", 0 };
+/* hide partial fonts a bit - loading a single one is a bad idea */
+char *partfontdirpath[] = { "", DATADIR "/" FONTDIR "/" PARTIALDIR "/", 0 };
+char *partfontsuffixes[] = { "", 0 };
static inline FILE*
findfont(char *fnam) {
return findfile(fnam, fontdirpath, fontsuffixes);
}
-void
+static inline FILE*
+findpartialfont(char *fnam) {
+ return findfile(fnam, partfontdirpath, partfontsuffixes);
+}
+
+static void
usage(void)
{
fprintf(stderr, _(
-"Usage: setfont [write-options] [-<N>] [newfont] [-m consolemap] [-u unicodemap]\n"
+"Usage: setfont [write-options] [-<N>] [newfont..] [-m consolemap] [-u unicodemap]\n"
" write-options (take place before file loading):\n"
" -o <filename> Write current font to <filename>\n"
" -om <filename> Write current consolemap to <filename>\n"
" -V Print version and exit.\n"
"Files are loaded from the current directory or /usr/lib/kbd/*/.\n"
));
- exit(1);
+ exit(EX_USAGE);
}
+#define MAXIFILES 256
+
int
main(int argc, char *argv[])
{
- char *ifil, *mfil, *ufil, *Ofil, *ofil, *omfil, *oufil;
- int fd, i, iunit, hwunit, no_m, no_u;
+ char *ifiles[MAXIFILES], *mfil, *ufil, *Ofil, *ofil, *omfil, *oufil;
+ int ifilct = 0, fd, i, iunit, hwunit, no_m, no_u;
int restore = 0;
- progname = argv[0];
+ set_progname(argv[0]);
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
fd = getfd();
- ifil = mfil = ufil = Ofil = ofil = omfil = oufil = 0;
+ ifiles[0] = mfil = ufil = Ofil = ofil = omfil = oufil = 0;
iunit = hwunit = 0;
no_m = no_u = 0;
for (i = 1; i < argc; i++) {
if (!strcmp(argv[i], "-V")) {
- printf(_("setfont version %s\n"), VERSION);
- exit(0);
+ print_version_and_exit();
} else if (!strcmp(argv[i], "-v")) {
verbose = 1;
} else if (!strcmp(argv[i], "-R")) {
if(iunit <= 0 || iunit > 32)
usage();
} else {
- if (ifil)
- usage();
- ifil = argv[i];
+ if (ifilct == MAXIFILES) {
+ fprintf(stderr, _("setfont: too many input files\n"));
+ exit(EX_USAGE);
+ }
+ ifiles[ifilct++] = argv[i];
}
}
- if (ifil && restore) {
+ if (ifilct && restore) {
fprintf(stderr, _("setfont: cannot both restore from character ROM"
" and from file. Font unchanged.\n"));
- exit(1);
+ exit(EX_USAGE);
}
- if (!ifil && !mfil && !ufil &&
+ if (!ifilct && !mfil && !ufil &&
!Ofil && !ofil && !omfil && !oufil && !restore)
/* reset to some default */
- ifil = "";
+ ifiles[ifilct++] = "";
if (Ofil)
saveoldfontplusunicodemap(fd, Ofil);
if (restore)
restorefont(fd);
- if (ifil)
- loadnewfont(fd, ifil, iunit, hwunit, no_m, no_u);
+ if (ifilct)
+ loadnewfonts(fd, ifiles, ifilct, iunit, hwunit, no_m, no_u);
if (ufil)
loadunicodemap(fd, ufil);
}
}
+/*
+ * 0 - do not test, 1 - test and warn, 2 - test and wipe, 3 - refuse
+ */
+static int erase_mode = 1;
+
static void
-do_loadfont(int fd, char *inbuf, int unit, int hwunit, int fontsize) {
+do_loadfont(int fd, char *inbuf, int unit, int hwunit, int fontsize,
+ char *pathname) {
char buf[16384];
int i;
+ int bad_video_erase_char = 0;
memset(buf,0,sizeof(buf));
if (unit < 1 || unit > 32) {
- fprintf(stderr, _("Bad character size %d\n"), unit);
- exit(1);
+ fprintf(stderr, _("Bad character size %d\n"), unit);
+ exit(EX_DATAERR);
}
if (!hwunit)
- hwunit = unit;
+ hwunit = unit;
for (i = 0; i < fontsize; i++)
- memcpy(buf+(32*i), inbuf+(unit*i), unit);
+ memcpy(buf+(32*i), inbuf+(unit*i), unit);
- if (verbose)
- printf(_("Loading %d-char 8x%d font from file %s\n"),
- fontsize, unit, pathname);
+ /*
+ * Due to a kernel bug, font position 32 is used
+ * to erase the screen, regardless of maps loaded.
+ * So, usually this font position should be blank.
+ */
+ if (erase_mode) {
+ for (i = 0; i < 32; i++)
+ if (buf[32*32+i])
+ bad_video_erase_char = 1;
+ if (bad_video_erase_char) {
+ fprintf(stderr,
+ _("%s: font position 32 is nonblank\n"),
+ progname);
+ switch(erase_mode) {
+ case 3:
+ exit(EX_DATAERR);
+ case 2:
+ for (i = 0; i < 32; i++)
+ buf[32*32+i] = 0;
+ fprintf(stderr, _("%s: wiped it\n"), progname);
+ break;
+ case 1:
+ fprintf(stderr,
+ _("%s: background will look funny\n"),
+ progname);
+ }
+ fflush(stderr);
+ sleep(2);
+ }
+ }
+
+ if (verbose) {
+ if (pathname)
+ printf(_("Loading %d-char 8x%d font from file %s\n"),
+ fontsize, unit, pathname);
+ else
+ printf(_("Loading %d-char 8x%d font\n"),
+ fontsize, unit);
+ }
if (putfont(fd, buf, fontsize, hwunit))
- exit(1);
+ exit(EX_OSERR);
}
static void
-do_loadtable(int fd, unsigned char *inbuf, int tailsz, int fontsize) {
+do_loadtable(int fd, struct unicode_list *uclistheads, int fontsize) {
struct unimapinit advice;
struct unimapdesc ud;
struct unipair *up;
- int ct = 0, maxct;
- int glyph;
- u_short unicode;
-
- maxct = tailsz; /* more than enough */
- up = (struct unipair *) malloc(maxct * sizeof(struct unipair));
- if (!up) {
- fprintf(stderr, _("Out of memory?\n"));
- exit(1);
+ int i, ct = 0, maxct;
+ struct unicode_list *ul;
+ struct unicode_seq *us;
+
+ maxct = 0;
+ for (i = 0; i < fontsize; i++) {
+ ul = uclistheads[i].next;
+ while(ul) {
+ us = ul->seq;
+ if (us && ! us->next)
+ maxct++;
+ ul = ul->next;
+ }
}
- for (glyph = 0; glyph < fontsize; glyph++) {
- while (tailsz >= 2) {
- unicode = (((u_short) inbuf[1]) << 8) + inbuf[0];
- tailsz -= 2;
- inbuf += 2;
- if (unicode == PSF_SEPARATOR)
- break;
- up[ct].unicode = unicode;
- up[ct].fontpos = glyph;
- ct++;
- }
+ up = xmalloc(maxct * sizeof(struct unipair));
+ for (i = 0; i < fontsize; i++) {
+ ul = uclistheads[i].next;
+ while(ul) {
+ us = ul->seq;
+ if (us && ! us->next) {
+ up[ct].unicode = us->uc;
+ up[ct].fontpos = i;
+ ct++;
+ }
+ ul = ul->next;
+ }
+ }
+ if (ct != maxct) {
+ char *u = _("%s: bug in do_loadtable\n");
+ fprintf(stderr, u, progname);
+ exit(EX_SOFTWARE);
}
/* Note: after PIO_UNIMAPCLR and before PIO_UNIMAP
} else
#endif
perror("PIO_UNIMAPCLR");
- exit(1);
+ exit(EX_OSERR);
}
ud.entry_ct = ct;
ud.entries = up;
}
#endif
perror("PIO_UNIMAP");
- exit(1);
+ exit(EX_OSERR);
}
}
static void
+loadnewfonts(int fd, char **ifiles, int ifilct,
+ int iunit, int hwunit, int no_m, int no_u) {
+ FILE *fpi;
+ char *ifil, *inbuf, *fontbuf, *bigfontbuf;
+ int inputlth, fontbuflth, fontsize, unit;
+ int bigfontbuflth, bigfontsize, bigunit;
+ struct unicode_list *uclistheads;
+ int i;
+
+ if (ifilct == 1) {
+ loadnewfont(fd, ifiles[0], iunit, hwunit, no_m, no_u);
+ return;
+ }
+
+ /* several fonts that must be merged */
+ /* We just concatenate the bitmaps - only allow psf fonts */
+ bigfontbuf = NULL;
+ bigfontbuflth = 0;
+ bigfontsize = 0;
+ uclistheads = NULL;
+ bigunit = 0;
+
+ for (i=0; i<ifilct; i++) {
+ ifil = ifiles[i];
+ if ((fpi = findfont(ifil)) == NULL &&
+ (fpi = findpartialfont(ifil)) == NULL) {
+ fprintf(stderr, _("Cannot open font file %s\n"), ifil);
+ exit(EX_NOINPUT);
+ }
+
+ inbuf = fontbuf = NULL;
+ inputlth = fontbuflth = 0;
+ fontsize = 0;
+
+ if(readpsffont(fpi, &inbuf, &inputlth, &fontbuf, &fontbuflth,
+ &fontsize, bigfontsize,
+ no_u ? NULL : &uclistheads)) {
+ fprintf(stderr, _("When loading several fonts, all "
+ "must be psf fonts - %s isn't\n"),
+ pathname);
+ exit(EX_DATAERR);
+ }
+ unit = fontbuflth / fontsize;
+ if (verbose)
+ printf(_("Read %d-char 8x%d font from file %s\n"),
+ fontsize, unit, pathname);
+ if (bigunit == 0)
+ bigunit = unit;
+ else if (bigunit != unit) {
+ fprintf(stderr, _("When loading several fonts, all "
+ "must have the same pointsize\n"));
+ exit(EX_DATAERR);
+ }
+ bigfontsize += fontsize;
+ bigfontbuflth += fontbuflth;
+ bigfontbuf = xrealloc(bigfontbuf, bigfontbuflth);
+ memcpy(bigfontbuf+bigfontbuflth-fontbuflth,
+ fontbuf, fontbuflth);
+ }
+
+ do_loadfont(fd, bigfontbuf, bigunit, hwunit, bigfontsize, NULL);
+ if (uclistheads && !no_u)
+ do_loadtable(fd, uclistheads, bigfontsize);
+}
+
+static void
loadnewfont(int fd, char *ifil, int iunit, int hwunit, int no_m, int no_u) {
FILE *fpi;
char defname[20];
- int unit;
- char inbuf[32768]; /* primitive */
- int inputlth, offset;
+ int unit, def = 0;
+ char *inbuf, *fontbuf;
+ int inputlth, fontbuflth, fontsize, offset;
+ struct unicode_list *uclistheads;
if (!*ifil) {
- /* try to find some default file */
-
- if (iunit < 0 || iunit > 32)
- iunit = 0;
- if (iunit == 0) {
- if ((fpi = findfont(ifil = "default")) == NULL &&
- (fpi = findfont(ifil = "default8x16")) == NULL &&
- (fpi = findfont(ifil = "default8x14")) == NULL &&
- (fpi = findfont(ifil = "default8x8")) == NULL) {
- fprintf(stderr, _("Cannot find default font\n"));
- exit(1);
+ /* try to find some default file */
+
+ def = 1; /* maybe also load default unimap */
+
+ if (iunit < 0 || iunit > 32)
+ iunit = 0;
+ if (iunit == 0) {
+ if ((fpi = findfont(ifil = "default")) == NULL &&
+ (fpi = findfont(ifil = "default8x16")) == NULL &&
+ (fpi = findfont(ifil = "default8x14")) == NULL &&
+ (fpi = findfont(ifil = "default8x8")) == NULL) {
+ fprintf(stderr, _("Cannot find default font\n"));
+ exit(EX_NOINPUT);
+ }
+ } else {
+ sprintf(defname, "default8x%d", iunit);
+ if ((fpi = findfont(ifil = defname)) == NULL &&
+ (fpi = findfont(ifil = "default")) == NULL) {
+ fprintf(stderr, _("Cannot find %s font\n"), ifil);
+ exit(EX_NOINPUT);
+ }
}
- } else {
- sprintf(defname, "default8x%d", iunit);
- if ((fpi = findfont(ifil = defname)) == NULL &&
- (fpi = findfont(ifil = "default")) == NULL) {
- fprintf(stderr, _("Cannot find %s font\n"), ifil);
- exit(1);
- }
- }
} else {
- if ((fpi = findfont(ifil)) == NULL) {
- fprintf(stderr, _("Cannot open font file %s\n"), ifil);
- exit(1);
- }
+ if ((fpi = findfont(ifil)) == NULL) {
+ fprintf(stderr, _("Cannot open font file %s\n"), ifil);
+ exit(EX_NOINPUT);
+ }
}
- /*
- * We used to look at the length of the input file
- * with stat(); now that we accept compressed files,
- * just read the entire file.
- */
- inputlth = fread(inbuf, 1, sizeof(inbuf), fpi);
- if (ferror(fpi)) {
- fprintf(stderr, _("Error reading input font"));
- exit(1);
- }
- /* use malloc/realloc in case of giant files;
- maybe these do not occur: 16kB for the font,
- and 16kB for the map leaves 32 unicode values
- for each font position */
- if (!feof(fpi)) {
- fprintf(stderr, _(
-"Setfont is so naive as to believe that font files\n"
-"have a size of at most 32kB. Unfortunately it seems\n"
-"that you encountered an exception. If this really is\n"
-"a font file, (i) recompile setfont, (ii) tell aeb@cwi.nl .\n"
-));
- exit(1);
+ inbuf = fontbuf = NULL;
+ inputlth = fontbuflth = fontsize = 0;
+ uclistheads = NULL;
+ if(readpsffont(fpi, &inbuf, &inputlth, &fontbuf, &fontbuflth,
+ &fontsize, 0, no_u ? NULL : &uclistheads) == 0) {
+ /* we've got a psf font */
+ unit = fontbuflth / fontsize;
+
+ do_loadfont(fd, fontbuf, unit, hwunit, fontsize, pathname);
+ if (uclistheads && !no_u)
+ do_loadtable(fd, uclistheads, fontsize);
+#if 1
+ if (!uclistheads && !no_u && def)
+ loadunicodemap(fd, "def.uni");
+#endif
+ return;
}
- fpclose(fpi);
-
- /* test for psf first */
- {
- struct psf_header psfhdr;
- int fontsize;
- int hastable;
- int head0, head;
- if (inputlth < sizeof(struct psf_header))
- goto no_psf;
-
- psfhdr = * (struct psf_header *) &inbuf[0];
-
- if (!PSF_MAGIC_OK(psfhdr))
- goto no_psf;
-
- if (psfhdr.mode > PSF_MAXMODE) {
- fprintf(stderr, _("Unsupported psf file mode\n"));
- exit(1);
- }
- fontsize = ((psfhdr.mode & PSF_MODE512) ? 512 : 256);
- hastable = (psfhdr.mode & PSF_MODEHASTAB);
- unit = psfhdr.charsize;
- head0 = sizeof(struct psf_header);
- head = head0 + fontsize*unit;
- if (head > inputlth || (!hastable && head != inputlth)) {
- fprintf(stderr, _("Input file: bad length\n"));
- exit(1);
- }
- do_loadfont(fd, inbuf + head0, unit, hwunit, fontsize);
- if (hastable && !no_u)
- do_loadtable(fd, inbuf + head, inputlth-head, fontsize);
- return;
+ /* instructions to combine fonts? */
+ { char *combineheader = "# combine partial fonts\n";
+ int chlth = strlen(combineheader);
+ char *p, *q;
+ if (inputlth >= chlth && !strncmp(inbuf, combineheader, chlth)) {
+ char *ifiles[MAXIFILES];
+ int ifilct = 0;
+ q = inbuf + chlth;
+ while(q < inbuf + inputlth) {
+ p = q;
+ while (q < inbuf+inputlth && *q != '\n')
+ q++;
+ if (q == inbuf+inputlth) {
+ fprintf(stderr,
+ _("No final newline in combine file\n"));
+ exit(EX_DATAERR);
+ }
+ *q++ = 0;
+ if (ifilct == MAXIFILES) {
+ fprintf(stderr,
+ _("Too many files to combine\n"));
+ exit(EX_DATAERR);
+ }
+ ifiles[ifilct++] = p;
+ }
+ /* recursive call */
+ loadnewfonts(fd, ifiles, ifilct, iunit, hwunit, no_m, no_u);
+ return;
+ }
}
- no_psf:
/* file with three code pages? */
if (inputlth == 9780) {
- offset = position_codepage(iunit);
- unit = iunit;
+ offset = position_codepage(iunit);
+ unit = iunit;
+ fontsize = 256;
+ } else if (inputlth == 32768) {
+ /* restorefont -w writes a SVGA font to file
+ restorefont -r restores it
+ These fonts have size 32768, for two 512-char fonts.
+ In fact, when BROKEN_GRAPHICS_PROGRAMS is defined,
+ and it always is, there is no default font that is saved,
+ so probably the second half is always garbage. */
+ fprintf(stderr, _("Hmm - a font from restorefont? "
+ "Using the first half.\n"));
+ inputlth = 16384; /* ignore rest */
+ fontsize = 512;
+ offset = 0;
+ unit = 32;
+ if (!hwunit)
+ hwunit = 16;
} else {
- /* bare font */
- if (inputlth & 0377) {
- fprintf(stderr, _("Bad input file size\n"));
- exit(1);
- }
- offset = 0;
- unit = inputlth/256;
+ int rem = (inputlth % 256);
+ if (rem == 0 || rem == 40) {
+ /* 0: bare code page bitmap */
+ /* 40: preceded by .cp header */
+ /* we might check some header details */
+ offset = rem;
+ } else {
+ fprintf(stderr, _("Bad input file size\n"));
+ exit(EX_DATAERR);
+ }
+ fontsize = 256;
+ unit = inputlth/256;
}
- do_loadfont(fd, inbuf+offset, unit, hwunit, 256);
+ do_loadfont(fd, inbuf+offset, unit, hwunit, fontsize, pathname);
}
static int
" Please indicate\n"
"using an option -8 or -14 or -16 "
"which one you want loaded.\n"));
- exit(1);
+ exit(EX_USAGE);
}
switch (iunit) {
case 8:
fprintf(stderr, _("You asked for font size %d, "
"but only 8, 14, 16 are possible here.\n"),
iunit);
- exit(1);
+ exit(EX_USAGE);
}
return offset;
}
static void
do_saveoldfont(int fd, char *ofil, FILE *fpo, int unimap_follows, int *count) {
int i, unit, ct;
- char buf[16384];
+ char buf[65536];
- ct = sizeof(buf)/32;
- if (getfont(fd, buf, &ct))
- exit(1);
+ ct = sizeof(buf)/(32*32/8); /* max size 32x32, 8 bits/byte */
+ if (getfont(fd, buf, &ct, NULL)) /* ignore height given by kernel */
+ exit(EX_OSERR);
/* save as efficiently as possible */
unit = font_charheight(buf, ct);
/* Do we need a psf header? */
/* Yes if ct=512 - otherwise we cannot distinguish
a 512-char 8x8 and a 256-char 8x16 font. */
+#define ALWAYS_PSF_HEADER 1
- if (ct != 256 || unimap_follows) {
- struct psf_header psfhdr;
+ if (ct != 256 || unimap_follows || ALWAYS_PSF_HEADER) {
+ struct psf1_header psfhdr;
- psfhdr.magic1 = PSF_MAGIC1;
- psfhdr.magic2 = PSF_MAGIC2;
+ psfhdr.magic[0] = PSF1_MAGIC0;
+ psfhdr.magic[1] = PSF1_MAGIC1;
psfhdr.mode = 0;
if (ct != 256)
- psfhdr.mode |= PSF_MODE512;
+ psfhdr.mode |= PSF1_MODE512;
if (unimap_follows)
- psfhdr.mode |= PSF_MODEHASTAB;
+ psfhdr.mode |= PSF1_MODEHASTAB;
psfhdr.charsize = unit;
- if (fwrite(&psfhdr, sizeof(struct psf_header), 1, fpo) != 1) {
+ if (fwrite(&psfhdr, sizeof(struct psf1_header), 1, fpo) != 1) {
fprintf(stderr, _("Cannot write font file header"));
- exit(1);
+ exit(EX_IOERR);
}
}
for (i = 0; i < ct; i++)
if (fwrite(buf+(32*i), unit, 1, fpo) != 1) {
fprintf(stderr, _("Cannot write font file"));
- exit(1);
+ exit(EX_IOERR);
}
if (verbose)
printf(_("Saved %d-char 8x%d font file on %s\n"), ct, unit, ofil);
if((fpo = fopen(ofil, "w")) == NULL) {
perror(ofil);
- exit(1);
+ exit(EX_CANTCREAT);
}
do_saveoldfont(fd, ofil, fpo, 0, NULL);
fclose(fpo);
}
static void
-saveoldfontplusunicodemap(int fd, char *Ofil){
+saveoldfontplusunicodemap(int fd, char *Ofil) {
FILE *fpo;
int ct;
if((fpo = fopen(Ofil, "w")) == NULL) {
perror(Ofil);
- exit(1);
+ exit(EX_CANTCREAT);
}
ct = 0;
do_saveoldfont(fd, Ofil, fpo, 1, &ct);
- appendunicodemap(fd, fpo, ct);
+ appendunicodemap(fd, fpo, ct, 0);
fclose(fpo);
}
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
+#include "getfd.h"
#include "nls.h"
+#include "version.h"
-extern int getfd();
-
-void
+static void
usage(char *s) {
fprintf(stderr, "setkeycode: %s\n", s);
fprintf(stderr, _(
int fd, sc;
struct kbkeycode a;
+ set_progname(argv[0]);
+
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
if (argc % 2 != 1)
usage(_("even number of arguments expected"));
fd = getfd();
/*
- * setleds.c - aeb, 940130, 940909
+ * setleds.c - aeb, 940130, 940909, 991008
*
* Call: setleds [-L] [-D] [-F] [{+|-}{num|caps|scroll}]*
* will set or clear the indicated flags on the stdin tty,
#include <linux/kd.h>
#include <sys/ioctl.h>
#include "nls.h"
+#include "version.h"
-void
+#ifdef __sparc__
+#include <asm/kbio.h>
+#endif
+
+static void
usage(void)
{
fprintf(stderr, _(
"Usage:\n"
-" setleds [-v] [-L] [-D] [-F] [[+|-][ num | caps | scroll ]]\n"
+" setleds [-v] [-L] [-D] [-F] [[+|-][ num | caps | scroll %s]]\n"
"Thus,\n"
" setleds +caps -num\n"
"will set CapsLock, clear NumLock and leave ScrollLock unchanged.\n"
"With -L, setleds only sets the leds, and leaves the flags alone.\n"
"With -D, setleds sets both the flags and the default flags, so\n"
"that a subsequent reset will not change the flags.\n"
-));
+),
+#ifdef __sparc__
+ "| compose "
+#else
+ ""
+#endif
+ );
exit(1);
}
-
-
#define onoff(a) ((a) ? _("on ") : _("off"))
-void
-report(leds) int leds;
-{
- printf("NumLock %s CapsLock %s ScrollLock %s\n",
- onoff(leds & LED_NUM),
- onoff(leds & LED_CAP),
- onoff(leds & LED_SCR));
+/* report the bits, in the order seen on the (my) keyboard */
+#define LED_NLOCK 1
+#define LED_CMPOSE 2
+#define LED_SCRLCK 4
+#define LED_CLOCK 8
+
+static void
+sunreport(int leds) {
+ printf("NumLock %s Compose %s ScrollLock %s CapsLock %s\n",
+ onoff(leds & LED_NLOCK),
+ onoff(leds & LED_CMPOSE),
+ onoff(leds & LED_SCRLCK),
+ onoff(leds & LED_CLOCK));
+}
+
+static void
+report(int leds) {
+ printf("NumLock %s CapsLock %s ScrollLock %s\n",
+ onoff(leds & LED_NUM),
+ onoff(leds & LED_CAP),
+ onoff(leds & LED_SCR));
}
struct led {
char *name;
int bit;
-} leds[3] = {
- { "scroll", LED_SCR },
- { "num", LED_NUM },
- { "caps", LED_CAP }
+ int sunbit;
+} leds[] = {
+ { "scroll", LED_SCR, LED_SCRLCK },
+ { "num", LED_NUM, LED_NLOCK },
+ { "caps", LED_CAP, LED_CLOCK },
+#ifdef __sparc__
+ { "compose", 0, LED_CMPOSE }
+#endif
};
+static void
+getleds(char *leds) {
+ if (ioctl(0, KDGETLED, leds)) {
+ perror("KDGETLED");
+ fprintf(stderr,
+ _("Error reading current led setting. Maybe stdin is not a VT?\n"));
+ exit(1);
+ }
+}
+
+static int
+setleds(char leds) {
+ if (ioctl(0, KDSETLED, leds)) {
+ perror("KDSETLED");
+ return -1;
+ }
+ return 0;
+}
+
+static void
+getflags(char *flags) {
+ if (ioctl(0, KDGKBLED, flags)) {
+ perror("KDGKBLED");
+ fprintf(stderr,
+ _("Error reading current flags setting. Maybe an old kernel?\n"));
+ exit(1);
+ }
+}
+
+static int sunkbdfd = -1;
+
+static void
+sungetleds(char *leds) {
+#ifdef KIOCGLED
+ if (ioctl(sunkbdfd, KIOCGLED, leds)) {
+ perror("KIOCGLED");
+ fprintf(stderr,
+ _("Error reading current led setting from /dev/kbd.\n"));
+ exit(1);
+ }
+#else
+ fprintf(stderr, _("KIOCGLED unavailable?\n"));
+ exit(1);
+#endif
+}
+
+static void
+sunsetleds(char *leds) {
+#ifdef KIOCSLED
+ if (ioctl(sunkbdfd, KIOCSLED, leds)) {
+ perror("KIOCGSLED");
+ fprintf(stderr,
+ _("Error reading current led setting from /dev/kbd.\n"));
+ exit(1);
+ }
+#else
+ fprintf(stderr, _("KIOCSLED unavailable?\n"));
+ exit(1);
+#endif
+}
+
int
-main(argc,argv) int argc; char **argv;
-{
+main(int argc, char **argv) {
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 *ap;
struct led *lp;
+ set_progname(argv[0]);
+
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
- if (ioctl(0, KDGETLED, &oleds)) {
- perror("KDGETLED");
- fprintf(stderr,
- _("Error reading current led setting. Maybe stdin is not a VT?\n"));
- exit(1);
- }
+ if (argc == 2 && !strcmp("-V", argv[1]))
+ print_version_and_exit();
- if (ioctl(0, KDGKBLED, &oflags)) {
- perror("KDGKBLED");
- fprintf(stderr,
- _("Error reading current flags setting. Maybe an old kernel?\n"));
- exit(1);
+#ifdef __sparc__
+ sunkbdfd = open("/dev/kbd", O_RDONLY);
+ if (sunkbdfd < 0) {
+ perror("/dev/kbd");
+ fprintf(stderr, _("Error opening /dev/kbd.\n"));
+ /* exit(1); */
}
+#endif
+
+ getflags(&oflags);
+ getleds(&oleds);
+ if (sunkbdfd >= 0)
+ sungetleds(&osunleds);
while (argc > 1) {
if (!strcmp("-L", argv[1]))
if (argc <= 1) {
if (optL) {
nleds = 0xff;
- if (ioctl(0, KDSETLED, &nleds)) {
- perror("KDSETLED");
+ if (setleds(nleds)) {
fprintf(stderr, _("Error resetting ledmode\n"));
exit(1);
}
}
if (optL) {
printf(_("Current leds: "));
- report(oleds);
+ if (sunkbdfd >= 0)
+ sunreport(osunleds);
+ else
+ report(oleds);
}
exit(0);
}
optF = 1;
nval = 0;
ndef = 0;
+ nsunval = 0;
+ nsundef = 0;
while(--argc) {
ap = *++argv;
sign = 0;
ap++;
}
- for (lp = leds; lp-leds < 3; lp++) {
+ for (lp = leds; lp-leds < sizeof(leds)/sizeof(leds[0]); lp++) {
if(!strcmp(ap, lp->name)) {
- if(sign)
+ if(sign) {
nval |= lp->bit;
+ nsunval |= lp->sunbit;
+ }
ndef |= lp->bit;
+ nsundef |= lp->sunbit;
goto nxtarg;
}
}
}
}
if (optL) {
- nleds = (oleds & ~ndef) | nval;
- if (verbose) {
- printf(_("Old leds: "));
- report(oleds);
- printf(_("New leds: "));
- report(nleds);
- }
- if (ioctl(0, KDSETLED, nleds)) {
- perror("KDSETLED");
- exit(1);
+ if (sunkbdfd >= 0) {
+ nsunleds = (osunleds & ~nsundef) | nsunval;
+ if (verbose) {
+ printf(_("Old leds: "));
+ sunreport(osunleds);
+ printf(_("New leds: "));
+ sunreport(nsunleds);
+ }
+ sunsetleds(&nsunleds);
+ } else {
+ nleds = (oleds & ~ndef) | nval;
+ if (verbose) {
+ printf(_("Old leds: "));
+ report(oleds);
+ printf(_("New leds: "));
+ report(nleds);
+ }
+ if (setleds(nleds))
+ exit(1);
}
}
exit(0);
#include <linux/kd.h>
#include <sys/ioctl.h>
#include "nls.h"
+#include "version.h"
-void
+static void
usage(void)
{
fprintf(stderr, _(
exit(1);
}
-void
-report(meta) int meta;
-{
+static void
+report(int meta) {
char *s;
switch(meta) {
#define SIZE(a) (sizeof(a)/sizeof(a[0]))
int
-main(argc,argv) int argc; char **argv;
-{
+main(int argc, char **argv) {
char ometa, nmeta;
struct meta *mp;
+ set_progname(argv[0]);
+
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
if (ioctl(0, KDGKBMETA, &ometa)) {
perror("KDGKBMETA");
fprintf(stderr,
* usage: setvesablank ON|on|off
*/
#include <stdio.h>
-#include <linux/termios.h>
+#include <sys/ioctl.h>
+#include "getfd.h"
#include "nls.h"
-extern int getfd();
-
+int
main(int argc, char *argv[]) {
int fd;
struct { char ten, onoff; } arg;
perror("setvesablank: TIOCLINUX");
exit(1);
}
- exit(0);
+ return 0;
}
#include <stdio.h>
#include <sys/ioctl.h>
#include "nls.h"
+#include "version.h"
#define CSI 155
#define CSI_ERSATZ 126
char obuf[E_TABSZ], nbuf[E_TABSZ];
-void
-leave(n) int n; {
+static void
+leave(int n) {
printf("\0338"); /* restore attributes */
if (ioctl(0,PIO_SCRNMAP,obuf)) {
perror("PIO_SCRNMAP");
}
int
-main (argc,argv) int argc; char **argv; {
+main (int argc, char **argv) {
unsigned char i, j, k;
+ set_progname(argv[0]);
+
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ if (argc == 2 && !strcmp(argv[1], "-V"))
+ print_version_and_exit();
+
if (argc != 1) {
fprintf(stderr,
_("usage: showfont\n"
#include <linux/kd.h>
#include <linux/keyboard.h>
#include <sys/ioctl.h>
+#include "getfd.h"
#include "nls.h"
-
-#define VERSION "0.98"
+#include "version.h"
int tmp; /* for debugging */
-extern int getfd();
int fd;
int oldkbmode;
struct termios old;
* version 0.81 of showkey would restore kbmode unconditially to XLATE,
* thus making the console unusable when it was called under X.
*/
-void get_mode(void) {
+static void
+get_mode(void) {
char *m;
if (ioctl(fd, KDGKBMODE, &oldkbmode)) {
printf("\n");
}
-void clean_up(void) {
+static void
+clean_up(void) {
if (ioctl(fd, KDSKBMODE, oldkbmode)) {
perror("KDSKBMODE");
exit(1);
close(fd);
}
-void die(int x) {
+static void
+die(int x) {
printf(_("caught signal %d, cleaning up...\n"), x);
clean_up();
exit(1);
}
-void watch_dog(int x) {
+static void
+watch_dog(int x) {
clean_up();
exit(0);
}
-void usage(void) {
+static void
+usage(void) {
fprintf(stderr, _(
"showkey version %s\n\n"
"usage: showkey [options...]\n"
int
main (int argc, char *argv[]) {
- const char *short_opts = "hask";
+ const char *short_opts = "haskV";
const struct option long_opts[] = {
{ "help", no_argument, NULL, 'h' },
{ "ascii", no_argument, NULL, 'a' },
{ "scancodes", no_argument, NULL, 's' },
{ "keycodes", no_argument, NULL, 'k' },
+ { "version", no_argument, NULL, 'V' },
{ NULL, 0, NULL, 0 }
};
int c;
unsigned char buf[16];
int i, n;
+ set_progname(argv[0]);
+
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
case 'a':
print_ascii = 1;
break;
+ case 'V':
+ print_version_and_exit();
case 'h':
case '?':
usage();
void
sighup(){
- system("open -s -l bash");
+ system("openvt -s -l bash");
signal(SIGHUP, sighup);
}
main(){
int fd;
- fd = open("/dev/console", 0);
+ fd = open("/dev/tty0", 0);
if (fd < 0)
fd = 0;
signal(SIGHUP, sighup);
void
sighup(){
- system("open -s -l -- login -h spawn");
+ system("openvt -s -l -- login -h spawn");
signal(SIGHUP, sighup);
}
main(){
int fd;
- fd = open("/dev/console", 0);
+ fd = open("/dev/tty0", 0);
if (fd < 0)
fd = 0;
signal(SIGHUP, sighup);
--- /dev/null
+#include <string.h>
+
+#define VERSION "1.00"
+
+char *progname;
+
+static inline void
+set_progname(char *name) {
+ char *p;
+
+ p = rindex(name, '/');
+ progname = (p ? p+1 : name);
+}
+
+static inline void
+print_version_and_exit(void) {
+ printf(_("%s from %s\n"), progname, "kbd-" VERSION);
+ exit(0);
+}
#endif /* PLAN9 */
};
-int
+static int
our_wctomb(char *s, unsigned long wc)
{
if(s == 0)
--- /dev/null
+/* Error-free versions of some libc routines */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sysexits.h>
+#include "nls.h"
+#include "xmalloc.h"
+
+extern char *progname;
+
+static void
+nomem(void) {
+ fprintf(stderr, _("%s: out of memory\n"), progname);
+ exit(EX_OSERR);
+}
+
+void *
+xmalloc(size_t sz) {
+ void *p = malloc(sz);
+ if (p == NULL)
+ nomem();
+ return p;
+}
+
+void *
+xrealloc(void *pp, size_t sz) {
+ void *p = realloc(pp, sz);
+ if (p == NULL)
+ nomem();
+ return p;
+}
+
+char *
+xstrdup(char *p) {
+ char *q = strdup(p);
+ if (q == NULL)
+ nomem();
+ return q;
+}
--- /dev/null
+/* Error-free versions of some libc routines */
+extern void *xmalloc(size_t sz);
+extern void *xrealloc(void *p, size_t sz);
+extern char *xstrdup(char *p);