home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
boot
/
i386
/
root
/
bin
/
unicode_start
< prev
next >
Wrap
Text File
|
2006-11-29
|
3KB
|
100 lines
#!/bin/sh
# Enables Unicode processing in the current console.
# 0. Check whether we're on a console
TTY=`/usr/bin/tty`
case $TTY in
/dev/console|/dev/tty[0-9]*)
;;
*)
echo "unicode_start skipped on $TTY"
exit 0
;;
esac
# 1. The input side: the keyboard driver.
# Set the keyboard driver in Unicode mode. (Default is ASCII mode.)
# This really does nothing with the way normal keys are handled in
# the kernel. All it does is:
# - It is necessary for `dumpkeys' in order to not drop U+XXXX
# entries from the keymaps.
# - It is necessary for `loadkeys' in order to avoid warnings.
# - Unicode characters typed as Alt-x1 ... Alt-xn (where x1,...,xn
# are digits on the numeric keypad) will be emitted in UTF-8.
kbd_mode -u
# Change the keyboard mapping in such a way that the non-ASCII keys
# produce UTF-8 encoded multibyte sequences, instead of single bytes
# >= 0x80 in a legacy 8-bit encoding.
# There is no way of reverting the effect of "dumpkeys | loadkeys --unicode",
# the memory of the earlier keymap is lost. Therefore, try
# to save a copy of the original keymap to be able to reload it in unicode_stop.
# (see also http://mail.nl.linux.org/linux-utf8/2003-08/msg00053.html):
test -z "$HOME" -o "/" == "$HOME" && HOME=/root
test -d $HOME/.kbd || mkdir $HOME/.kbd
dumpkeys > $HOME/.kbd/.keymap_sv
# redirect stderr and stdout of loadkeys to /dev/null to avoid the confusing
# "plus before udiaeresis ignored" warnings.
dumpkeys | loadkeys --unicode > /dev/null 2>&1
# 2. The output side: the console screen.
# Tell the console output driver that the bytes arriving are UTF-8
# encoded multibyte sequences.
echo -n -e '\033%G'
# Tell the graphics card how to display Unicode characters not
# contained in the IBM 437 character set (on PCs). The font should
# have a Unicode map attached, or explicitly specified, e.g.,
# by giving `def.uni' as a second argument.
DEFAULT_UNICODE_FONT=LatArCyrHeb-16
# Also drdos8x16 is a good candidate.
# Fonts with 512 glyphs like LatArCyrHeb-16 make it impossible to use bold
# on the console, which makes YaST2 unusable. To be able to use bold,
# only fonts with 256 glyphs can be used. Therefore we prefer
# the font specified in /etc/sysconfig/console. This should be OK because
# the default font written to /etc/sysconfig/console by YaST2
# is currently always a font with 256 glyphs and a Unicode map
# which is suitable for the language used during the installation.
case $# in
2)
setfont $1 -u $2
;;
1)
setfont $1
;;
0)
if [ -f /etc/sysconfig/console ] ; then
. /etc/sysconfig/console
fi
if [ -n "$CONSOLE_FONT" ] ; then
SETFONT_ARGS="$CONSOLE_FONT"
if [ -n "$CONSOLE_UNICODEMAP" ] ; then
SETFONT_ARGS="$SETFONT_ARGS -u $CONSOLE_UNICODEMAP"
fi
if [ -n "$CONSOLE_SCREENMAP" ] ; then
SETFONT_ARGS="$SETFONT_ARGS -m $CONSOLE_SCREENMAP"
fi
setfont $SETFONT_ARGS
if [ -n "$CONSOLE_MAGIC" -a "$CONSOLE_MAGIC" != "none" ] ; then
echo -en "\033$CONSOLE_MAGIC"
fi
else
setfont $DEFAULT_UNICODE_FONT
fi
;;
*)
echo "usage: unicode_start [font [unicode map]]"
;;
esac