]> git.rmz.io Git - dotfiles.git/blob - bin/xkbload
nvim: absorb yanky, but leave it disabled for now
[dotfiles.git] / bin / xkbload
1 #!/usr/bin/env bash
2
3 # This script is meant to be called by inputplug when a new input device event happened.
4
5 xkb_config=$XDG_CONFIG_HOME/xkb
6 xkb_file=$xkb_config/default.xkb
7 [[ -f $xkb_config/$(hostname).xkb ]] && xkb_file=$(hostname)
8
9 XIDeviceEnabled()
10 {
11 kinadv2="Kinesis Advantage2 Keyboard"
12 if [[ "$device_name" == "$kinadv2" ]]; then
13 # HACK: if I don't sleep, capslock is enabled on reconnect
14 sleep 0.1
15 echo "xkbcomp default.xkb"
16 xkbcomp -w0 -I$xkb_config $xkb_file $DISPLAY -i $device_id
17 fi
18 }
19
20 call_event_handler()
21 {
22 case $(type -t $event_type) in
23 function) $event_type ;;
24 *) echo "No handler for event '$event_type'" ;;
25 esac
26 }
27
28 if [[ $# -eq 4 ]]; then
29 # See inputplug(1)
30 event_type=$1
31 device_id=$2
32 device_type=$3
33 device_name=$4
34 call_event_handler
35 else
36 # if not called with four args, loop over all devices
37 event_type=XIDeviceEnabled
38 for device_id in $(xinput list --id-only); do
39 device_name="$(xinput list --name-only $device_id)"
40 device_type="UnknownTODO" # don't know how to get this easily
41 call_event_handler
42 done
43 fi