syscons revision 136224
170856Sjhb#!/bin/sh - 270856Sjhb# 370856Sjhb# Copyright (c) 2000 The FreeBSD Project 470856Sjhb# All rights reserved. 570856Sjhb# 670856Sjhb# Redistribution and use in source and binary forms, with or without 770856Sjhb# modification, are permitted provided that the following conditions 870856Sjhb# are met: 970856Sjhb# 1. Redistributions of source code must retain the above copyright 1070856Sjhb# notice, this list of conditions and the following disclaimer. 1170856Sjhb# 2. Redistributions in binary form must reproduce the above copyright 1270856Sjhb# notice, this list of conditions and the following disclaimer in the 1370856Sjhb# documentation and/or other materials provided with the distribution. 1470856Sjhb# 1570856Sjhb# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1670856Sjhb# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1770856Sjhb# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1870856Sjhb# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1970856Sjhb# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2070856Sjhb# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2170856Sjhb# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2270856Sjhb# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2370856Sjhb# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2470856Sjhb# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2570856Sjhb# SUCH DAMAGE. 2670856Sjhb# 2770856Sjhb# $FreeBSD: head/etc/rc.d/syscons 136224 2004-10-07 13:55:26Z mtm $ 2870856Sjhb# 2970856Sjhb 30100280Sgordon# PROVIDE: syscons 31100280Sgordon# REQUIRE: LOGIN usbd 32136224Smtm# KEYWORD: nojail 33100280Sgordon 34100280Sgordon. /etc/rc.subr 35100280Sgordon 36100280Sgordonname="syscons" 37102993Sfennerstart_precmd="syscons_precmd" 38102993Sfennerstart_cmd="syscons_start" 39100280Sgordon 4070856Sjhb# stdin must be redirected because it might be for a serial console 4170856Sjhb# 4270856Sjhbkbddev=/dev/ttyv0 4370856Sjhbviddev=/dev/ttyv0 4470856Sjhb 45102993Sfennersyscons_precmd() 46102993Sfenner{ 47123390Speter if [ ! -c $kbddev ] 48102993Sfenner then 49123390Speter return 1 50102993Sfenner fi 51123390Speter if [ -x /usr/sbin/ispcvt ] && /usr/sbin/ispcvt 52123390Speter then 53123390Speter return 1 54123390Speter fi 55123390Speter return 0 56102993Sfenner} 5770856Sjhb 58102993Sfennersyscons_start() 59102993Sfenner{ 60102993Sfenner echo -n 'Configuring syscons:' 6170856Sjhb 62130699Sgreen # keyboard 63130699Sgreen # 64130699Sgreen if [ -n "${keyboard}" ]; then 65130699Sgreen echo -n ' keyboard'; kbdcontrol < ${kbddev} \ 66130699Sgreen -k "${keyboard}" >/dev/null 67130699Sgreen fi 68130699Sgreen 69102993Sfenner # keymap 70102993Sfenner # 71102993Sfenner case ${keymap} in 72102993Sfenner [Nn][Oo] | '') 73102993Sfenner ;; 74102993Sfenner *) 75102993Sfenner echo -n ' keymap'; kbdcontrol < ${kbddev} -l ${keymap} 76102993Sfenner ;; 77102993Sfenner esac 7870856Sjhb 79102993Sfenner # keyrate 80102993Sfenner # 81102993Sfenner case ${keyrate} in 82102993Sfenner [Nn][Oo] | '') 83102993Sfenner ;; 84102993Sfenner *) 85102993Sfenner echo -n ' keyrate'; kbdcontrol < ${kbddev} -r ${keyrate} 86102993Sfenner ;; 87102993Sfenner esac 8870856Sjhb 89102993Sfenner # keybell 90102993Sfenner # 91102993Sfenner case ${keybell} in 92102993Sfenner [Nn][Oo] | '') 93102993Sfenner ;; 94102993Sfenner *) 95102993Sfenner echo -n ' keybell'; kbdcontrol < ${kbddev} -b ${keybell} 96102993Sfenner ;; 97102993Sfenner esac 9870856Sjhb 99102993Sfenner # change function keys 100102993Sfenner # 101102993Sfenner case ${keychange} in 102102993Sfenner [Nn][Oo] | '') 103102993Sfenner ;; 104102993Sfenner *) 105102993Sfenner echo -n ' keychange' 106102993Sfenner set - ${keychange} 107102993Sfenner while [ $# -gt 0 ]; do 108102993Sfenner kbdcontrol <${kbddev} -f "$1" "$2" 109102993Sfenner shift; shift 110102993Sfenner done 111102993Sfenner ;; 112102993Sfenner esac 11370856Sjhb 114102993Sfenner # cursor type 115102993Sfenner # 116102993Sfenner case ${cursor} in 117102993Sfenner [Nn][Oo] | '') 118102993Sfenner ;; 119102993Sfenner *) 120102993Sfenner echo -n ' cursor'; vidcontrol < ${viddev} -c ${cursor} 121102993Sfenner ;; 122102993Sfenner esac 12370856Sjhb 124102993Sfenner # screen mapping 125102993Sfenner # 126102993Sfenner case ${scrnmap} in 127102993Sfenner [Nn][Oo] | '') 128102993Sfenner ;; 129102993Sfenner *) 130102993Sfenner echo -n ' scrnmap'; vidcontrol < ${viddev} -l ${scrnmap} 131102993Sfenner ;; 132102993Sfenner esac 13370856Sjhb 134102993Sfenner # font 8x16 135102993Sfenner # 136102993Sfenner case ${font8x16} in 137102993Sfenner [Nn][Oo] | '') 138102993Sfenner ;; 139102993Sfenner *) 140102993Sfenner echo -n ' font8x16'; vidcontrol < ${viddev} -f 8x16 ${font8x16} 141102993Sfenner ;; 142102993Sfenner esac 14370856Sjhb 144102993Sfenner # font 8x14 145102993Sfenner # 146102993Sfenner case ${font8x14} in 147102993Sfenner [Nn][Oo] | '') 148102993Sfenner ;; 149102993Sfenner *) 150102993Sfenner echo -n ' font8x14'; vidcontrol < ${viddev} -f 8x14 ${font8x14} 151102993Sfenner ;; 152102993Sfenner esac 15370856Sjhb 154102993Sfenner # font 8x8 155102993Sfenner # 156102993Sfenner case ${font8x8} in 157102993Sfenner [Nn][Oo] | '') 158102993Sfenner ;; 159102993Sfenner *) 160102993Sfenner echo -n ' font8x8'; vidcontrol < ${viddev} -f 8x8 ${font8x8} 161102993Sfenner ;; 162102993Sfenner esac 16370856Sjhb 164102993Sfenner # blank time 165102993Sfenner # 166102993Sfenner case ${blanktime} in 167102993Sfenner [Nn][Oo] | '') 168102993Sfenner ;; 169102993Sfenner *) 170102993Sfenner echo -n ' blanktime'; vidcontrol < ${viddev} -t ${blanktime} 171102993Sfenner ;; 172102993Sfenner esac 17370856Sjhb 174102993Sfenner # screen saver 175102993Sfenner # 176102993Sfenner case ${saver} in 177102993Sfenner [Nn][Oo] | '') 178102993Sfenner ;; 179102993Sfenner *) 180102993Sfenner echo -n ' screensaver' 181102993Sfenner for i in `kldstat | awk '$5 ~ "^splash_.*$" { print $5 }'`; do 182102993Sfenner kldunload ${i} 183102993Sfenner done 184102993Sfenner kldstat -v | grep -q _saver || kldload ${saver}_saver 185102993Sfenner ;; 186102993Sfenner esac 18770856Sjhb 188102993Sfenner # set this mode for all virtual screens 189102993Sfenner # 190102993Sfenner if [ -n "${allscreens_flags}" ]; then 191102993Sfenner echo -n ' allscreens' 192102993Sfenner for ttyv in /dev/ttyv*; do 193102993Sfenner vidcontrol ${allscreens_flags} < ${ttyv} > ${ttyv} 2>&1 194102993Sfenner done 195102993Sfenner fi 196100284Sdougb 197102993Sfenner # set this keyboard mode for all virtual terminals 198102993Sfenner # 199102993Sfenner if [ -n "${allscreens_kbdflags}" ]; then 200102993Sfenner echo -n ' allscreens_kbd' 201102993Sfenner for ttyv in /dev/ttyv*; do 202102993Sfenner kbdcontrol ${allscreens_kbdflags} < ${ttyv} > ${ttyv} 2>&1 203102993Sfenner done 204102993Sfenner fi 205102993Sfenner 206102993Sfenner echo '.' 207102993Sfenner} 208103161Sgordon 209103161Sgordonload_rc_config $name 210103161Sgordonrun_rc_command "$1" 211