833cf25850
examples in the wscons.conf). Now, you have to specify wscons control device and put variable name and parameter on separate fields. NB: changes ARE NOT backward compatible and config file must be checked (but default config doesn't utilizing setvar).
186 lines
2.5 KiB
Bash
Executable File
186 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# $NetBSD: wscons,v 1.12 2007/04/02 12:42:42 mishka Exp $
|
|
#
|
|
|
|
# PROVIDE: wscons
|
|
# REQUIRE: mountcritremote
|
|
# BEFORE: LOGIN
|
|
|
|
$_rc_subr_loaded . /etc/rc.subr
|
|
|
|
name="wscons"
|
|
rcvar=$name
|
|
start_cmd="wscons_start"
|
|
stop_cmd=":"
|
|
|
|
wscons_start()
|
|
{
|
|
wscfg=/usr/sbin/wsconscfg
|
|
wsfld=/usr/sbin/wsfontload
|
|
wsctl=/sbin/wsconsctl
|
|
config=/etc/wscons.conf
|
|
usage="Usage: wsconfig [-n] [-f configfile] [-font fontpgm] [-screen screenpgm]"
|
|
DOIT=
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case $1 in
|
|
-n)
|
|
DOIT=echo
|
|
;;
|
|
-f)
|
|
config=$2
|
|
shift
|
|
;;
|
|
-font)
|
|
wsfld=$2
|
|
shift
|
|
;;
|
|
-screen)
|
|
wscfg=$2
|
|
shift
|
|
;;
|
|
*)
|
|
echo $usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
|
|
# args mean:
|
|
# screen idx scr emul
|
|
# font name width height enc file
|
|
( while read type arg1 arg2 arg3 arg4 arg5; do
|
|
case "$type" in
|
|
\#*|"")
|
|
continue
|
|
;;
|
|
|
|
font)
|
|
name=$arg1
|
|
width=$arg2
|
|
height=$arg3
|
|
enc=$arg4
|
|
file=$arg5
|
|
cmd=$wsfld
|
|
|
|
case $width in
|
|
-)
|
|
;;
|
|
*)
|
|
cmd="$cmd -w $width"
|
|
;;
|
|
esac
|
|
case $height in
|
|
-)
|
|
;;
|
|
*)
|
|
cmd="$cmd -h $height"
|
|
;;
|
|
esac
|
|
case $enc in
|
|
-)
|
|
;;
|
|
*)
|
|
cmd="$cmd -e $enc"
|
|
;;
|
|
esac
|
|
cmd="$cmd -N $name $file"
|
|
eval $DOIT $cmd
|
|
;;
|
|
|
|
screen)
|
|
idx=$arg1
|
|
scr=$arg2
|
|
emul=$arg3
|
|
cmd=$wscfg
|
|
|
|
case $scr in
|
|
-)
|
|
;;
|
|
*)
|
|
cmd="$cmd -t $scr"
|
|
;;
|
|
esac
|
|
case $emul in
|
|
-)
|
|
;;
|
|
*)
|
|
cmd="$cmd -e $emul"
|
|
;;
|
|
esac
|
|
cmd="$cmd $idx"
|
|
eval $DOIT $cmd
|
|
;;
|
|
|
|
keyboard)
|
|
kbd=$arg1
|
|
cmd=$wscfg
|
|
case $kbd in
|
|
-|auto)
|
|
cmd="$cmd -k"
|
|
;;
|
|
*)
|
|
cmd="$cmd -k $kbd"
|
|
;;
|
|
esac
|
|
eval $DOIT $cmd
|
|
;;
|
|
|
|
encoding)
|
|
map=$arg1
|
|
cmd="$wsctl -w \"encoding=$map\""
|
|
eval $DOIT $cmd
|
|
;;
|
|
|
|
mapfile)
|
|
mapfile=$arg1
|
|
( while read entry; do
|
|
case "$entry" in
|
|
\#*|"")
|
|
continue
|
|
;;
|
|
*)
|
|
cmd="$wsctl -w \"map+=$entry\""
|
|
cmd="$cmd >/dev/null"
|
|
eval $DOIT $cmd
|
|
;;
|
|
esac
|
|
done ) < $mapfile
|
|
;;
|
|
|
|
mux)
|
|
cmd="$wscfg -m $arg1"
|
|
eval $DOIT $cmd
|
|
;;
|
|
|
|
setvar)
|
|
dev=$arg1
|
|
var=$arg2
|
|
val=$arg3
|
|
|
|
case $dev in
|
|
ttyE*)
|
|
cmdmod="-d"
|
|
;;
|
|
wskbd*)
|
|
cmdmod="-k"
|
|
;;
|
|
wsmouse*)
|
|
cmdmod="-m"
|
|
;;
|
|
esac
|
|
echo -n "$dev: "
|
|
cmd="$wsctl -f /dev/$dev $cmdmod -w $var=$val"
|
|
eval $DOIT $cmd
|
|
;;
|
|
|
|
esac
|
|
done ) < $config
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|