From 44424567c580132589c9020c4406478993f2cf65 Mon Sep 17 00:00:00 2001 From: Max Rees Date: Thu, 4 Jun 2020 18:18:09 -0500 Subject: system/*: move consolefont & keymaps services from openrc to kbd --- system/kbd/APKBUILD | 32 +++++++++++++++--- system/kbd/consolefont.confd | 20 ++++++++++++ system/kbd/consolefont.initd | 70 ++++++++++++++++++++++++++++++++++++++++ system/kbd/keymaps.confd | 24 ++++++++++++++ system/kbd/keymaps.initd | 77 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 218 insertions(+), 5 deletions(-) create mode 100644 system/kbd/consolefont.confd create mode 100644 system/kbd/consolefont.initd create mode 100644 system/kbd/keymaps.confd create mode 100644 system/kbd/keymaps.initd (limited to 'system/kbd') diff --git a/system/kbd/APKBUILD b/system/kbd/APKBUILD index d54e7f29c..deb7fb205 100644 --- a/system/kbd/APKBUILD +++ b/system/kbd/APKBUILD @@ -2,9 +2,9 @@ # Maintainer: A. Wilcox pkgname=kbd pkgver=2.2.0_git20190823 -pkgrel=0 +pkgrel=1 pkgdesc="Console keyboard and font management utilities" -url=" " +url="https://kbd-project.org/" arch="all" options="!check" # padding error on at least ppc64 license="GPL-2.0+" @@ -12,8 +12,13 @@ depends="" checkdepends="check-dev" makedepends="linux-headers linux-pam-dev autoconf automake libtool" subpackages="$pkgname-doc $pkgname-fonts::noarch $pkgname-keymaps::noarch - $pkgname-lang" -source="https://dev.sick.bike/dist/$pkgname-$pkgver.tar.xz" + $pkgname-lang $pkgname-openrc" +source="https://dev.sick.bike/dist/$pkgname-$pkgver.tar.xz + consolefont.confd + consolefont.initd + keymaps.confd + keymaps.initd + " prepare() { default_prepare @@ -37,6 +42,19 @@ check() { package() { make DESTDIR="$pkgdir" install + + for i in consolefont keymaps; do + install -Dm644 "$srcdir"/$i.confd \ + "$pkgdir"/etc/conf.d/$i + install -Dm755 "$srcdir"/$i.initd \ + "$pkgdir"/etc/init.d/$i + done +} + +openrc() { + default_openrc + license="BSD-2-Clause" + replaces="openrc<0.24.1-r10" } fonts() { @@ -52,4 +70,8 @@ keymaps() { mv "$pkgdir"/usr/share/unimaps "$subpkgdir"/usr/share/ } -sha512sums="7f6202aeb17d6224095447a92d999478220457e1e7cadb90a7c40ca7f3b0c5b1f672db1995fb69652ca37558a75df582bfb5fea5772f3b1e040fe39f8f54504e kbd-2.2.0_git20190823.tar.xz" +sha512sums="7f6202aeb17d6224095447a92d999478220457e1e7cadb90a7c40ca7f3b0c5b1f672db1995fb69652ca37558a75df582bfb5fea5772f3b1e040fe39f8f54504e kbd-2.2.0_git20190823.tar.xz +19761fdd2b32c1bbcc9254b89b7893741e144b917a75410af3f274553fe61e2f56cbbd17ff77ac929e9377604663cbbfd9e53c73e7d41e71de6de573730950c7 consolefont.confd +1e67f75f27ec5de8f71489c83f78e53e8fd0925ae2d82dabf516f98905c5aff206a8e943e92b6af413eae5f0ecb9c2240526dfc3c56811a8dc1d19ced561bba3 consolefont.initd +af7d37fc6be1382414ca8245ca6f8d2ee8b82650b8a08eebbd980cf6dd2b92524fce2851ce0b2cd67e915488c12044ab50c5ab1f01c3072af87eed3e058ac268 keymaps.confd +510d7eb582a914fa7cfb868d0c3d55a21ee1519033117d0943a153528b5810d09f6421ddc02d93906c1a66fb7e07e86240f38dad0d38cfb5a8c7e9a6335a937f keymaps.initd" diff --git a/system/kbd/consolefont.confd b/system/kbd/consolefont.confd new file mode 100644 index 000000000..4c41d0633 --- /dev/null +++ b/system/kbd/consolefont.confd @@ -0,0 +1,20 @@ +# The consolefont service is not activated by default. If you need to +# use it, you should run "rc-update add consolefont boot" as root. +# +# consolefont specifies the default font that you'd like Linux to use on the +# console. You will have to install a package such as kbd-fonts or +# terminus-font to have a selection; they will be installed in +# /usr/share/consolefonts. +# +# The following (from terminus-font) is a good font for HiDPI screens. +#consolefont="ter-i32n" + +# consoletranslation is the charset map file to use. Leave commented to use +# the default one. Have a look in /usr/share/consoletrans for a selection of +# map files you can use. +#consoletranslation="8859-1_to_uni" + +# unicodemap is the unicode map file to use. Leave commented to use the +# default one. Have a look in /usr/share/unimaps (from the kbd-keymaps +# package) for a selection of map files you can use. +#unicodemap="iso01" diff --git a/system/kbd/consolefont.initd b/system/kbd/consolefont.initd new file mode 100644 index 000000000..63d8601c5 --- /dev/null +++ b/system/kbd/consolefont.initd @@ -0,0 +1,70 @@ +#!/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="Sets a font for the consoles." + +depend() +{ + need localmount termencoding + after hotplug bootmisc modules + keyword -docker -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu +} + +start() +{ + ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} + consolefont=${consolefont:-${CONSOLEFONT}} + unicodemap=${unicodemap:-${UNICODEMAP}} + consoletranslation=${consoletranslation:-${CONSOLETRANSLATION}} + + if [ -z "$consolefont" ]; then + ebegin "Using the default console font" + eend 0 + return 0 + fi + + if [ "$ttyn" = 0 ]; then + ebegin "Skipping font setup (rc_tty_number == 0)" + eend 0 + return 0 + fi + + local x= param= sf_param= retval=0 ttydev=/dev/tty + + # Get additional parameters + if [ -n "$consoletranslation" ]; then + param="$param -m $consoletranslation" + fi + if [ -n "${unicodemap}" ]; then + param="$param -u $unicodemap" + fi + + # Set the console font + ebegin "Setting console font [$consolefont]" + [ -d /dev/vc ] && ttydev=/dev/vc/ + x=1 + while [ $x -le $ttyn ]; do + if ! setfont $consolefont $param -C $ttydev$x >/dev/null; then + retval=1 + break + fi + : $(( x += 1 )) + done + eend $retval + + # Store the font so we can use it ASAP on boot + if [ $retval -eq 0 ] && checkpath -W "$RC_LIBEXECDIR"; then + mkdir -p "$RC_LIBEXECDIR"/console + setfont -O "$RC_LIBEXECDIR"/console/font + fi + + return $retval +} diff --git a/system/kbd/keymaps.confd b/system/kbd/keymaps.confd new file mode 100644 index 000000000..9a2863413 --- /dev/null +++ b/system/kbd/keymaps.confd @@ -0,0 +1,24 @@ +# Use keymap to specify the default console keymap. There is a complete tree +# of keymaps in /usr/share/keymaps to choose from (from the kbd-keymaps +# package). +keymap="us" + +# Should we first load the 'windowkeys' console keymap? Most x86 users will +# say "yes" here. Note that non-x86 users should leave it as "no". +# Loading this keymap will enable VT switching (like ALT+Left/Right) +# using the special windows keys on the linux console. +windowkeys="NO" + +# The maps to load for extended keyboards. Most users will leave this as is. +extended_keymaps="" +#extended_keymaps="backspace keypad euro2" + +# Tell dumpkeys(1) to interpret character action codes to be +# from the specified character set. +# This only matters if you set unicode="yes" in /etc/rc.conf. +# For a list of valid sets, run `dumpkeys --help` +dumpkeys_charset="" + +# Some fonts map AltGr-E to the currency symbol instead of the Euro. +# To fix this, set to "yes" +fix_euro="NO" 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 +} -- cgit v1.2.3-70-g09d2