Add much needed scripts to /etc/rc.d
[dragonfly.git] / etc / rc.d / syscons
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: src/etc/rc.d/syscons,v 1.9 2002/09/09 22:40:34 gordon Exp $
28 # $DragonFly: src/etc/rc.d/syscons,v 1.2 2004/01/27 00:55:43 rob Exp $
29 #
30
31 # PROVIDE: syscons
32 # REQUIRE: LOGIN usbd
33 # KEYWORD: DragonFly 
34
35 . /etc/rc.subr
36
37 name="syscons"
38 start_precmd="syscons_precmd"
39 start_cmd="syscons_start"
40
41 # stdin must be redirected because it might be for a serial console
42 #
43 kbddev=/dev/ttyv0
44 viddev=/dev/ttyv0
45
46 syscons_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
57 syscons_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
201 load_rc_config $name
202 run_rc_command "$1"