Você pode tentar inputplug , um daemon que se conecta ao seu servidor X e ouve eventos XInput. Pode executar o script que recarrega o mapa de teclado:
inputplug -c ~/.xkb_load_hook
E ~/.xkb_load_hook
no meu caso é:
#!/bin/sh
xkbcomp -I$HOME/.xkb ~/.xkb_keymap :0 2>/dev/null 1>/dev/null
xmodmap ~/.xmodmaprc
sun_id=$(xinput list | grep "HID 0430:0005" | grep -o 'id=[0-9]*' | cut -d = -f 2)
if [ -n "$sun_id" ]
then
xkbcomp -i "$sun_id" -I$HOME/.xkb ~/.xkb_keymap_sun :0 2>/dev/null 1>/dev/null
fi
O último bit detecta um teclado Sun Type 6 e aplica diferentes configurações para ele.