1#! /bin/sh
2
3mktitmap () {
4	kmap=$1
5	map=$2
6	if egrep "ENCODE:[ 	]*BIG5" $kmap
7	then
8		if iconv -f BIG5 -t UTF8 $kmap > /tmp/$map.utf
9		then
10			`dirname $0`/mkkmcxt /tmp/$map.utf
11		else	echo cannot convert $kmap to UTF-8
12		fi
13		rm -f /tmp/$map.utf
14	elif egrep "ENCODE:[ 	]*GB" $kmap
15	then
16		if iconv -f GB18030 -t UTF8 $kmap > /tmp/$map.utf ||
17		   iconv -f GBK -t UTF8 $kmap > /tmp/$map.utf ||
18		   iconv -f GB2312 -t UTF8 $kmap > /tmp/$map.utf
19		then
20			`dirname $0`/mkkmcxt /tmp/$map.utf
21		else	echo cannot convert $kmap to UTF-8
22		fi
23		rm -f /tmp/$map.utf
24	elif egrep "ENCODE:[ 	]*JIS" $kmap
25	then
26		if iconv -f UJIS -t UTF8 $kmap > /tmp/$map.utf
27		then
28			`dirname $0`/mkkmcxt /tmp/$map.utf
29		else	echo cannot convert $kmap to UTF-8
30		fi
31		rm -f /tmp/$map.utf
32	elif egrep "ENCODE:[ 	]*KS" $kmap
33	then
34		if iconv -f UHC -t UTF8 $kmap > /tmp/$map.utf
35		then
36			`dirname $0`/mkkmcxt /tmp/$map.utf
37		else	echo cannot convert $kmap to UTF-8
38		fi
39		rm -f /tmp/$map.utf
40	else	echo cannot handle encoding of $kmap
41	fi
42}
43
44while [ "$1" != "" ]
45do
46	kmap="$1"
47
48	if [ ! -d keymaps ]
49	then	mkdir keymaps
50	fi
51
52	case $kmap in
53	*.kmap)	`dirname $0`/mkkmyudt $kmap;;
54	*.utf)	`dirname $0`/mkkmcxt $kmap;;
55	*.mim)	`dirname $0`/mkkmmim $kmap;;
56	*.vim)	`dirname $0`/mkkmvim $kmap;;
57	*.tit)	map=`basename $kmap .tit`
58		mktitmap $kmap $map
59		;;
60	*.cit)	map=`basename $kmap .cit`
61		if cit2tit $kmap > /tmp/$map.tit
62		then	mktitmap /tmp/$map.tit $map
63		else	echo cannot decompile $kmap
64		fi
65		rm -f /tmp/$map.tit
66		;;
67	*.*)	echo unknown keyboard mapping file type $kmap;;
68	*)	hantag=`echo $kmap | tr '[A-Z]' '[a-z]'`
69		case "$hantag" in
70		cj|cangjie)	case "$2" in
71				+)	./mkkmhkscs
72					cjuni=keymaps/hkscs.uni
73					shift;;
74				*hkscs*cj*.txt)	./mkkmhkscs "$2"
75					cjuni=keymaps/hkscs.uni
76					shift;;
77				*)	cjuni=;;
78				esac
79				`dirname $0`/mkkmuhan -c Cangjie cj $cjuni;;
80		mainlandtele*)	`dirname $0`/mkkmuhan -c MainlandTelegraph mt;;
81		taiwantele*)	`dirname $0`/mkkmuhan -c TaiwanTelegraph tt;;
82		canton*)	`dirname $0`/mkkmuhan -c Cantonese ct;;
83		hanyu*|pinlu)	`dirname $0`/mkkmuhan -c HanyuPinlu hp;;
84		mand*)	`dirname $0`/mkkmuhan -c Mandarin md;;
85		tang)	`dirname $0`/mkkmuhan -c Tang tn;;
86		kun|japanesekun)	`dirname $0`/mkkmuhan -j JapaneseKun jk;;
87		on|japaneseon)	`dirname $0`/mkkmuhan -j JapaneseOn jo;;
88		kor*)	`dirname $0`/mkkmuhan -k Korean kr;;
89		viet*)	`dirname $0`/mkkmuhan Vietnamese vn;;
90		viqr|VIQR)	if make viqr
91				then	./mkkentry -U VIQR vq
92				fi;;
93		vni|VNI)	if make vni
94				then	./mkkentry -U VNI vi
95				fi;;
96		vtelex|Vtelex)	if make vtelex
97				then	./mkkentry -U Vtelex vt
98				fi;;
99		*)	echo generating keyboard mapping for $kmap script from UnicodeData >&2
100			`dirname $0`/mkkmudat $kmap
101			;;
102		esac;;
103	esac
104
105	shift
106done
107