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