summaryrefslogtreecommitdiff
path: root/hooks/keymap
diff options
context:
space:
mode:
Diffstat (limited to 'hooks/keymap')
-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..a2b1b08
--- /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
+