summaryrefslogtreecommitdiff
path: root/system/kbd/keymaps.initd
diff options
context:
space:
mode:
authorMax Rees <maxcrees@me.com>2020-06-04 18:18:09 -0500
committerMax Rees <maxcrees@me.com>2020-06-04 19:15:42 -0500
commit44424567c580132589c9020c4406478993f2cf65 (patch)
treed325864087924e946559ca9cb300ac7134c80249 /system/kbd/keymaps.initd
parent925fabf5441a16a7d347fed2b3bd36ef46fc1f62 (diff)
downloadpackages-44424567c580132589c9020c4406478993f2cf65.tar.gz
packages-44424567c580132589c9020c4406478993f2cf65.tar.bz2
packages-44424567c580132589c9020c4406478993f2cf65.tar.xz
packages-44424567c580132589c9020c4406478993f2cf65.zip
system/*: move consolefont & keymaps services from openrc to kbd
Diffstat (limited to 'system/kbd/keymaps.initd')
-rw-r--r--system/kbd/keymaps.initd77
1 files changed, 77 insertions, 0 deletions
diff --git a/system/kbd/keymaps.initd b/system/kbd/keymaps.initd
new file mode 100644
index 000000000..49e41b0e7
--- /dev/null
+++ b/system/kbd/keymaps.initd
@@ -0,0 +1,77 @@
+#!/sbin/openrc-run
+# Copyright (c) 2007-2015 The OpenRC Authors.
+# See the Authors file at the top-level directory of this distribution and
+# https://github.com/OpenRC/openrc/blob/master/AUTHORS
+#
+# This file is part of OpenRC. It is subject to the license terms in
+# the LICENSE file found in the top-level directory of this
+# distribution and at https://github.com/OpenRC/openrc/blob/master/LICENSE
+# This file may not be copied, modified, propagated, or distributed
+# except according to the terms contained in the LICENSE file.
+
+description="Applies a keymap for the consoles."
+
+depend()
+{
+ need localmount termencoding
+ after bootmisc
+ keyword -docker -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu
+}
+
+start()
+{
+ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
+ : ${unicode:=$UNICODE}
+ : ${keymap:=$KEYMAP}
+ : ${extended_keymaps:=$EXTENDED_KEYMAPS}
+ : ${windowkeys:=$SET_WINDOWSKEYS}
+ : ${fix_euro:=$FIX_EURO}
+ : ${dumpkeys_charset:=${DUMPKEYS_CHARSET}}
+
+ if [ -z "$keymap" ]; then
+ eerror "You need to setup keymap in /etc/conf.d/keymaps first"
+ return 1
+ fi
+
+ local ttydev=/dev/tty n=
+ [ -d /dev/vc ] && ttydev=/dev/vc/
+
+ # Force linux keycodes for PPC.
+ if [ -f /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes ]; then
+ echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
+ fi
+
+ local wkeys= kmode="-a" msg="ASCII"
+ if yesno $unicode; then
+ kmode="-u"
+ msg="UTF-8"
+ fi
+ yesno $windowkeys && wkeys="windowkeys"
+
+ # Set terminal encoding to either ASCII or UNICODE.
+ # See utf-8(7) for more information.
+ ebegin "Setting keyboard mode [$msg]"
+ n=1
+ while [ $n -le $ttyn ]; do
+ kbd_mode $kmode -C $ttydev$n
+ : $(( n += 1 ))
+ done
+ eend 0
+
+ ebegin "Loading key mappings [$keymap]"
+ loadkeys -q $wkeys $keymap $extended_keymaps
+ eend $? "Error loading key mappings" || return $?
+
+ if yesno $fix_euro; then
+ ebegin "Fixing font for euro symbol"
+ # Fix some fonts displaying the Euro, #173528.
+ echo "altgr keycode 18 = U+20AC" | loadkeys -q -
+ eend $?
+ fi
+
+ # Save the keymapping for use immediately at boot
+ if checkpath -W "$RC_LIBEXECDIR"; then
+ mkdir -p "$RC_LIBEXECDIR"/console
+ dumpkeys >"$RC_LIBEXECDIR"/console/keymap
+ fi
+}