#!@PREFIX@/sbin/runscript # Copyright (c) 2007-2008 Roy Marples # All rights reserved. Released under the 2-clause BSD license. description="Applies a keymap for the consoles." depend() { need localmount termencoding after bootmisc keyword -openvz -prefix -uml -vserver -xenu -lxc } start() { ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} : ${unicode:=$UNICODE} : ${keymap:=$KEYMAP} : ${extended_keymaps:=$EXTENDED_KEYMAPS} : ${windowkeys:=$SET_WINDOWSKEYS} : ${fix_euro:=$FIX_EURO} : ${dumpkeys_charset:=${DUMPKEYS_CHARSET}} if [ -z "$keymap" ]; then eerror "You need to setup keymap in /etc/conf.d/keymaps first" return 1 fi local ttydev=/dev/tty n= [ -d /dev/vc ] && ttydev=/dev/vc/ # 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 local wkeys= kmode="-a" msg="ASCII" if yesno $unicode; then kmode="-u" msg="UTF-8" fi yesno $windowkeys && wkeys="windowkeys" # Set terminal encoding to either ASCII or UNICODE. # See utf-8(7) for more information. ebegin "Setting keyboard mode [$msg]" n=1 while [ $n -le $ttyn ]; do kbd_mode $kmode -C $ttydev$n n=$(($n + 1)) done eend 0 ebegin "Loading key mappings [$keymap]" loadkeys -q $wkeys $keymap $extended_keymaps eend $? "Error loading key mappings" || return $? if yesno $fix_euro; then ebegin "Fixing font for euro symbol" # Fix some fonts displaying the Euro, #173528. echo "altgr keycode 18 = U+20AC" | loadkeys -q eend $? fi # Save the keymapping for use immediately at boot if [ -w "$RC_LIBEXECDIR" ]; then mkdir -p "$RC_LIBEXECDIR"/console dumpkeys >"$RC_LIBEXECDIR"/console/keymap fi }