freebsd-skq/etc/rc.d/pcvt

235 lines
4.9 KiB
Bash

#!/bin/sh -
#
# Copyright (c) 2002 The FreeBSD Project
# 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.
#
# $FreeBSD$
#
# PROVIDE: pcvt
# REQUIRE: LOGIN
# KEYWORD: FreeBSD
. /etc/rc.subr
name="pcvt"
start_precmd="pcvt_precmd"
start_cmd="pcvt_start"
pcvt_precmd()
{
if [ -x /usr/sbin/ispcvt ]; then
/usr/sbin/ispcvt -d /dev/ttyv0 && return 0
fi
return 1
}
pcvt_echo()
{
if checkyesno pcvt_verbose; then
echo $1 "$2"
fi
}
pcvt_start()
{
# path for pcvt's EGA/VGA download fonts
FONTP=/usr/share/misc/pcvtfonts
if checkyesno pcvt_verbose; then
echo "Configuring pcvt console driver:"
else
echo "-n" "Configuring pcvt"
fi
# video adapter type
adapter=`/usr/sbin/scon -d /dev/ttyv0 -a`
pcvt_echo "-n" " video adapter type is $adapter, "
# monitor type (mono/color)
monitor=`/usr/sbin/scon -d /dev/ttyv0 -m`
pcvt_echo "" "monitor type is $monitor"
# load fonts into VGA
if [ $adapter = VGA ] ; then
pcvt_echo "-n" " loading fonts: 8x16:0,"
loadfont -d /dev/ttyv0 -c0 -f $FONTP/vt220l.816
pcvt_echo "-n" "1 "
loadfont -d /dev/ttyv0 -c1 -f $FONTP/vt220h.816
pcvt_echo "-n" " 8x14:0,"
loadfont -d /dev/ttyv0 -c2 -f $FONTP/vt220l.814
pcvt_echo "-n" "1 "
loadfont -d /dev/ttyv0 -c3 -f $FONTP/vt220h.814
pcvt_echo "-n" " 8x10:0,"
loadfont -d /dev/ttyv0 -c4 -f $FONTP/vt220l.810
pcvt_echo "-n" "1 "
loadfont -d /dev/ttyv0 -c5 -f $FONTP/vt220h.810
pcvt_echo "-n" " 8x8:0,"
loadfont -d /dev/ttyv0 -c6 -f $FONTP/vt220l.808
pcvt_echo "" "1 "
loadfont -d /dev/ttyv0 -c7 -f $FONTP/vt220h.808
# setting screen sizes
case ${pcvt_lines} in
28)
size=-s28
pcvt_echo "" " switching to 28 lines"
;;
40)
size=-s40
pcvt_echo "" " switching to 40 lines"
;;
50)
size=-s50
pcvt_echo "" " switching to 50 lines"
;;
*)
size=-s25
pcvt_echo "" " switching to 25 lines"
;;
esac
fi
# use HP extensions to VT220 or plain VT220 ?
if checkyesno pcvt_hpext; then
emulation=-H
pcvt_echo "" " setting emulation to VT220 with HP extensions"
else
emulation=-V
pcvt_echo "" " setting emulation to VT220"
fi
# for all screens do
for device in /dev/ttyv*
do
# set emulation
/usr/sbin/scon -d$device $size $emulation >/dev/null 2>&1
if [ $? != 0 ] ; then
break 1
fi
# set cursor shape
case ${pcvt_cursorh} in
[Nn][Oo] | '')
;;
*)
case ${pcvt_cursorl} in
[Nn][Oo] | '')
;;
*)
/usr/sbin/cursor -d$device -s$pcvt_cursorh -e$pcvt_cursorl
;;
esac
;;
esac
# on monochrome monitor, set color palette to use a higher intensity
if checkyesno pcvt_monohigh && \
[ $monitor = MONO -a $adapter = VGA ]
then
/usr/sbin/scon -d$device -p8,60,60,60
fi
done
# switch to screen 0
pcvt_echo "" " switching to screen 0"
/usr/sbin/scon -d /dev/ttyv0
# screensaver timeout
case ${pcvt_blanktime} in
[Nn][Oo] | '')
;;
*)
pcvt_echo "" " setting screensaver timeout to $pcvt_blanktime seconds"
/usr/sbin/scon -d /dev/ttyv0 -t$pcvt_blanktime
;;
esac
# national keyboard layout
case ${pcvt_keymap} in
[Nn][Oo] | '')
;;
*)
pcvt_echo "" " switching national keyboard layout to $pcvt_keymap"
/usr/sbin/kcon -m $pcvt_keymap
;;
esac
# keyboard repeat delay value
case ${pcvt_keydel} in
[Nn][Oo] | '')
;;
*)
pcvt_echo "" " setting keyboard delay to $pcvt_keydel"
/usr/sbin/kcon -d$pcvt_keydel
;;
esac
# keyboard repeat rate value
case ${pcvt_keyrate} in
[Nn][Oo] | '')
;;
*)
pcvt_echo "" " setting keyboard repeat rate to $pcvt_keyrate"
/usr/sbin/kcon -r$pcvt_keyrate
;;
esac
# done
if checkyesno pcvt_verbose; then
echo "Finished configuring pcvt console driver."
else
echo "."
fi
}
load_rc_config $name
run_rc_command "$1"