summaryrefslogtreecommitdiff
path: root/hooks
diff options
context:
space:
mode:
authorDavid Härdeman <david@austin.(none)>2007-04-12 21:56:32 +0200
committerDavid Härdeman <david@austin.(none)>2007-04-12 21:56:32 +0200
commit1541218fe148cfae9c3a4ce84e7fd6692f3d2028 (patch)
tree94ed1a69e1aea03c37cfde1237c64a54e00e3469 /hooks
parentfdbdb7193427633c6ac8574f5416058b3b70e305 (diff)
downloadinitramfs-tools-1541218fe148cfae9c3a4ce84e7fd6692f3d2028.tar.gz
initramfs-tools-1541218fe148cfae9c3a4ce84e7fd6692f3d2028.zip
Add support for loading keymaps. (closes: 337663)
Diffstat (limited to 'hooks')
-rwxr-xr-xhooks/keymap55
1 files changed, 55 insertions, 0 deletions
diff --git a/hooks/keymap b/hooks/keymap
new file mode 100755
index 0000000..749f24c
--- /dev/null
+++ b/hooks/keymap
@@ -0,0 +1,55 @@
+#!/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 ]; then
+ exit 0
+fi
+
+. /usr/share/initramfs-tools/hook-functions
+copy_exec /bin/loadkeys /bin
+cp /etc/console/boottime.kmap.gz ${DESTDIR}/etc
+
+# 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
+