#!/bin/sh
ekmapdir=/usr/share/console-setup-mini
model=pc105
layout=''
variant=''
options=''
verbose_option=no
which () {
local IFS
IFS=:
for i in $PATH; do
if [ -x "$i/$1" ]; then
echo "$i/$1"
return 0
fi
done
return 1
}
while [ "$1" ]; do
case "$1" in
-I*)
ekmapdir=${1#-I}
;;
-model)
shift
model="$1"
;;
-layout)
shift
layout="$1"
;;
-variant)
shift
variant="$1"
;;
-option)
shift
options=$(echo $options $1 | sed 's/,/ /g')
;;
-charmap)
shift
;;
-\?|-help)
cat >&2 <<EOF
Usage: ckbcomp-mini [args] [<layout> [<variant> [<option> ... ]]]
Where legal args are:
-?,-help            Print this message
-charmap <charmap>  Ignored
-I<dir>             Search for ekmaps in <dir>
-model <name>       Specifies model used to choose component names
-layout <name>      Specifies layout used to choose component names
-variant <name>     Specifies layout variant used to choose component names
-option <name>      Adds an option used to choose component names
EOF
exit 0
;;
-*)
echo "setupcon: Unrecognised option $1" >&2
exit 1
;;
*)
if [ -z "$layout" ]; then
layout="$1"
elif [ -z "$variant" ]; then
variant="$1"
else
options=$(echo $options $1 | sed 's/,/ /g')
fi
esac
shift
done
case "$model" in
amiga|ataritt|macintosh_old|pc105|sun4|sun5)
;;
*)
model=pc105
;;
esac
if [ -z "$layout" ]; then
layout=us
fi
ekmap=$ekmapdir/$model.ekmap.gz
if [ ! -f $ekmap ]; then
echo "ckbcomp-mini: $ekmap does not exist" >&2
exit 1
fi
layout=${layout#*,}
variant=${variant#*,}
if [ "$variant" ]; then
kmap="$layout:$variant"
else
kmap="$layout"
fi
ckbcomp_rec () {
local kmap
kmap="$1"
zcat $ekmap \
| grep "^$kmap::" \
| sed "s/^$kmap:://" \
| {
while read line; do
case "$line" in
?include*)
ckbcomp_rec "${line##* }"
;;
keycode*)
echo "$line"
;;
*)
;;
esac
done
}
}
echo 'keymaps 0-4,6,8,10,12,14'
ckbcomp_rec "$kmap"
for option in $options; do
zcat $ekmap \
| grep "^$option::" \
| sed "s/^$option:://"
done
echo 'strings as usual'
