#!/bin/sh

. alterator-sh-functions

DATADIR=/etc/alterator/sysconfig/kbd

KBD_CONFIG=/etc/sysconfig/keyboard
XKB_CONFIG=/etc/X11/xinit/Xkbmap

on_message()
{
	case "$in_action" in
		list)
			local language=${in_language%%;*}
			echo "("
			[ -d "$DATADIR/$language" ] &&
				find "$DATADIR/$language" -name '*.xkb'|
					sed -r "s,$DATADIR/$language/([^/]+).xkb,(\"\1\"),"
			echo ")"
			;;
		write)
			local language=${in_language%%;*}
			local path="$DATADIR/$language/$in__objects"
			install -Dpm644 "$path.xkb" "$XKB_CONFIG" &&
			install -Dpm644 "$path.kbd" "$KBD_CONFIG" &&
			/usr/bin/setxkbmap -option "" &&
			/usr/bin/setxkbmap `cat "$XKB_CONFIG"`
			write_nop
			;;
		*)
			echo '#f'
			;;
	esac
}

message_loop
