syscons revision 126744
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 126744 2004-03-08 12:25:05Z pjd $ 28# 29 30# PROVIDE: syscons 31# REQUIRE: LOGIN usbd 32# KEYWORD: FreeBSD nojail 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 then 49 return 1 50 fi 51 if [ -x /usr/sbin/ispcvt ] && /usr/sbin/ispcvt 52 then 53 return 1 54 fi 55 return 0 56} 57 58syscons_start() 59{ 60 echo -n 'Configuring syscons:' 61 62 # keymap 63 # 64 case ${keymap} in 65 [Nn][Oo] | '') 66 ;; 67 *) 68 echo -n ' keymap'; kbdcontrol < ${kbddev} -l ${keymap} 69 ;; 70 esac 71 72 # keyrate 73 # 74 case ${keyrate} in 75 [Nn][Oo] | '') 76 ;; 77 *) 78 echo -n ' keyrate'; kbdcontrol < ${kbddev} -r ${keyrate} 79 ;; 80 esac 81 82 # keybell 83 # 84 case ${keybell} in 85 [Nn][Oo] | '') 86 ;; 87 *) 88 echo -n ' keybell'; kbdcontrol < ${kbddev} -b ${keybell} 89 ;; 90 esac 91 92 # change function keys 93 # 94 case ${keychange} in 95 [Nn][Oo] | '') 96 ;; 97 *) 98 echo -n ' keychange' 99 set - ${keychange} 100 while [ $# -gt 0 ]; do 101 kbdcontrol <${kbddev} -f "$1" "$2" 102 shift; shift 103 done 104 ;; 105 esac 106 107 # cursor type 108 # 109 case ${cursor} in 110 [Nn][Oo] | '') 111 ;; 112 *) 113 echo -n ' cursor'; vidcontrol < ${viddev} -c ${cursor} 114 ;; 115 esac 116 117 # screen mapping 118 # 119 case ${scrnmap} in 120 [Nn][Oo] | '') 121 ;; 122 *) 123 echo -n ' scrnmap'; vidcontrol < ${viddev} -l ${scrnmap} 124 ;; 125 esac 126 127 # font 8x16 128 # 129 case ${font8x16} in 130 [Nn][Oo] | '') 131 ;; 132 *) 133 echo -n ' font8x16'; vidcontrol < ${viddev} -f 8x16 ${font8x16} 134 ;; 135 esac 136 137 # font 8x14 138 # 139 case ${font8x14} in 140 [Nn][Oo] | '') 141 ;; 142 *) 143 echo -n ' font8x14'; vidcontrol < ${viddev} -f 8x14 ${font8x14} 144 ;; 145 esac 146 147 # font 8x8 148 # 149 case ${font8x8} in 150 [Nn][Oo] | '') 151 ;; 152 *) 153 echo -n ' font8x8'; vidcontrol < ${viddev} -f 8x8 ${font8x8} 154 ;; 155 esac 156 157 # blank time 158 # 159 case ${blanktime} in 160 [Nn][Oo] | '') 161 ;; 162 *) 163 echo -n ' blanktime'; vidcontrol < ${viddev} -t ${blanktime} 164 ;; 165 esac 166 167 # screen saver 168 # 169 case ${saver} in 170 [Nn][Oo] | '') 171 ;; 172 *) 173 echo -n ' screensaver' 174 for i in `kldstat | awk '$5 ~ "^splash_.*$" { print $5 }'`; do 175 kldunload ${i} 176 done 177 kldstat -v | grep -q _saver || kldload ${saver}_saver 178 ;; 179 esac 180 181 # set this mode for all virtual screens 182 # 183 if [ -n "${allscreens_flags}" ]; then 184 echo -n ' allscreens' 185 for ttyv in /dev/ttyv*; do 186 vidcontrol ${allscreens_flags} < ${ttyv} > ${ttyv} 2>&1 187 done 188 fi 189 190 # set this keyboard mode for all virtual terminals 191 # 192 if [ -n "${allscreens_kbdflags}" ]; then 193 echo -n ' allscreens_kbd' 194 for ttyv in /dev/ttyv*; do 195 kbdcontrol ${allscreens_kbdflags} < ${ttyv} > ${ttyv} 2>&1 196 done 197 fi 198 199 echo '.' 200} 201 202load_rc_config $name 203run_rc_command "$1" 204