syscons revision 102993
1#!/bin/sh - 2# 3# Copyright (c) 2000 The FreeBSD Project 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 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 102993 2002-09-05 23:51:28Z fenner $ 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" 39load_rc_config $name 40 41# stdin must be redirected because it might be for a serial console 42# 43kbddev=/dev/ttyv0 44viddev=/dev/ttyv0 45 46syscons_precmd() 47{ 48 if [ -c $kbddev ] && \ 49 [ -x /usr/sbin/ispcvt ] && \ 50 ! /usr/sbin/ispcvt 51 then 52 return 0 53 fi 54 return 1 55} 56 57syscons_start() 58{ 59 echo -n 'Configuring syscons:' 60 61 # keymap 62 # 63 case ${keymap} in 64 [Nn][Oo] | '') 65 ;; 66 *) 67 echo -n ' keymap'; kbdcontrol < ${kbddev} -l ${keymap} 68 ;; 69 esac 70 71 # keyrate 72 # 73 case ${keyrate} in 74 [Nn][Oo] | '') 75 ;; 76 *) 77 echo -n ' keyrate'; kbdcontrol < ${kbddev} -r ${keyrate} 78 ;; 79 esac 80 81 # keybell 82 # 83 case ${keybell} in 84 [Nn][Oo] | '') 85 ;; 86 *) 87 echo -n ' keybell'; kbdcontrol < ${kbddev} -b ${keybell} 88 ;; 89 esac 90 91 # change function keys 92 # 93 case ${keychange} in 94 [Nn][Oo] | '') 95 ;; 96 *) 97 echo -n ' keychange' 98 set - ${keychange} 99 while [ $# -gt 0 ]; do 100 kbdcontrol <${kbddev} -f "$1" "$2" 101 shift; shift 102 done 103 ;; 104 esac 105 106 # cursor type 107 # 108 case ${cursor} in 109 [Nn][Oo] | '') 110 ;; 111 *) 112 echo -n ' cursor'; vidcontrol < ${viddev} -c ${cursor} 113 ;; 114 esac 115 116 # screen mapping 117 # 118 case ${scrnmap} in 119 [Nn][Oo] | '') 120 ;; 121 *) 122 echo -n ' scrnmap'; vidcontrol < ${viddev} -l ${scrnmap} 123 ;; 124 esac 125 126 # font 8x16 127 # 128 case ${font8x16} in 129 [Nn][Oo] | '') 130 ;; 131 *) 132 echo -n ' font8x16'; vidcontrol < ${viddev} -f 8x16 ${font8x16} 133 ;; 134 esac 135 136 # font 8x14 137 # 138 case ${font8x14} in 139 [Nn][Oo] | '') 140 ;; 141 *) 142 echo -n ' font8x14'; vidcontrol < ${viddev} -f 8x14 ${font8x14} 143 ;; 144 esac 145 146 # font 8x8 147 # 148 case ${font8x8} in 149 [Nn][Oo] | '') 150 ;; 151 *) 152 echo -n ' font8x8'; vidcontrol < ${viddev} -f 8x8 ${font8x8} 153 ;; 154 esac 155 156 # blank time 157 # 158 case ${blanktime} in 159 [Nn][Oo] | '') 160 ;; 161 *) 162 echo -n ' blanktime'; vidcontrol < ${viddev} -t ${blanktime} 163 ;; 164 esac 165 166 # screen saver 167 # 168 case ${saver} in 169 [Nn][Oo] | '') 170 ;; 171 *) 172 echo -n ' screensaver' 173 for i in `kldstat | awk '$5 ~ "^splash_.*$" { print $5 }'`; do 174 kldunload ${i} 175 done 176 kldstat -v | grep -q _saver || kldload ${saver}_saver 177 ;; 178 esac 179 180 # set this mode for all virtual screens 181 # 182 if [ -n "${allscreens_flags}" ]; then 183 echo -n ' allscreens' 184 for ttyv in /dev/ttyv*; do 185 vidcontrol ${allscreens_flags} < ${ttyv} > ${ttyv} 2>&1 186 done 187 fi 188 189 # set this keyboard mode for all virtual terminals 190 # 191 if [ -n "${allscreens_kbdflags}" ]; then 192 echo -n ' allscreens_kbd' 193 for ttyv in /dev/ttyv*; do 194 kbdcontrol ${allscreens_kbdflags} < ${ttyv} > ${ttyv} 2>&1 195 done 196 fi 197 198 echo '.' 199} 200