aboutsummaryrefslogtreecommitdiff
path: root/sh
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2009-04-26 11:19:22 +0000
committerRoy Marples <roy@marples.name>2009-04-26 11:19:22 +0000
commit1d4818364641c84d0e53fda90a356772299dee8e (patch)
tree06cfac07ee56bf4c20a0b9688846ae608faf6a7f /sh
parent0feddbd815b16a23240f45dbdc38b36e3f1559e0 (diff)
Try and set a keymap as early as possible, #169
Diffstat (limited to 'sh')
-rw-r--r--sh/init-early.sh.Linux.in38
1 files changed, 27 insertions, 11 deletions
diff --git a/sh/init-early.sh.Linux.in b/sh/init-early.sh.Linux.in
index d6cb007d..3e29fb85 100644
--- a/sh/init-early.sh.Linux.in
+++ b/sh/init-early.sh.Linux.in
@@ -1,18 +1,34 @@
#!@SHELL@
-# Copyright 2007-2008 Roy Marples <roy@marples.name>
+# Copyright 2007-2009 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license.
-# Try and set a font and as early as we can
-if [ -e /etc/runlevels/"${RC_DEFAULTLEVEL}"/consolefont \
- -o -e /etc/runlevels/"${RC_BOOTLEVEL}"/consolefont ]; then
+: ${CONSOLE:=/dev/console}
+
+if [ -e "$RC_LIBDIR"/console/unicode ]; then
+ termencoding="%G"
+ kmode="-u"
+else
termencoding="(K"
- [ -e "${RC_LIBDIR}"/console/unicode ] && termencoding="%G"
- CONSOLE="${CONSOLE:-/dev/console}"
- printf "\033%s" "${termencoding}" >"${CONSOLE}" 2>/dev/null
- if [ -r "${RC_LIBDIR}"/console/font -a -x /bin/setfont ]; then
- font="$(cat "${RC_LIBDIR}"/console/font)"
- [ -c "${CONSOLE}" ] && cons="-C ${CONSOLE}"
- setfont ${cons} "${RC_LIBDIR}"/console/"${font}" 2>/dev/null
+ kmode="-a"
+fi
+
+# Try and set a font and as early as we can
+if [ -e /etc/runlevels/"$RC_DEFAULTLEVEL"/consolefont \
+ -o -e /etc/runlevels/"$RC_BOOTLEVEL"/consolefont ]; then
+ printf "\033%s" "$termencoding" >"$CONSOLE" 2>/dev/null
+ if [ -r "$RC_LIBDIR"/console/font -a -x /bin/setfont ]; then
+ font="$(cat "$RC_LIBDIR"/console/font)"
+ [ -c "$CONSOLE" ] && cons="-C $CONSOLE"
+ setfont $cons "$RC_LIBDIR"/console/"$font" 2>/dev/null
+ fi
+fi
+
+# Try and set a keyboard map as early as possible
+if [ -e /etc/runlevels/"$RC_DEFAULTLEVEL"/keymaps \
+ -o -e /etc/runlevels/"$RC_BOOTLEVEL"/keymaps ]; then
+ kbd_mode $kmode -C "$CONSOLE" 2>/dev/null
+ if [ -r "$RC_LIBDIR"/console/keymap ]; then
+ loadkeys "$RC_LIBDIR"/console/keymap 2>/dev/null
fi
fi