1#!/bin/sh 2# 3# $NetBSD: wscons,v 1.13 2011/08/09 08:08:10 mbalmer 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 echo -n 'Keyboard ' 136 eval $DOIT $cmd 137 ;; 138 139 mapfile) 140 mapfile=$arg1 141 ( while read entry; do 142 case "$entry" in 143 \#*|"") 144 continue 145 ;; 146 *) 147 cmd="$wsctl -w \"map+=$entry\"" 148 cmd="$cmd >/dev/null" 149 eval $DOIT $cmd 150 ;; 151 esac 152 done ) < $mapfile 153 ;; 154 155 mux) 156 cmd="$wscfg -m $arg1" 157 eval $DOIT $cmd 158 ;; 159 160 setvar) 161 dev=$arg1 162 var=$arg2 163 val=$arg3 164 165 case $dev in 166 ttyE*) 167 cmdmod="-d" 168 ;; 169 wskbd*) 170 cmdmod="-k" 171 ;; 172 wsmouse*) 173 cmdmod="-m" 174 ;; 175 esac 176 echo -n "$dev: " 177 cmd="$wsctl -f /dev/$dev $cmdmod -w $var=$val" 178 eval $DOIT $cmd 179 ;; 180 181 esac 182 done ) < $config 183} 184 185load_rc_config $name 186run_rc_command "$1" 187