106 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
#!/sbin/runscript
 | 
						|
# Copyright 2007 Roy Marples
 | 
						|
# All rights reserved
 | 
						|
 | 
						|
# Redistribution and use in source and binary forms, with or without
 | 
						|
# modification, are permitted provided that the following conditions
 | 
						|
# are met:
 | 
						|
# 1. Redistributions of source code must retain the above copyright
 | 
						|
#    notice, this list of conditions and the following disclaimer.
 | 
						|
# 2. Redistributions in binary form must reproduce the above copyright
 | 
						|
#    notice, this list of conditions and the following disclaimer in the
 | 
						|
#    documentation and/or other materials provided with the distribution.
 | 
						|
#
 | 
						|
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
						|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
						|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
						|
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
						|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
						|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
						|
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
						|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
						|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
						|
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
						|
# SUCH DAMAGE.
 | 
						|
 | 
						|
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
 | 
						|
}
 | 
						|
 | 
						|
start() {
 | 
						|
	case "${RC_SYS}" in
 | 
						|
		UML|VPS|XENU)
 | 
						|
			ewarn "Not loading keymaps for ${RC_SYS} systems"
 | 
						|
			return 0
 | 
						|
			;;
 | 
						|
	esac
 | 
						|
 | 
						|
	if [ -z "${keymap}" ]; then
 | 
						|
		eerror "You need to setup keymap in /etc/conf.d/keymaps first"
 | 
						|
		return 1
 | 
						|
	fi
 | 
						|
 | 
						|
	local loadkeys_uni= wkeys= 
 | 
						|
	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
 | 
						|
 | 
						|
	# Turn on unicode if user wants it
 | 
						|
	if yesno ${unicode}; then
 | 
						|
		n=1
 | 
						|
		while [ ${n} -le "${ttyn}" ]; do
 | 
						|
			kbd_mode -u -C "${ttydev}${n}"
 | 
						|
			n=$((${n} + 1))
 | 
						|
		done
 | 
						|
		loadkeys_uni="--unicode"
 | 
						|
	fi
 | 
						|
 | 
						|
	ebegin "Loading key mappings"
 | 
						|
	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=
 | 
						|
	if yesno ${unicode}; then
 | 
						|
		dumpkeys ${dumpkeys_charset:+-c} ${dumpkeys_charset} | loadkeys --unicode
 | 
						|
		termencoding="%G"
 | 
						|
		termmsg="UTF-8"
 | 
						|
	else
 | 
						|
		termencoding="%@"
 | 
						|
		termmsg="ASCII"
 | 
						|
	fi
 | 
						|
 | 
						|
	ebegin "Setting terminal encoding to" ${termmsg}
 | 
						|
	n=1
 | 
						|
	while [ ${n} -le "${ttyn}" ]; do
 | 
						|
		printf "\033%s" "${termencoding}" >"${ttydev}${n}"
 | 
						|
		n=$((${n} + 1))
 | 
						|
	done
 | 
						|
	eend 0
 | 
						|
}
 | 
						|
 | 
						|
# vim: set ts=4 :
 |