193 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			193 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								#! /bin/sh
							 | 
						||
| 
								 | 
							
								# Copyright (c) 1995-2000 SuSE GmbH Nuernberg, Germany.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Author:   Burchard Steinbild <bs@suse.de>
							 | 
						||
| 
								 | 
							
								#           Werner Fink <werner@suse.de>
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# /sbin/init.d/kbd
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   and symbolic its link
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# /sbin/rckbd
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								### BEGIN INIT INFO
							 | 
						||
| 
								 | 
							
								# Provides:       kbd
							 | 
						||
| 
								 | 
							
								# Required-Start: $remote_fs
							 | 
						||
| 
								 | 
							
								# Required-Stop:
							 | 
						||
| 
								 | 
							
								# Default-Start:  1 2 3 5 S
							 | 
						||
| 
								 | 
							
								# Default-Stop:
							 | 
						||
| 
								 | 
							
								# Description:    Keyboard settings
							 | 
						||
| 
								 | 
							
								### END INIT INFO
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								. /etc/rc.status
							 | 
						||
| 
								 | 
							
								. /etc/rc.config
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								MACHINE=`/bin/uname -m 2> /dev/null`
							 | 
						||
| 
								 | 
							
								if [ "$MACHINE" = "sparc" -o "$MACHINE" = "sparc64" ]; then 
							 | 
						||
| 
								 | 
							
								   # Test if we have a serial console. 
							 | 
						||
| 
								 | 
							
								   (test -c /dev/tty1 && > /dev/tty1 ) > /dev/null 2>&1 || exit 0
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test -n "$KEYTABLE" -a "$KEYTABLE" != YAST_ASK || {
							 | 
						||
| 
								 | 
							
								    echo KEYTABLE is not set in /etc/rc.config.  Exit.
							 | 
						||
| 
								 | 
							
								    exit 0
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								KEYTABLE=${KEYTABLE%.map*}
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# first search the wanted keytable.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [ $MACHINE = ppc ]; then
							 | 
						||
| 
								 | 
							
									test -f /proc/cpuinfo || mount -n -t proc proc /proc 2>/dev/null
							 | 
						||
| 
								 | 
							
									while read line; do
							 | 
						||
| 
								 | 
							
									       case "$line" in
							 | 
						||
| 
								 | 
							
										  *MacRISC*)	MACHINE="mac";;
							 | 
						||
| 
								 | 
							
										  *CHRP*)  	MACHINE="chrp";;
							 | 
						||
| 
								 | 
							
										  *PReP*)  	MACHINE="prep" ;;
							 | 
						||
| 
								 | 
							
										esac
							 | 
						||
| 
								 | 
							
									done < /proc/cpuinfo
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								case "$MACHINE" in
							 | 
						||
| 
								 | 
							
								  i?86|ia64|alpha|prep|chrp) KDBLIB="/usr/lib/kbd/keymaps/i386/*/"     ;;
							 | 
						||
| 
								 | 
							
								  sparc*)    
							 | 
						||
| 
								 | 
							
								     case "$KEYTABLE" in
							 | 
						||
| 
								 | 
							
								        sun*) KDBLIB="/usr/lib/kbd/keymaps/sun/"        ;;
							 | 
						||
| 
								 | 
							
								        *)    KDBLIB="/usr/lib/kbd/keymaps/i386/*/"     ;;
							 | 
						||
| 
								 | 
							
								     esac
							 | 
						||
| 
								 | 
							
								     ;;
							 | 
						||
| 
								 | 
							
								  mac)       KDBLIB="/usr/lib/kbd/keymaps/mac/" ;;
							 | 
						||
| 
								 | 
							
								  *)         echo "No available keymaps for machine $MACHINE found"; exit 1
							 | 
						||
| 
								 | 
							
									;;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								esac
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								KEYMAP=""
							 | 
						||
| 
								 | 
							
								if test -e /$KEYTABLE ; then
							 | 
						||
| 
								 | 
							
								    KEYMAP=$KEYTABLE
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								    K="${KDBLIB}${KEYTABLE}"
							 | 
						||
| 
								 | 
							
								    case "$KEYTABLE" in
							 | 
						||
| 
								 | 
							
									*.gz)  KDBPATH="${K}" ;;
							 | 
						||
| 
								 | 
							
									*.map) KDBPATH="${K} ${K}.gz" ;;
							 | 
						||
| 
								 | 
							
									*)     KDBPATH="${K} ${K}.gz ${K}.map.gz ${K}.map" ;;
							 | 
						||
