xref: /freebsd/libexec/rc/rc.d/syscons (revision 0696600c41600d80bcd993bfd8e675d0ae6951fe)
1*0696600cSBjoern A. Zeeb#!/bin/sh -
2*0696600cSBjoern A. Zeeb#
3*0696600cSBjoern A. Zeeb# Copyright (c) 2000  The FreeBSD Project
4*0696600cSBjoern A. Zeeb# All rights reserved.
5*0696600cSBjoern A. Zeeb#
6*0696600cSBjoern A. Zeeb# Redistribution and use in source and binary forms, with or without
7*0696600cSBjoern A. Zeeb# modification, are permitted provided that the following conditions
8*0696600cSBjoern A. Zeeb# are met:
9*0696600cSBjoern A. Zeeb# 1. Redistributions of source code must retain the above copyright
10*0696600cSBjoern A. Zeeb#    notice, this list of conditions and the following disclaimer.
11*0696600cSBjoern A. Zeeb# 2. Redistributions in binary form must reproduce the above copyright
12*0696600cSBjoern A. Zeeb#    notice, this list of conditions and the following disclaimer in the
13*0696600cSBjoern A. Zeeb#    documentation and/or other materials provided with the distribution.
14*0696600cSBjoern A. Zeeb#
15*0696600cSBjoern A. Zeeb# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16*0696600cSBjoern A. Zeeb# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*0696600cSBjoern A. Zeeb# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*0696600cSBjoern A. Zeeb# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19*0696600cSBjoern A. Zeeb# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20*0696600cSBjoern A. Zeeb# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21*0696600cSBjoern A. Zeeb# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22*0696600cSBjoern A. Zeeb# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23*0696600cSBjoern A. Zeeb# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24*0696600cSBjoern A. Zeeb# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25*0696600cSBjoern A. Zeeb# SUCH DAMAGE.
26*0696600cSBjoern A. Zeeb#
27*0696600cSBjoern A. Zeeb# $FreeBSD$
28*0696600cSBjoern A. Zeeb#
29*0696600cSBjoern A. Zeeb
30*0696600cSBjoern A. Zeeb# PROVIDE: syscons
31*0696600cSBjoern A. Zeeb# REQUIRE: LOGIN
32*0696600cSBjoern A. Zeeb# KEYWORD: nojail
33*0696600cSBjoern A. Zeeb
34*0696600cSBjoern A. Zeeb. /etc/rc.subr
35*0696600cSBjoern A. Zeeb
36*0696600cSBjoern A. Zeebname="syscons"
37*0696600cSBjoern A. Zeebdesc="Configure the system console"
38*0696600cSBjoern A. Zeebextra_commands="setkeyboard"
39*0696600cSBjoern A. Zeebsetkeyboard_cmd="syscons_setkeyboard"
40*0696600cSBjoern A. Zeebstart_precmd="syscons_precmd"
41*0696600cSBjoern A. Zeebstart_cmd="syscons_start"
42*0696600cSBjoern A. Zeebstop_cmd=":"
43*0696600cSBjoern A. Zeeb
44*0696600cSBjoern A. Zeeb# stdin must be redirected because it might be for a serial console
45*0696600cSBjoern A. Zeeb#
46*0696600cSBjoern A. Zeebkbddev=/dev/ttyv0
47*0696600cSBjoern A. Zeebviddev=/dev/ttyv0
48*0696600cSBjoern A. Zeeb
49*0696600cSBjoern A. Zeeb_sc_config=
50*0696600cSBjoern A. Zeeb_sc_console=
51*0696600cSBjoern A. Zeeb_sc_initdone=
52*0696600cSBjoern A. Zeeb_sc_keymap_msg=
53*0696600cSBjoern A. Zeebsc_init()
54*0696600cSBjoern A. Zeeb{
55*0696600cSBjoern A. Zeeb	if [ -z "${_sc_initdone}" ]; then
56*0696600cSBjoern A. Zeeb		if [ -z "${_sc_console}" ]; then
57*0696600cSBjoern A. Zeeb			if [ x`sysctl -n kern.vty` = x"vt" ]; then
58*0696600cSBjoern A. Zeeb				_sc_console="vt"
59*0696600cSBjoern A. Zeeb			else
60*0696600cSBjoern A. Zeeb				_sc_console="syscons"
61*0696600cSBjoern A. Zeeb			fi
62*0696600cSBjoern A. Zeeb			_sc_config="${_sc_console}"
63*0696600cSBjoern A. Zeeb		fi
64*0696600cSBjoern A. Zeeb		echo -n "Configuring ${_sc_config}:"
65*0696600cSBjoern A. Zeeb		_sc_initdone=yes
66*0696600cSBjoern A. Zeeb	fi
67*0696600cSBjoern A. Zeeb}
68*0696600cSBjoern A. Zeeb
69*0696600cSBjoern A. Zeeb# syscons to vt migration helper
70*0696600cSBjoern A. Zeeblookup_keymap_for_vt()
71*0696600cSBjoern A. Zeeb{
72*0696600cSBjoern A. Zeeb	keymap=`basename $1 .kbd`
73*0696600cSBjoern A. Zeeb	case $keymap in
74*0696600cSBjoern A. Zeebhy.armscii-8)			echo am;;
75*0696600cSBjoern A. Zeebbe.iso.acc)			echo be.acc;;
76*0696600cSBjoern A. Zeebbe.iso)				echo be;;
77*0696600cSBjoern A. Zeebbg.bds.ctrlcaps)		echo bg.bds;;
78*0696600cSBjoern A. Zeebbg.phonetic.ctrlcaps)		echo bg.phonetic;;
79*0696600cSBjoern A. Zeebbr275.iso.acc)			echo br;;
80*0696600cSBjoern A. Zeebbr275.*)			echo br.noacc;;
81*0696600cSBjoern A. Zeebby.*)				echo by;;
82*0696600cSBjoern A. Zeebfr_CA.iso.acc)			echo ca-fr;;
83*0696600cSBjoern A. Zeebswissgerman.macbook.acc)	echo ch.macbook.acc;;
84*0696600cSBjoern A. Zeebswissgerman.iso.acc)		echo ch.acc;;
85*0696600cSBjoern A. Zeebswissgerman.*)			echo ch;;
86*0696600cSBjoern A. Zeebswissfrench.iso.acc)		echo ch-fr.acc;;
87*0696600cSBjoern A. Zeebswissfrench.*)			echo ch-fr;;
88*0696600cSBjoern A. Zeebce.iso2)			echo centraleuropean.qwerty;;
89*0696600cSBjoern A. Zeebcolemak.iso15.acc)		echo colemak.acc;;
90*0696600cSBjoern A. Zeebcs.*|cz.*)			echo cz;;
91*0696600cSBjoern A. Zeebgerman.iso.acc)			echo de.acc;;
92*0696600cSBjoern A. Zeebgerman.*)			echo de;;
93*0696600cSBjoern A. Zeebdanish.iso.acc)			echo dk.acc;;
94*0696600cSBjoern A. Zeebdanish.iso.macbook)		echo dk.macbook;;
95*0696600cSBjoern A. Zeebdanish.*)			echo dk;;
96*0696600cSBjoern A. Zeebestonian.*)			echo ee;;
97*0696600cSBjoern A. Zeebspanish.dvorak)			echo es.dvorak;;
98*0696600cSBjoern A. Zeebspanish.iso*.acc)		echo es.acc;;
99*0696600cSBjoern A. Zeebspanish.iso)			echo es;;
100*0696600cSBjoern A. Zeebfinnish.*)			echo fi;;
101*0696600cSBjoern A. Zeebfr.macbook.acc)			echo fr.macbook;;
102*0696600cSBjoern A. Zeebfr.iso.acc)			echo fr.acc;;
103*0696600cSBjoern A. Zeebfr.iso)				echo fr;;
104*0696600cSBjoern A. Zeebel.iso07)			echo gr;;
105*0696600cSBjoern A. Zeebgr.us101.acc)			echo gr.101.acc;;
106*0696600cSBjoern A. Zeebhr.iso)				echo hr;;
107*0696600cSBjoern A. Zeebhu.iso2.101keys)		echo hu.101;;
108*0696600cSBjoern A. Zeebhu.iso2.102keys)		echo hu.102;;
109*0696600cSBjoern A. Zeebiw.iso8)			echo il;;
110*0696600cSBjoern A. Zeebicelandic.iso.acc)		echo is.acc;;
111*0696600cSBjoern A. Zeebicelandic.iso)			echo is;;
112*0696600cSBjoern A. Zeebit.iso)				echo it;;
113*0696600cSBjoern A. Zeebjp.106x)			echo jp.capsctrl;;
114*0696600cSBjoern A. Zeebjp.106)				echo jp;;
115*0696600cSBjoern A. Zeebkk.pt154.io)			echo kz.io;;
116*0696600cSBjoern A. Zeebkk.pt154.kst)			echo kz.kst;;
117*0696600cSBjoern A. Zeeblatinamerican.iso.acc)		echo latinamerican.acc;;
118*0696600cSBjoern A. Zeeblt.iso4)			echo lt;;
119*0696600cSBjoern A. Zeebnorwegian.iso)			echo no;;
120*0696600cSBjoern A. Zeebnorwegian.dvorak)		echo no.dvorak;;
121*0696600cSBjoern A. Zeebdutch.iso.acc)			echo nl;;
122*0696600cSBjoern A. Zeebeee_nordic)			echo nordic.asus-eee;;
123*0696600cSBjoern A. Zeebpl_PL.dvorak)			echo pl.dvorak;;
124*0696600cSBjoern A. Zeebpl_PL.ISO8859-2)		echo pl;;
125*0696600cSBjoern A. Zeebpt.iso.acc)			echo pt.acc;;
126*0696600cSBjoern A. Zeebpt.iso)				echo pt;;
127*0696600cSBjoern A. Zeebru.koi8-r.shift)		echo ru.shift;;
128*0696600cSBjoern A. Zeebru.koi8-r.win)			echo ru.win;;
129*0696600cSBjoern A. Zeebru.*)				echo ru;;
130*0696600cSBjoern A. Zeebswedish.*)			echo se;;
131*0696600cSBjoern A. Zeebsi.iso)				echo si;;
132*0696600cSBjoern A. Zeebsk.iso2)			echo sk;;
133*0696600cSBjoern A. Zeebtr.iso9.q)			echo tr;;
134*0696600cSBjoern A. Zeebua.koi8-u.shift.alt)		echo ua.shift.alt;;
135*0696600cSBjoern A. Zeebua.*)				echo ua;;
136*0696600cSBjoern A. Zeebuk.*-ctrl)			echo uk.capsctrl;;
137*0696600cSBjoern A. Zeebuk.dvorak)			echo uk.dvorak;;
138*0696600cSBjoern A. Zeebuk.*)				echo uk;;
139*0696600cSBjoern A. Zeebus.iso.acc)			echo us.acc;;
140*0696600cSBjoern A. Zeebus.pc-ctrl)			echo us.ctrl;;
141*0696600cSBjoern A. Zeebus.iso)				echo us;;
142*0696600cSBjoern A. Zeeb	esac
143*0696600cSBjoern A. Zeeb}
144*0696600cSBjoern A. Zeeb
145*0696600cSBjoern A. Zeebkbdcontrol_load_keymap()
146*0696600cSBjoern A. Zeeb{
147*0696600cSBjoern A. Zeeb	errmsg=`kbdcontrol < ${kbddev} -l ${keymap} 2>&1`
148*0696600cSBjoern A. Zeeb	if [ -n "${errmsg}" -a "${_sc_console}" = "vt" ]; then
149*0696600cSBjoern A. Zeeb		_sc_keymap_msg="${errmsg}"
150*0696600cSBjoern A. Zeeb		keymap_vt=`lookup_keymap_for_vt ${keymap}`
151*0696600cSBjoern A. Zeeb		if [ -n "${keymap_vt}" ]; then
152*0696600cSBjoern A. Zeeb			errmsg=`kbdcontrol < ${kbddev} -l ${keymap_vt} 2>&1`
153*0696600cSBjoern A. Zeeb			if [ -z "${errmsg}" ]; then
154*0696600cSBjoern A. Zeeb		    		_sc_keymap_msg="New keymap: In /etc/rc.conf replace 'keymap=${keymap}' by 'keymap=${keymap_vt}'"
155*0696600cSBjoern A. Zeeb			fi
156*0696600cSBjoern A. Zeeb		else
157*0696600cSBjoern A. Zeeb			_sc_keymap_msg="No replacement found for keymap '${keymap}'.
158*0696600cSBjoern A. ZeebYou may try to convert your keymap file using 'convert-keymap.pl', which is
159*0696600cSBjoern A. Zeebpart of the system sources and located in /usr/src/tools/tools/vt/keymaps/"
160*0696600cSBjoern A. Zeeb		fi
161*0696600cSBjoern A. Zeeb	fi
162*0696600cSBjoern A. Zeeb}
163*0696600cSBjoern A. Zeeb
164*0696600cSBjoern A. Zeeb# helper
165*0696600cSBjoern A. Zeebsyscons_configure_keyboard()
166*0696600cSBjoern A. Zeeb{
167*0696600cSBjoern A. Zeeb	# keymap
168*0696600cSBjoern A. Zeeb	#
169*0696600cSBjoern A. Zeeb	case ${keymap} in
170*0696600cSBjoern A. Zeeb	NO | '')
171*0696600cSBjoern A. Zeeb		;;
172*0696600cSBjoern A. Zeeb	*)
173*0696600cSBjoern A. Zeeb		sc_init
174*0696600cSBjoern A. Zeeb		echo -n ' keymap';	kbdcontrol_load_keymap
175*0696600cSBjoern A. Zeeb		;;
176*0696600cSBjoern A. Zeeb	esac
177*0696600cSBjoern A. Zeeb
178*0696600cSBjoern A. Zeeb	# keyrate
179*0696600cSBjoern A. Zeeb	#
180*0696600cSBjoern A. Zeeb	case ${keyrate} in
181*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
182*0696600cSBjoern A. Zeeb		;;
183*0696600cSBjoern A. Zeeb	*)
184*0696600cSBjoern A. Zeeb		sc_init
185*0696600cSBjoern A. Zeeb		echo -n ' keyrate';	kbdcontrol < ${kbddev} -r ${keyrate}
186*0696600cSBjoern A. Zeeb		;;
187*0696600cSBjoern A. Zeeb	esac
188*0696600cSBjoern A. Zeeb
189*0696600cSBjoern A. Zeeb	# keybell
190*0696600cSBjoern A. Zeeb	#
191*0696600cSBjoern A. Zeeb	case ${keybell} in
192*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
193*0696600cSBjoern A. Zeeb		;;
194*0696600cSBjoern A. Zeeb	*)
195*0696600cSBjoern A. Zeeb		sc_init
196*0696600cSBjoern A. Zeeb		echo -n ' keybell';	kbdcontrol < ${kbddev} -b ${keybell}
197*0696600cSBjoern A. Zeeb		;;
198*0696600cSBjoern A. Zeeb	esac
199*0696600cSBjoern A. Zeeb
200*0696600cSBjoern A. Zeeb	# change function keys
201*0696600cSBjoern A. Zeeb	#
202*0696600cSBjoern A. Zeeb	case ${keychange} in
203*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
204*0696600cSBjoern A. Zeeb		;;
205*0696600cSBjoern A. Zeeb	*)
206*0696600cSBjoern A. Zeeb		sc_init
207*0696600cSBjoern A. Zeeb		echo -n ' keychange'
208*0696600cSBjoern A. Zeeb		set -- ${keychange}
209*0696600cSBjoern A. Zeeb		while [ $# -gt 0 ]; do
210*0696600cSBjoern A. Zeeb			kbdcontrol <${kbddev} -f "$1" "$2"
211*0696600cSBjoern A. Zeeb			shift; shift
212*0696600cSBjoern A. Zeeb		done
213*0696600cSBjoern A. Zeeb		;;
214*0696600cSBjoern A. Zeeb	esac
215*0696600cSBjoern A. Zeeb
216*0696600cSBjoern A. Zeeb	# set this keyboard mode for all virtual terminals
217*0696600cSBjoern A. Zeeb	#
218*0696600cSBjoern A. Zeeb	if [ -n "${allscreens_kbdflags}" ]; then
219*0696600cSBjoern A. Zeeb		sc_init
220*0696600cSBjoern A. Zeeb		echo -n ' allscreens_kbd'
221*0696600cSBjoern A. Zeeb		for ttyv in /dev/ttyv*; do
222*0696600cSBjoern A. Zeeb			kbdcontrol ${allscreens_kbdflags} < ${ttyv} > ${ttyv} 2>&1
223*0696600cSBjoern A. Zeeb		done
224*0696600cSBjoern A. Zeeb	fi
225*0696600cSBjoern A. Zeeb}
226*0696600cSBjoern A. Zeeb
227*0696600cSBjoern A. Zeebsyscons_setkeyboard()
228*0696600cSBjoern A. Zeeb{
229*0696600cSBjoern A. Zeeb	kbd=$1
230*0696600cSBjoern A. Zeeb
231*0696600cSBjoern A. Zeeb	if [ -z "${kbd}" ]; then
232*0696600cSBjoern A. Zeeb		return 1
233*0696600cSBjoern A. Zeeb	fi
234*0696600cSBjoern A. Zeeb
235*0696600cSBjoern A. Zeeb	# Check if the kbdmux(4) is the current active keyboard
236*0696600cSBjoern A. Zeeb	kbdcontrol -i < ${kbddev} | grep kbdmux > /dev/null 2>&1
237*0696600cSBjoern A. Zeeb	if [ $? -ne 0 ]; then
238*0696600cSBjoern A. Zeeb		kbdcontrol -k ${kbd} < ${kbddev} > /dev/null 2>&1
239*0696600cSBjoern A. Zeeb	fi
240*0696600cSBjoern A. Zeeb
241*0696600cSBjoern A. Zeeb	_sc_config="keyboard"
242*0696600cSBjoern A. Zeeb	syscons_configure_keyboard
243*0696600cSBjoern A. Zeeb
244*0696600cSBjoern A. Zeeb	# Terminate keyboard configuration line and reset global variables.
245*0696600cSBjoern A. Zeeb	#
246*0696600cSBjoern A. Zeeb	if [ -n "${_sc_initdone}" ]; then
247*0696600cSBjoern A. Zeeb		echo '.'
248*0696600cSBjoern A. Zeeb		_sc_config="${_sc_console}"
249*0696600cSBjoern A. Zeeb		_sc_initdone=
250*0696600cSBjoern A. Zeeb	fi
251*0696600cSBjoern A. Zeeb}
252*0696600cSBjoern A. Zeeb
253*0696600cSBjoern A. Zeebsyscons_precmd()
254*0696600cSBjoern A. Zeeb{
255*0696600cSBjoern A. Zeeb	if [ ! -c $kbddev ]
256*0696600cSBjoern A. Zeeb	then
257*0696600cSBjoern A. Zeeb		return 1
258*0696600cSBjoern A. Zeeb	fi
259*0696600cSBjoern A. Zeeb	return 0
260*0696600cSBjoern A. Zeeb}
261*0696600cSBjoern A. Zeeb
262*0696600cSBjoern A. Zeebsyscons_start()
263*0696600cSBjoern A. Zeeb{
264*0696600cSBjoern A. Zeeb	# keyboard
265*0696600cSBjoern A. Zeeb	#
266*0696600cSBjoern A. Zeeb	if [ -n "${keyboard}" ]; then
267*0696600cSBjoern A. Zeeb		syscons_setkeyboard ${keyboard}
268*0696600cSBjoern A. Zeeb	fi
269*0696600cSBjoern A. Zeeb
270*0696600cSBjoern A. Zeeb	syscons_configure_keyboard
271*0696600cSBjoern A. Zeeb
272*0696600cSBjoern A. Zeeb	# cursor type
273*0696600cSBjoern A. Zeeb	#
274*0696600cSBjoern A. Zeeb	case ${cursor} in
275*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
276*0696600cSBjoern A. Zeeb		;;
277*0696600cSBjoern A. Zeeb	*)
278*0696600cSBjoern A. Zeeb		sc_init
279*0696600cSBjoern A. Zeeb		echo -n ' cursor';	vidcontrol < ${viddev} -c ${cursor}
280*0696600cSBjoern A. Zeeb		;;
281*0696600cSBjoern A. Zeeb	esac
282*0696600cSBjoern A. Zeeb
283*0696600cSBjoern A. Zeeb	# screen mapping
284*0696600cSBjoern A. Zeeb	#
285*0696600cSBjoern A. Zeeb	case ${scrnmap} in
286*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
287*0696600cSBjoern A. Zeeb		;;
288*0696600cSBjoern A. Zeeb	*)
289*0696600cSBjoern A. Zeeb		sc_init
290*0696600cSBjoern A. Zeeb		echo -n ' scrnmap';	vidcontrol < ${viddev} -l ${scrnmap}
291*0696600cSBjoern A. Zeeb		;;
292*0696600cSBjoern A. Zeeb	esac
293*0696600cSBjoern A. Zeeb
294*0696600cSBjoern A. Zeeb	# font 8x16
295*0696600cSBjoern A. Zeeb	#
296*0696600cSBjoern A. Zeeb	case ${font8x16} in
297*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
298*0696600cSBjoern A. Zeeb		;;
299*0696600cSBjoern A. Zeeb	*)
300*0696600cSBjoern A. Zeeb		sc_init
301*0696600cSBjoern A. Zeeb		echo -n ' font8x16';	vidcontrol < ${viddev} -f 8x16 ${font8x16}
302*0696600cSBjoern A. Zeeb		;;
303*0696600cSBjoern A. Zeeb	esac
304*0696600cSBjoern A. Zeeb
305*0696600cSBjoern A. Zeeb	# font 8x14
306*0696600cSBjoern A. Zeeb	#
307*0696600cSBjoern A. Zeeb	case ${font8x14} in
308*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
309*0696600cSBjoern A. Zeeb		;;
310*0696600cSBjoern A. Zeeb	*)
311*0696600cSBjoern A. Zeeb		sc_init
312*0696600cSBjoern A. Zeeb		echo -n ' font8x14';	vidcontrol < ${viddev} -f 8x14 ${font8x14}
313*0696600cSBjoern A. Zeeb		;;
314*0696600cSBjoern A. Zeeb	esac
315*0696600cSBjoern A. Zeeb
316*0696600cSBjoern A. Zeeb	# font 8x8
317*0696600cSBjoern A. Zeeb	#
318*0696600cSBjoern A. Zeeb	case ${font8x8} in
319*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
320*0696600cSBjoern A. Zeeb		;;
321*0696600cSBjoern A. Zeeb	*)
322*0696600cSBjoern A. Zeeb		sc_init
323*0696600cSBjoern A. Zeeb		echo -n ' font8x8';	vidcontrol < ${viddev} -f 8x8 ${font8x8}
324*0696600cSBjoern A. Zeeb		;;
325*0696600cSBjoern A. Zeeb	esac
326*0696600cSBjoern A. Zeeb
327*0696600cSBjoern A. Zeeb	# blank time
328*0696600cSBjoern A. Zeeb	#
329*0696600cSBjoern A. Zeeb	case ${blanktime} in
330*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
331*0696600cSBjoern A. Zeeb		;;
332*0696600cSBjoern A. Zeeb	*)
333*0696600cSBjoern A. Zeeb		sc_init
334*0696600cSBjoern A. Zeeb		echo -n ' blanktime';	vidcontrol < ${viddev} -t ${blanktime}
335*0696600cSBjoern A. Zeeb		;;
336*0696600cSBjoern A. Zeeb	esac
337*0696600cSBjoern A. Zeeb
338*0696600cSBjoern A. Zeeb	# screen saver
339*0696600cSBjoern A. Zeeb	#
340*0696600cSBjoern A. Zeeb	case ${saver} in
341*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
342*0696600cSBjoern A. Zeeb		;;
343*0696600cSBjoern A. Zeeb	*)
344*0696600cSBjoern A. Zeeb		sc_init
345*0696600cSBjoern A. Zeeb		echo -n ' screensaver'
346*0696600cSBjoern A. Zeeb		for i in `kldstat | awk '$5 ~ "_saver\.ko$" { print $5 }'`; do
347*0696600cSBjoern A. Zeeb			kldunload ${i}
348*0696600cSBjoern A. Zeeb		done
349*0696600cSBjoern A. Zeeb		load_kld -e _saver ${saver}_saver
350*0696600cSBjoern A. Zeeb		;;
351*0696600cSBjoern A. Zeeb	esac
352*0696600cSBjoern A. Zeeb
353*0696600cSBjoern A. Zeeb	# set this mode for all virtual screens
354*0696600cSBjoern A. Zeeb	#
355*0696600cSBjoern A. Zeeb	if [ -n "${allscreens_flags}" ]; then
356*0696600cSBjoern A. Zeeb		sc_init
357*0696600cSBjoern A. Zeeb		echo -n ' allscreens'
358*0696600cSBjoern A. Zeeb		for ttyv in /dev/ttyv*; do
359*0696600cSBjoern A. Zeeb			vidcontrol ${allscreens_flags} < ${ttyv} > ${ttyv} 2>&1
360*0696600cSBjoern A. Zeeb		done
361*0696600cSBjoern A. Zeeb	fi
362*0696600cSBjoern A. Zeeb
363*0696600cSBjoern A. Zeeb	[ -n "${_sc_initdone}" ] && echo '.'
364*0696600cSBjoern A. Zeeb	if [ -n "${_sc_keymap_msg}" ]; then
365*0696600cSBjoern A. Zeeb		echo
366*0696600cSBjoern A. Zeeb		echo "WARNING:"
367*0696600cSBjoern A. Zeeb		echo "${_sc_keymap_msg}."
368*0696600cSBjoern A. Zeeb		echo
369*0696600cSBjoern A. Zeeb	fi
370*0696600cSBjoern A. Zeeb}
371*0696600cSBjoern A. Zeeb
372*0696600cSBjoern A. Zeebload_rc_config $name
373*0696600cSBjoern A. Zeebrun_rc_command $*
374*0696600cSBjoern A. Zeeb
375