2b60c3bb4f
keymap file to wscons.conf. Follows PR misc/12760 by Stephen Borrill, but uses the external keymap file instead of individual key entries in wscons.conf. This saves a lot of editing work if the map has to be switched.
159 lines
2.2 KiB
Bash
Executable File
159 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# $NetBSD: wscons,v 1.7 2001/05/02 15:14:03 drochner Exp $
|
|
#
|
|
|
|
# PROVIDE: wscons
|
|
# REQUIRE: mountcritremote
|
|
|
|
. /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
|
|
cmd="$cmd -w \"encoding=$map\""
|
|
eval $DOIT $cmd
|
|
;;
|
|
mapfile)
|
|
mapfile=$arg1
|
|
( while read entry; do
|
|
case "$entry" in
|
|
\#*|"")
|
|
continue
|
|
;;
|
|
*)
|
|
cmd=$wsctl
|
|
cmd="$cmd -w \"map+=$entry\""
|
|
cmd="$cmd >/dev/null"
|
|
eval $DOIT $cmd
|
|
;;
|
|
esac
|
|
done ) < $mapfile
|
|
;;
|
|
mux)
|
|
cmd="$wscfg -m $arg1"
|
|
eval $DOIT $cmd
|
|
;;
|
|
esac
|
|
done ) < $config
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|