1#!/bin/sh 2# 3# $NetBSD: wscons,v 1.12 2007/04/02 12:42:42 mishka Exp $ 4# 5 6# PROVIDE: wscons 7# REQUIRE: mountcritremote 8# BEFORE: LOGIN 9 10$_rc_subr_loaded . /etc/rc.subr 11 12name="wscons" 13rcvar=$name 14start_cmd="wscons_start" 15stop_cmd=":" 16 17wscons_start() 18{ 19 wscfg=/usr/sbin/wsconscfg 20 wsfld=/usr/sbin/wsfontload 21 wsctl=/sbin/wsconsctl 22 config=/etc/wscons.conf 23 usage="Usage: wsconfig [-n] [-f configfile] [-font fontpgm] [-screen screenpgm]" 24 DOIT= 25 26 while [ $# -gt 0 ]; do 27 case $1 in 28 -n) 29 DOIT=echo 30 ;; 31 -f) 32 config=$2 33 shift 34 ;; 35 -font) 36 wsfld=$2 37 shift 38 ;; 39 -screen) 40 wscfg=$2 41 shift 42 ;; 43 *) 44 echo $usage 45 exit 1 46 ;; 47 esac 48 shift 49 done 50 51 52 # args mean: 53 # screen idx scr emul 54 # font name width height enc file 55 ( while read type arg1 arg2 arg3 arg4 arg5; do 56 case "$type" in 57 \#*|"") 58 continue 59 ;; 60 61 font) 62 name=$arg1 63 width=$arg2 64 height=$arg3 65 enc=$arg4 66 file=$arg5 67 cmd=$wsfld 68 69 case $width in 70 -) 71 ;; 72 *) 73 cmd="$cmd -w $width" 74 ;; 75 esac 76 case $height in 77 -) 78 ;; 79 *) 80 cmd="$cmd -h $height" 81 ;; 82 esac 83 case $enc in 84 -) 85 ;; 86 *) 87 cmd="$cmd -e $enc" 88 ;; 89 esac 90 cmd="$cmd -N $name $file" 91 eval $DOIT $cmd 92 ;; 93 94 screen) 95 idx=$arg1 96 scr=$arg2 97 emul=$arg3 98 cmd=$wscfg 99 100 case $scr in 101 -) 102 ;; 103 *) 104 cmd="$cmd -t $scr" 105 ;; 106 esac 107 case $emul in 108 -) 109 ;; 110 *) 111 cmd="$cmd -e $emul" 112 ;; 113 esac 114 cmd="$cmd $idx" 115 eval $DOIT $cmd 116 ;; 117 118 keyboard) 119 kbd=$arg1 120 cmd=$wscfg 121 case $kbd in 122 -|auto) 123 cmd="$cmd -k" 124 ;; 125 *) 126 cmd="$cmd -k $kbd" 127 ;; 128 esac 129 eval $DOIT $cmd 130 ;; 131 132 encoding) 133 map=$arg1 134 cmd="$wsctl -w \"encoding=$map\"" 135 eval $DOIT $cmd 136 ;; 137 138 mapfile) 139 mapfile=$arg1 140 ( while read entry; do 141 case "$entry" in 142 \#*|"") 143 continue 144 ;; 145 *) 146 cmd="$wsctl -w \"map+=$entry\"" 147 cmd="$cmd >/dev/null" 148 eval $DOIT $cmd 149 ;; 150 esac 151 done ) < $mapfile 152 ;; 153 154 mux) 155 cmd="$wscfg -m $arg1" 156 eval $DOIT $cmd 157 ;; 158 159 setvar) 160 dev=$arg1 161 var=$arg2 162 val=$arg3 163 164 case $dev in 165 ttyE*) 166 cmdmod="-d" 167 ;; 168 wskbd*) 169 cmdmod="-k" 170 ;; 171 wsmouse*) 172 cmdmod="-m" 173 ;; 174 esac 175 echo -n "$dev: " 176 cmd="$wsctl -f /dev/$dev $cmdmod -w $var=$val" 177 eval $DOIT $cmd 178 ;; 179 180 esac 181 done ) < $config 182} 183 184load_rc_config $name 185run_rc_command "$1" 186