86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| #!/sbin/runscript
 | |
| # Copyright 2007-2008 Roy Marples
 | |
| # All rights reserved
 | |
| 
 | |
| 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
 | |
| }
 |