syscons revision 103161
15480Swollman#!/bin/sh - 250476Speter# 35480Swollman# Copyright (c) 2000 The FreeBSD Project 4106146Sru# All rights reserved. 5106146Sru# 6106146Sru# Redistribution and use in source and binary forms, with or without 7106146Sru# modification, are permitted provided that the following conditions 8136910Sru# are met: 9136910Sru# 1. Redistributions of source code must retain the above copyright 105480Swollman# notice, this list of conditions and the following disclaimer. 115480Swollman# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25# SUCH DAMAGE. 26# 27# $FreeBSD: head/etc/rc.d/syscons 103161 2002-09-09 22:40:34Z gordon $ 28# 29 30# PROVIDE: syscons 31# REQUIRE: LOGIN usbd 32# KEYWORD: FreeBSD 33 34. /etc/rc.subr 35 36name="syscons" 37start_precmd="syscons_precmd" 38start_cmd="syscons_start" 39 40# stdin must be redirected because it might be for a serial console 41# 42kbddev=/dev/ttyv0 43viddev=/dev/ttyv0 44 45syscons_precmd() 46{ 47 if [ -c $kbddev ] && \ 48 [ -x /usr/sbin/ispcvt ] && \ 49 ! /usr/sbin/ispcvt 50 then 51 return 0 52 fi 53 return 1 54} 55 56syscons_start() 57{ 58 echo -n 'Configuring syscons:' 59 60 # keymap 61 # 62 case ${keymap} in 63 [Nn][Oo] | '') 64 ;; 65 *) 66 echo -n ' keymap'; kbdcontrol < ${kbddev} -l ${keymap} 67 ;; 68 esac 69 70 # keyrate 71 # 72 case ${keyrate} in 73 [Nn][Oo] | '') 74 ;; 75 *) 76 echo -n ' keyrate'; kbdcontrol < ${kbddev} -r ${keyrate} 77 ;; 78 esac 79 80 # keybell 81 # 82 case ${keybell} in 83 [Nn][Oo] | '') 84 ;; 85 *) 86 echo -n ' keybell'; kbdcontrol < ${kbddev} -b ${keybell} 87 ;; 88 esac 89 90 # change function keys 91 # 92 case ${keychange} in 93 [Nn][Oo] | '') 94 ;; 95 *) 96 echo -n ' keychange' 97 set - ${keychange} 98 while [ $# -gt 0 ]; do 99 kbdcontrol <${kbddev} -f "$1" "$2" 100 shift; shift 101 done 102 ;; 103 esac 104 105 # cursor type 106 # 107 case ${cursor} in 108 [Nn][Oo] | '') 109 ;; 110 *) 111 echo -n ' cursor'; vidcontrol < ${viddev} -c ${cursor} 112 ;; 113 esac 114 115 # screen mapping 116 # 117 case ${scrnmap} in 118 [Nn][Oo] | '') 119 ;; 120 *) 121 echo -n ' scrnmap'; vidcontrol < ${viddev} -l ${scrnmap} 122 ;; 123 esac 124 125 # font 8x16 126 # 127 case ${font8x16} in 128 [Nn][Oo] | '') 129 ;; 130 *) 131 echo -n ' font8x16'; vidcontrol < ${viddev} -f 8x16 ${font8x16} 132 ;; 133 esac 134 135 # font 8x14 136 # 137 case ${font8x14} in 138 [Nn][Oo] | '') 139 ;; 140 *) 141 echo -n ' font8x14'; vidcontrol < ${viddev} -f 8x14 ${font8x14} 142 ;; 143 esac 144 145 # font 8x8 146 # 147 case ${font8x8} in 148 [Nn][Oo] | '') 149 ;; 150 *) 151 echo -n ' font8x8'; vidcontrol < ${viddev} -f 8x8 ${font8x8} 152 ;; 153 esac 154 155 # blank time 156 # 157 case ${blanktime} in 158 [Nn][Oo] | '') 159 ;; 160 *) 161 echo -n ' blanktime'; vidcontrol < ${viddev} -t ${blanktime} 162 ;; 163 esac 164 165 # screen saver 166 # 167 case ${saver} in 168 [Nn][Oo] | '') 169 ;; 170 *) 171 echo -n ' screensaver' 172 for i in `kldstat | awk '$5 ~ "^splash_.*$" { print $5 }'`; do 173 kldunload ${i} 174 done 175 kldstat -v | grep -q _saver || kldload ${saver}_saver 176 ;; 177 esac 178 179 # set this mode for all virtual screens 180 # 181 if [ -n "${allscreens_flags}" ]; then 182 echo -n ' allscreens' 183 for ttyv in /dev/ttyv*; do 184 vidcontrol ${allscreens_flags} < ${ttyv} > ${ttyv} 2>&1 185 done 186 fi 187 188 # set this keyboard mode for all virtual terminals 189 # 190 if [ -n "${allscreens_kbdflags}" ]; then 191 echo -n ' allscreens_kbd' 192 for ttyv in /dev/ttyv*; do 193 kbdcontrol ${allscreens_kbdflags} < ${ttyv} > ${ttyv} 2>&1 194 done 195 fi 196 197 echo '.' 198} 199 200load_rc_config $name 201run_rc_command "$1" 202