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