--- /dev/null
+#!/usr/bin/env bash
+
+# This script is meant to be called by inputplug when a new input device event happened.
+
+xkb_config=$XDG_CONFIG_HOME/xkb
+xkb_file=$xkb_config/default.xkb
+[[ -f $xkb_config/$(hostname).xkb ]] && xkb_file=$(hostname)
+
+XIDeviceEnabled()
+{
+ kinadv2="Kinesis Advantage2 Keyboard"
+ if [[ "$device_name" == "$kinadv2" ]]; then
+ # HACK: if I don't sleep, capslock is enabled on reconnect
+ sleep 0.1
+ echo "xkbcomp default.xkb"
+ xkbcomp -w0 -I$xkb_config $xkb_file $DISPLAY -i $device_id
+ fi
+}
+
+call_event_handler()
+{
+ case $(type -t $event_type) in
+ function) $event_type ;;
+ *) echo "No handler for event '$event_type'" ;;
+ esac
+}
+
+if [[ $# -eq 4 ]]; then
+ # See inputplug(1)
+ event_type=$1
+ device_id=$2
+ device_type=$3
+ device_name=$4
+ call_event_handler
+else
+ # if not called with four args, loop over all devices
+ event_type=XIDeviceEnabled
+ for device_id in $(xinput list --id-only); do
+ device_name="$(xinput list --name-only $device_id)"
+ device_type="UnknownTODO" # don't know how to get this easily
+ call_event_handler
+ done
+fi