[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

loadkeys in early userspace (using initramfs-tools)



Hi,

Just like cryptsetup the uswsusp package needs to interact with the
user via the keyboard in early userspace. For people with non-us
keyboards that can be problematic because loadkeys hasn't run yet.

I found out that cryptsetup already solved the problem in its
initramfs-{hook,script}. To not duplicate your work wouldn't it be
better to split that functionality of and put it in the initramfs-tools
package?

What do you think?

grts Tim

For reference, the code I'm referring to follows,

====[ In hooks/cryptroot ]=======================================================

prepare_keymap() {
        local env charmap

        # Allow the correct keymap to be loaded if possible
        if [ ! -x /bin/loadkeys ] || [ ! -r /etc/console/boottime.kmap.gz ]; then
                return 1
        fi

        copy_exec /bin/loadkeys /bin/
        cp /etc/console/boottime.kmap.gz $DESTDIR/etc/

        # Check for UTF8 console
        if [ ! -x /usr/bin/kbd_mode ]; then
                return 0
        fi

        if [ -r /etc/environment ]; then
                env="/etc/environment"
        elif [ -r /etc/default/locale ]; then
                env="/etc/default/locale"
        else
                return 0
        fi

        for var in LANG LC_ALL LC_CTYPE; do
                value=$(egrep "^[^#]*${var}=" $env | tail -n1 | cut -d= -f2)
                eval $var=$value
        done

        charmap=$(LANG=$LANG LC_ALL=$LC_ALL LC_CTYPE=$LC_CTYPE locale charmap)
        if [ "$charmap" = "UTF-8" ]; then
                copy_exec /usr/bin/kbd_mode /bin/
        fi
        return 0
}


====[ In scripts/local-top/cryptroot ]============================================

load_keymap()
{
        local opts
        opts="-q"

        # Should terminal be in UTF8 mode?
        if [ -x /bin/kbd_mode ]; then
                /bin/kbd_mode -u
                opts="$opts -u"
        fi

        # Load custom keymap
        if [ -x /bin/loadkeys -a -r /etc/boottime.kmap.gz ]; then
                loadkeys $opts /etc/boottime.kmap.gz
        fi
}

Attachment: signature.asc
Description: PGP signature


Reply to: