diff options
Diffstat (limited to 'repo/kbd')
-rw-r--r-- | repo/kbd/error.h | 20 | ||||
-rw-r--r-- | repo/kbd/loadkeys.confd | 23 | ||||
-rw-r--r-- | repo/kbd/loadkeys.initd | 72 |
3 files changed, 115 insertions, 0 deletions
diff --git a/repo/kbd/error.h b/repo/kbd/error.h new file mode 100644 index 0000000..5eb8ed5 --- /dev/null +++ b/repo/kbd/error.h @@ -0,0 +1,20 @@ +#ifndef ERROR_H +#define ERROR_H + +#include <stdio.h> +#include <stdarg.h> +#include <err.h> + +static inline void error(int status, int errnum, const char *fmt, ...) +{ + va_list ap; + void (*errfunc[2])(int, const char *, va_list) = { &verr, &verrx }; + void (*warnfunc[2])(const char *, va_list) = { &vwarn, &vwarnx }; + fflush(stdout); + va_start(ap, fmt); + if (status != 0) + errfunc[errnum==0](status, fmt, ap); /* does not return */ + warnfunc[errnum==0](fmt, ap); + va_end(ap); +} +#endif diff --git a/repo/kbd/loadkeys.confd b/repo/kbd/loadkeys.confd new file mode 100644 index 0000000..1ba568a --- /dev/null +++ b/repo/kbd/loadkeys.confd @@ -0,0 +1,23 @@ +# Use keymap to specify the default console keymap. There is a complete tree +# of keymaps in /usr/share/keymaps to choose from. +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/repo/kbd/loadkeys.initd b/repo/kbd/loadkeys.initd new file mode 100644 index 0000000..6686bf0 --- /dev/null +++ b/repo/kbd/loadkeys.initd @@ -0,0 +1,72 @@ +#!/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() +{ + provide keymaps + 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/${0##*/} 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 +} |