summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Bächler <thomas@archlinux.org>2010-01-12 22:13:33 +0100
committerThomas Bächler <thomas@archlinux.org>2010-01-12 22:13:33 +0100
commitb2093f6c9d4f039e7944aebfb6b5c558218dabc6 (patch)
treeb4efe8917f7e5bd2d03895a23ff35fd6c590ff4f
parent93a8be170ff841dd345084b5f5eda66c76e6534f (diff)
downloadmkinitcpio-b2093f6c9d4f039e7944aebfb6b5c558218dabc6.tar.gz
mkinitcpio-b2093f6c9d4f039e7944aebfb6b5c558218dabc6.tar.xz
Add keymap hook
-rw-r--r--hooks/keymap15
-rw-r--r--install/keymap29
2 files changed, 44 insertions, 0 deletions
diff --git a/hooks/keymap b/hooks/keymap
new file mode 100644
index 0000000..fd53f5f
--- /dev/null
+++ b/hooks/keymap
@@ -0,0 +1,15 @@
+# vim: set ft=sh:
+run_hook ()
+{
+ msg -n ":: Loading keymap..."
+ . /keymap.utf8
+ if [ "${UTF8}" = "yes" ]; then
+ /usr/bin/kbd_mode -u -C /dev/console
+ printf "\033%%G" >> /dev/console
+ else
+ /usr/bin/kbd_mode -a -C /dev/console
+ printf "\033%%@" >> /dev/console
+ fi
+ /sbin/loadkmap < /keymap.bin
+ msg "done."
+}
diff --git a/install/keymap b/install/keymap
new file mode 100644
index 0000000..cb64e69
--- /dev/null
+++ b/install/keymap
@@ -0,0 +1,29 @@
+# vim: set ft=sh:
+
+install ()
+{
+ MODULES=""
+ BINARIES=""
+ FILES=""
+ SCRIPT="keymap"
+ KEYMAP_FILE="$(mktemp ${TMPDIR}/keymap.XXXXXX)"
+ UTF8_FILE="$(mktemp ${TMPDIR}/keymap.XXXXXX)"
+ eval "$(grep -e "^LOCALE=" -e "^KEYMAP=" -e "^CONSOLEFONT=" -e "^CONSOLEMAP=" /etc/rc.conf)"
+ if [ -n "$(echo ${LOCALE} | grep -i utf)" ]; then
+ echo "UTF8='yes'" >> ${KEYMAP_FILE}
+ /bin/loadkeys -q -u $KEYMAP -b > ${KEYMAP_FILE}
+ else
+ echo "UTF8='no'" >> ${KEYMAP_FILE}
+ /bin/loadkeys -q $KEYMAP -b > ${KEYMAP_FILE}
+ fi
+ add_file ${KEYMAP_FILE} /keymap.bin
+ add_file ${UTF8_FILE} /keymap.utf8
+}
+
+help ()
+{
+cat<<HELPEOF
+ This hook loads keymap(s) specified in rc.conf
+ during early userspace.
+HELPEOF
+}