#!/bin/sh -

case "$#" in
0)	host=${HOST-${HOSTNAME-`(hostname) 2> /dev/null`}}
	case "$host" in
	'')	host=`uname -n`;;
	esac

	case "$host" in
	[pl]kinzler*)		exec $0 ctrl esc del;;
	dkinzler*|aludel*)	exec $0 ctrl;;
	#*)			exec $0 fun;;
	*)			exec $0 ctrl esc;;
	esac;;
esac

# xmod - run xmodmap for various canned sets of mappings
# Steve Kinzler, steve@kinzler.com, Jul 08
# https://kinzler.com/me/home.html#x11

case "$1" in
-h)	(echo "usage: $0 [ key ... ]"; $0 -L) 1>&2; exit 1;;
-L)	exec sed -n '/#[ ]KEY:/s/)\(.*\)#[ ]KEY: */\1/p'  `which $0`;;
-l)	exec sed -n 's/^[ 	]*//; /#[ ]KEY:/s/).*//p' `which $0`;;
esac	# tcshrc: complete xmod 'p/*/`xmod -l`/'

for key
do
	case "$key" in
	ctrl)	# KEY: toggle swap the Caps_Lock and Control_L keys
xmodmap - <<EOF
remove Lock	 = Caps_Lock
remove Control	 = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add    Lock	 = Caps_Lock
add    Control	 = Control_L
EOF
	;;
	del)	# KEY: adjust Delete and Backspace
xmodmap - <<EOF
keycode  22 = Delete osfBackSpace
keycode 107 = BackSpace
EOF
	;;
	bs)	# KEY: adjust Backspace and Delete
xmodmap - <<EOF
keycode  22 = BackSpace
keycode 107 = Delete osfBackSpace
EOF
	;;
	esc)	# KEY: toggle swap the Escape and Backquote/Tilde keys
xmodmap - <<EOF
keysym Escape = grave asciitilde
keysym grave  = Escape asciitilde
EOF
	;;
	fun)	# KEY: adjust shifted function key values on PC keyboards
xmodmap - <<EOF
keycode 67 = F1  F11
keycode 68 = F2  F12
keycode 69 = F3  F13
keycode 70 = F4  F14
keycode 71 = F5  F15
keycode 72 = F6  F16
keycode 73 = F7  F17
keycode 74 = F8  F18
keycode 75 = F9  F19
keycode 76 = F10 F20
EOF
	;;
	numpad)	# KEY: use the Sun Type-5 keyboard's numeric keypad
xmodmap - <<EOF
keysym KP_Decimal = period Delete
keysym KP_0 = 0 Insert
keysym KP_1 = 1 End
keysym KP_2 = 2 Down
keysym KP_3 = 3 Next
keysym KP_4 = 4 Left
keysym KP_5 = 5 space
keysym KP_6 = 6 Right
keysym KP_7 = 7 Home
keysym KP_8 = 8 Up
keysym KP_9 = 9 Prior
keysym KP_Divide = slash
keysym KP_Multiply = asterisk
keysym KP_Subtract = minus
keysym KP_Add = plus
EOF
	;;
	*)	echo "$0: skipping unknown key ($key)" 1>&2;;
	esac
done