| 
								 | 
							
								    esac
							 | 
						||
| 
								 | 
							
								    for K in ${KDBPATH} ; do	
							 | 
						||
| 
								 | 
							
									test -e "$K" || continue
							 | 
						||
| 
								 | 
							
									test -n "$KEYMAP" && KEYMAP="$KEYMAP $K" || KEYMAP=$K
							 | 
						||
| 
								 | 
							
								    done
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rc_reset
							 | 
						||
| 
								 | 
							
								case "$1" in
							 | 
						||
| 
								 | 
							
								    start|restart|reload)
							 | 
						||
| 
								 | 
							
									if test -z "$KEYMAP" ; then
							 | 
						||
| 
								 | 
							
									    if test -r /etc/defkeymap.map ; then
							 | 
						||
| 
								 | 
							
										echo "Can not find a keymap for ${KEYTABLE}, trying fallback."
							 | 
						||
| 
								 | 
							
										KEYMAP=/etc/defkeymap.map
							 | 
						||
| 
								 | 
							
									    else
							 | 
						||
| 
								 | 
							
										echo "Can not find a keymap for ${KEYTABLE}, Exit."
							 | 
						||
| 
								 | 
							
										rc_failed
							 | 
						||
| 
								 | 
							
									    fi
							 | 
						||
| 
								 | 
							
									else
							 | 
						||
| 
								 | 
							
									    if test ! -e "$KEYMAP" ; then
							 | 
						||
| 
								 | 
							
										echo "Found more than one keymap ${KEYTABLE}"
							 | 
						||
| 
								 | 
							
										KEYMAP=$K
							 | 
						||
| 
								 | 
							
										echo "Using $KEYMAP."
							 | 
						||
| 
								 | 
							
										echo "If you want another one, please add complete path to"
							 | 
						||
| 
								 | 
							
										echo "KEYTABLE in /etc/rc.config."
							 | 
						||
| 
								 | 
							
									    fi
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
									rc_status && retmsg="`loadkeys $KEYMAP 2>&1`"
							 | 
						||
| 
								 | 
							
									if test $? -eq 0 && ( > /var/run/keymap ) > /dev/null 2>&1 ; then
							 | 
						||
| 
								 | 
							
									    echo "$KEYMAP"    > /var/run/keymap
							 | 
						||
| 
								 | 
							
									    if test ! -s /etc/defkeymap.map ; then
							 | 
						||
| 
								 | 
							
										( dumpkeys > /etc/defkeymap.map ) > /dev/null 2>&1
							 | 
						||
| 
								 | 
							
									    fi
							 | 
						||
| 
								 | 
							
									else
							 | 
						||
| 
								 | 
							
									    rc_failed
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
									echo "Loading keymap ${retmsg#Loading*/usr/lib/kbd/keymaps/*/}"
							 | 
						||
| 
								 | 
							
									rc_status -v1 -r
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# Load compose tables
							 | 
						||
| 
								 | 
							
									if test ! -z "$COMPOSETABLE"; then
							 | 
						||
| 
								 | 
							
										unset COMPOSELOADED COMPOSECLEAR
							 | 
						||
| 
								 | 
							
										for name in $COMPOSETABLE; do
							 | 
						||
| 
								 | 
							
											# Test for compose clear flag
							 | 
						||
| 
								 | 
							
											if test "$name" = "-c" -o "$name" = "clear"; then
							 | 
						||
| 
								 | 
							
												COMPOSECLEAR=-c
							 | 
						||
| 
								 | 
							
												continue
							 | 
						||
| 
								 | 
							
											fi
							 | 
						||
| 
								 | 
							
											# Handle the first table differently ...
							 | 
						||
| 
								 | 
							
											if test -z "$COMPOSELOADED"; then
							 | 
						||
| 
								 | 
							
												echo -n "Loading compose table $name"
							 | 
						||
| 
								 | 
							
												loadkeys $COMPOSECLEAR compose.$name >/dev/null 2>&1
							 | 
						||
| 
								 | 
							
												rc_check
							 | 
						||
| 
								 | 
							
												if test $name = clear; then rc_reset; fi
							 | 
						||
| 
								 | 
							
												COMPOSELOADED=1
							 | 
						||
| 
								 | 
							
											else
							 | 
						||
| 
								 | 
							
												echo -n " $name"
							 | 
						||
| 
								 | 
							
												loadkeys compose.$name >/dev/null 2>&1
							 | 
						||
