summaryrefslogtreecommitdiff
path: root/hooks/keymap
blob: fa97209c516fc1707fbc063e1fb790e4eb06ff2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/bin/sh

PREREQ=""

prereqs()
{
	echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
	prereqs
	exit 0
	;;
esac

# Hook to load keymaps into the initramfs if requested by KEYMAP="y"
if [ "$KEYMAP" != "y" ] && [ "$KEYMAP" != "Y" ]; then
	exit 0
fi

# Step 1 - Basic tools
if [ ! -x /bin/loadkeys ] ||
! ( [ -r /etc/console/boottime.kmap.gz ] \
	|| [ -r /etc/console-setup/cached.kmap.gz ] ); then
	exit 0
fi

. /usr/share/initramfs-tools/hook-functions
copy_exec /bin/loadkeys /bin

if [ -e /etc/console-setup/cached.kmap.gz ]; then
	cp /etc/console-setup/cached.kmap.gz ${DESTDIR}/etc/boottime.kmap.gz
else
	cp /etc/console/boottime.kmap.gz ${DESTDIR}/etc/
fi

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

if [ -r /etc/environment ]; then
	env="/etc/environment"
elif [ -r /etc/default/locale ]; then
	env="/etc/default/locale"
else
	exit 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
exit 0