#!/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