| 
								 | 
							
												rc_check
							 | 
						||
| 
								 | 
							
											fi
							 | 
						||
| 
								 | 
							
										done
							 | 
						||
| 
								 | 
							
										if test ! -z "$COMPOSELOADED"; then 
							 | 
						||
| 
								 | 
							
											rc_status -v -r
							 | 
						||
| 
								 | 
							
										fi
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									# setfont
							 | 
						||
| 
								 | 
							
									if test -d /usr/lib/kbd/consolefonts -a \
							 | 
						||
| 
								 | 
							
										-n "$CONSOLE_FONT" -a "$CONSOLE_FONT" != "YAST_ASK"
							 | 
						||
| 
								 | 
							
									then
							 | 
						||
| 
								 | 
							
									    if test -x /usr/bin/setfont ; then
							 | 
						||
| 
								 | 
							
										echo Loading console font $CONSOLE_FONT
							 | 
						||
| 
								 | 
							
										/usr/bin/setfont $CONSOLE_FONT
							 | 
						||
| 
								 | 
							
										rc_status -v1 -r
							 | 
						||
| 
								 | 
							
									    fi
							 | 
						||
| 
								 | 
							
									    # unimap
							 | 
						||
| 
								 | 
							
									    if test -n "$CONSOLE_UNICODEMAP" -a \
							 | 
						||
| 
								 | 
							
										    "$CONSOLE_UNICODEMAP" != "none" -a \
							 | 
						||
| 
								 | 
							
										    -x /usr/bin/setfont
							 | 
						||
| 
								 | 
							
									    then
							 | 
						||
| 
								 | 
							
										echo Loading unimap $CONSOLE_UNICODEMAP
							 | 
						||
| 
								 | 
							
										/usr/bin/setfont -u $CONSOLE_UNICODEMAP
							 | 
						||
| 
								 | 
							
										rc_status -v1 -r
							 | 
						||
| 
								 | 
							
									    fi
							 | 
						||
| 
								 | 
							
									    # screenmap
							 | 
						||
| 
								 | 
							
									    if test -n "$CONSOLE_SCREENMAP" -a \
							 | 
						||
| 
								 | 
							
										    "$CONSOLE_SCREENMAP" != "none" -a \
							 | 
						||
| 
								 | 
							
										    -x /usr/bin/setfont
							 | 
						||
| 
								 | 
							
									    then
							 | 
						||
| 
								 | 
							
										echo Loading screenmap $CONSOLE_SCREENMAP
							 | 
						||
| 
								 | 
							
										/usr/bin/setfont -m $CONSOLE_SCREENMAP
							 | 
						||
| 
								 | 
							
										rc_status -v1 -r
							 | 
						||
| 
								 | 
							
									    fi
							 | 
						||
| 
								 | 
							
									    # console magic init string
							 | 
						||
| 
								 | 
							
									    if test -n "$CONSOLE_MAGIC" -a "$CONSOLE_MAGIC" != "none" ; then
							 | 
						||
| 
								 | 
							
										echo Setting up console ttys
							 | 
						||
| 
								 | 
							
										for i in /dev/tty[1-24]; do
							 | 
						||
| 
								 | 
							
										    echo -en "\033$CONSOLE_MAGIC" > $i
							 | 
						||
| 
								 | 
							
										    rc_status
							 | 
						||
| 
								 | 
							
										done
							 | 
						||
| 
								 | 
							
										rc_status -v1 -r
							 | 
						||
| 
								 | 
							
									    fi
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									;;
							 | 
						||
| 
								 | 
							
								    stop)
							 | 
						||
| 
								 | 
							
									;;
							 | 
						||
| 
								 | 
							
								    check|status)
							 | 
						||
| 
								 | 
							
									if test -r /var/run/keymap ; then
							 | 
						||
| 
								 | 
							
									    read current < /var/run/keymap
							 | 
						||
| 
								 | 
							
									    echo "Keymap $current is loaded."
							 | 
						||
| 
								 | 
							
									else
							 | 
						||
| 
								 | 
							
									    rc_failed
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
									;;
							 | 
						||
| 
								 | 
							
								    *)
							 | 
						||
| 
								 | 
							
									echo "Usage: $0 {start|stop|restart|reload|status|check}"
							 | 
						||
| 
								 | 
							
									exit 1
							 | 
						||
| 
								 | 
							
									;;
							 | 
						||
| 
								 | 
							
								esac
							 | 
						||
| 
								 | 
							
								rc_exit
							 |