summaryrefslogtreecommitdiff
path: root/init.d.Linux/keymaps.in
diff options
context:
space:
mode:
Diffstat (limited to 'init.d.Linux/keymaps.in')
-rw-r--r--init.d.Linux/keymaps.in69
1 files changed, 69 insertions, 0 deletions
diff --git a/init.d.Linux/keymaps.in b/init.d.Linux/keymaps.in
new file mode 100644
index 0000000..827b550
--- /dev/null
+++ b/init.d.Linux/keymaps.in
@@ -0,0 +1,69 @@
+#!/sbin/runscript
+# Copyright 2007-2008 Roy Marples <roy@marples.name>
+# All rights reserved. Released under the 2-clause BSD license.
+
+description="Applies a keymap for the consoles."
+
+ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
+unicode=${unicode:-${UNICODE}}
+keymap=${keymap:-${KEYMAP}}
+extended_keymaps=${extended_keymaps:-${EXTENDED_KEYMAPS}}
+windowskeys=${windowskeys:-${SET_WINDOWSKEYS}}
+fix_euro=${fix_euro:-${FIX_EURO}}
+dumpkeys_charset=${dumpkeys_charset:-${DUMPKEYS_CHARSET}}
+
+depend()
+{
+ need localmount
+ keyword noprefix nouml novps noxenu
+}
+
+start()
+{
+ if [ -z "${keymap}" ]; then
+ eerror "You need to setup keymap in /etc/conf.d/keymaps first"
+ return 1
+ fi
+
+ local ttydev= n=
+ [ -d /dev/vc ] \
+ && ttydev=/dev/vc/ \
+ || ttydev=/dev/tty
+
+ # Force linux keycodes for PPC.
+ if [ -f /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes ]; then
+ echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
+ fi
+
+ ebegin "Loading key mappings"
+ local loadkeys_uni= wkeys=
+ yesno ${unicode} && loadkeys_uni="--unicode"
+ yesno ${windowskeys} && wkeys="windowkeys"
+ loadkeys -q ${loadkeys_uni} ${wkeys} ${keymap} ${extended_keymaps}
+ eend $? "Error loading key mappings" || return $?
+
+ if yesno ${fix_euro}; then
+ # Fix some fonts displaying the Euro, #173528.
+ echo "altgr keycode 18 = U+20AC" | loadkeys -q
+ fi
+
+ # Set terminal encoding to either ASCII or UNICODE.
+ # See utf-8(7) for more information.
+ local termencoding="%@" termmsg="ASCII" kmode="-a"
+ if yesno ${unicode}; then
+ dumpkeys ${dumpkeys_charset:+-c} \
+ ${dumpkeys_charset} | loadkeys --unicode
+ termencoding="%G"
+ termmsg="UTF-8"
+ kmode="-u"
+ fi
+
+ ebegin "Setting terminal encoding to" ${termmsg}
+ n=1
+ while [ ${n} -le "${ttyn}" ]; do
+ printf "\033%s" "${termencoding}" >"${ttydev}${n}"
+ kbd_mode "${kmode}" -C "${ttydev}${n}"
+ n=$((${n} + 1))
+ done
+ eend 0
+}