]> git.pld-linux.org Git - packages/kbd.git/blobdiff - kbd.init
- updated to 2.6.4
[packages/kbd.git] / kbd.init
index 922892c7c28537c682d017f0899d2c6fb29b2440..00c15f8c20d83ed589c95a74556bafb426b150ce 100644 (file)
--- a/kbd.init
+++ b/kbd.init
@@ -2,7 +2,7 @@
 
 # console      Loads console font and keyboard table
 #
-# chkconfig:   345 70 30
+# chkconfig:   2345 70 30
 #
 # description: Loads the console font, the application-charset map \
 #              and the keyboard table.
 
 [ -f /etc/sysconfig/console ] || exit 0
 
-[ -f /bin/loadkeys ] || exit 0
-[ -f /usr/bin/setfont ] || exit 0
+[ -f /bin/loadkeys -o -f /usr/bin/loadkeys ] || exit 0
+[ -f /bin/setfont -o -f /usr/bin/setfont ] || exit 0
 
 # Source function library
 . /etc/rc.d/init.d/functions
 
-FB=
+if is_yes "$VSERVER"; then
+       exit 0
+fi
 
-case "$1" in
-       start|restart)
-               . /etc/sysconfig/console
+[ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
+. /etc/sysconfig/console
 
-               # Checking if we have framebuffer enabled
-               if [ -f /proc/fb ]; then
-                       # /proc shows as files with size=0, this is workaround
-                       if cat /proc/fb | grep -q "."; then FB=yes; fi
-               fi
-                       
-               if [ -n "$SVGATEXTMODE" ]
-               then
-                       run_cmd "Setting Text Mode $SVGATEXTMODE" SVGATextMode $SVGATEXTMODE
-               fi
-               if [ -n "$CONSOLEFONT" ]
-               then
-                       CMD="/usr/bin/setfont -m ${CONSOLEMAP:-trivial} $CONSOLEFONT"
-                       show "Loading console font and map"; busy
-                       if [ ! -z $FB ]; then                   
-                               # Check for devfs (workaround: -a option don't work at all)
+start() {
+       # Checking if we have framebuffer enabled
+       if [ -f /proc/fb ]; then
+               # /proc shows as files with size=0, this is workaround
+               if cat /proc/fb | grep -q "."; then FB=yes; fi
+       fi
+
+       if [ -n "$SVGATEXTMODE" ]; then
+               run_cmd "Setting Text Mode $SVGATEXTMODE" SVGATextMode $SVGATEXTMODE
+       fi
+
+       # Check for devfs (workaround: -a option doesn't work at all)
+       local devpath tty cons
+       if [ -d /dev/vc ]; then
+               devpath="/dev/vc/"
+       else
+               devpath="/dev/tty"
+       fi
+       # save old tty number
+       tty=$(/usr/bin/tty)
+       if [ "$?" -ne 0 -o "$tty" = "/dev/console" ]; then
+               tty=1
+       else
+               tty=${tty#$devpath}
+       fi
+
+       if [ -n "$CONSOLEFONT" -a -x /sbin/setsysfont ]; then
+               show "Loading console font and map"
+               busy
+
+               # don't initialize on multiple terminals if we use fbset
+               # (assume that, in this case fb is loaded as a module)
+               if [ ! -z "$FB" ]; then
+                       if [ -z "$SET_FONT_TERMINALS" ]; then
+                               # check if devfs (workaround: -a option doesn't work at all)
                                if [ -d /dev/vc ]; then
-                                       pattern="s/\/dev\/vc\///g"
+                                       SET_FONT_TERMINALS=$(ls /dev/vc/)
                                else
-                                       pattern="s/\/dev\/tty//g"
+                                       SET_FONT_TERMINALS=$(awk -F: '/^[0-9]*:/{print $1}' /etc/inittab)
+                               fi
+                       fi
+
+                       for cons in $SET_FONT_TERMINALS; do
+                               /usr/bin/open -c $cons -s -w -- /sbin/setsysfont
+                               if [ "$NUM_LOCK" ]; then
+                                       if [ $NUM_LOCK = "on" ]; then
+                                               /usr/bin/open -c $cons -s -w -- /usr/bin/setleds -D +num
+                                       else
+                                               /usr/bin/open -c $cons -s -w -- /usr/bin/setleds -D -num
+                                       fi
                                fi
-                               
-                               tty=`/usr/bin/tty | sed $pattern`
-                               for a in $SET_FONT_TERMINALS; do
-                                       /usr/bin/open -c $a -s -w -- $CMD
-                               done
-                               
-                               if [ $tty = "/dev/console" ]; then tty=1; fi
+                       done
+
+                       if [[ "$tty" = [0-9]* ]]; then
                                /usr/bin/switchto $tty
-                       else
-                               $CMD
                        fi
-                       ok
+               else
+                       for cons in $SET_FONT_TERMINALS; do
+                               /usr/bin/open -c $cons -s -w -- /sbin/setsysfont
+                       done
                fi
-               if [ -n "$KEYTABLE" ]
-               then
+               ok
+       fi
+
+       if [ -n "$KEYTABLE" ]; then
+               if [ "$(LANG="$LANG" locale charmap)" = "UTF-8" ]; then
+                       run_cmd "Loading keyboard table" loadkeys -u $KEYTABLE < /dev/tty0 > /dev/tty0
+               else
                        run_cmd "Loading keyboard table" loadkeys $KEYTABLE < /dev/tty0 > /dev/tty0
                fi
-               echo "Enabling SAK sequence"
-               echo Control Alt keycode 101 = SAK | loadkeys
-               ;;
-       stop)
-               # Nothing to stop
-               ;;
-       status)
-               # Nothing to report
-               ;;
-       *)
-               msg_usage "$0 {start|stop|status|restart}"
-               exit 1
+       fi
+       run_cmd "Enabling SAK sequence" /bin/sh -c "echo Control Alt keycode 101 = SAK | loadkeys"
+
+       power_option=""
+       if ! is_no "$POWER_SAVE"; then
+               if [ "$BLANK_TIME" ]; then
+                       power_option="-blank $BLANK_TIME";
+               fi
+               if [ "$POWERDOWN_TIME" ]; then
+                       power_option="-powerdown $POWERDOWN_TIME $power_option";
+               fi
+       else
+               power_option="-blank 0 -powerdown 0 -powersave off";
+       fi
+       setterm_option="$power_option"
+       if [ "$FOREGROUND_COLOUR" ]; then
+               setterm_option="$setterm_option -foreground $FOREGROUND_COLOUR"
+       fi
+       if [ "$BACKGROUND_COLOUR" ]; then
+               setterm_option="$setterm_option -background $BACKGROUND_COLOUR"
+       fi
+       if [ "$BEEP_LENGTH" ]; then
+               setterm_option="$setterm_option -blength $BEEP_LENGTH"
+       fi
+       if [ "$BEEP_FREQ" ]; then
+               setterm_option="$setterm_option -bfreq $BEEP_FREQ"
+       fi
+       setterm_option="$setterm_option -store"
+
+       for cons in $SET_FONT_TERMINALS; do
+               /usr/bin/open -c $cons -s -w -- /usr/bin/setterm $setterm_option
+       done
+       if [[ "$tty" = [0-9]* ]]; then
+               /usr/bin/switchto $tty
+       fi
+
+       touch /var/lock/subsys/console
+}
+
+RETVAL=0
+case "$1" in
+  start)
+       if [ ! -f /var/lock/subsys/console ]; then
+               start
+       fi
+       ;;
+  restart)
+       start
+       ;;
+  try-restart)
+       if [ -f /var/lock/subsys/console ]; then
+               start
+       fi
+       ;;
+  reload|force-reload)
+       if [ -f /var/lock/subsys/console ]; then
+               start
+       else
+               RETVAL=7
+       fi
+       ;;
+  stop)
+       if [ -f /var/lock/subsys/console ]; then
+               run_cmd "Setting terminals to default values" /usr/bin/setterm -default
+               rm -f /var/lock/subsys/console
+       fi
+       ;;
+  status)
+       /usr/bin/setleds
+       ;;
+  *)
+       msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status}"
+       exit 3
 esac
 
-exit 0
+exit $RETVAL
This page took 0.06444 seconds and 4 git commands to generate.