#!/bin/sh
### BEGIN INIT INFO
# Provides:          keyboard-setup
# Required-Start:    mountkernfs
# Required-Stop:
# Should-Start:      keymap udev
# X-Start-Before:    checkroot
# Default-Start:     S
# Default-Stop:
# X-Interactive:     true
# Short-Description: Set preliminary keymap
# Description:       Set the console keyboard as early as possible
#                    so during the file systems checks the administrator
#                    can interact.  At this stage of the boot process
#                    only the ASCII symbols are supported.
### END INIT INFO

set -e

# This script is not used by keyboard-configuration.  It is used
# jointly by console-setup and console-setup-mini

test -f /bin/setupcon || exit 0

if [ -f /etc/default/locale ]; then
    # In order to permit auto-detection of the charmap when
    # console-setup-mini operates without configuration file.
    . /etc/default/locale
    export LANG
fi

if [ -f /lib/lsb/init-functions ]; then
    . /lib/lsb/init-functions
else
    log_action_begin_msg () {
	echo -n "$@... "
    }

    log_action_end_msg () {
	if [ "$1" -eq 0 ]; then 
	    echo done.
	else
	    echo failed.
	fi
    }
fi

case "$1" in
    stop|status)
        # keyboard-setup isn't a daemon
        ;;
    start|force-reload|restart|reload)
	# If plymouth is running, then the console may be in raw mode and
	# loadkeys will do confusing things to the keymap, so don't try.
	if ! type plymouth >/dev/null || ! plymouth --ping; then
	    log_action_begin_msg "Setting preliminary keymap"
	    if setupcon -k --force 2>/dev/null; then
		log_action_end_msg 0
	    else
		log_action_end_msg $?
	    fi
	fi
	;;
    *)
        echo 'Usage: /etc/init.d/keyboard-setup {start|reload|restart|force-reload|stop|status}'
        exit 1
        ;;
esac

exit 0
