You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.5 KiB
89 lines
1.5 KiB
#!/bin/sh |
|
|
|
[ -n "$DRACUT_SYSTEMD" ] && exit 0 |
|
|
|
if [ -x "$systemdutildir"/systemd-vconsole-setup ]; then |
|
"$systemdutildir"/systemd-vconsole-setup "$@" |
|
fi |
|
|
|
[ -e /etc/vconsole.conf ] && . /etc/vconsole.conf |
|
|
|
DEFAULT_FONT=eurlatgr |
|
DEFAULT_KEYMAP=/etc/sysconfig/console/default.kmap |
|
|
|
set_keyboard() { |
|
local param |
|
|
|
[ "${UNICODE}" = 1 ] && param=-u || param=-a |
|
kbd_mode ${param} |
|
} |
|
|
|
set_terminal() { |
|
local dev=$1 |
|
|
|
if [ "${UNICODE}" = 1 ]; then |
|
printf '\033%%G' >&7 |
|
stty -F "${dev}" iutf8 |
|
else |
|
printf '\033%%@' >&7 |
|
stty -F "${dev}" -iutf8 |
|
fi |
|
} |
|
|
|
set_keymap() { |
|
local utf_switch |
|
|
|
if [ -z "${KEYMAP}" ]; then |
|
[ -f "${DEFAULT_KEYMAP}" ] && KEYMAP=${DEFAULT_KEYMAP} |
|
fi |
|
|
|
[ -n "${KEYMAP}" ] || return 1 |
|
|
|
[ "${UNICODE}" = 1 ] && utf_switch=-u |
|
|
|
# shellcheck disable=SC2086 |
|
loadkeys -q ${utf_switch} ${KEYMAP} ${EXT_KEYMAPS} |
|
} |
|
|
|
set_font() { |
|
setfont "${FONT-${DEFAULT_FONT}}" \ |
|
-C "${1}" \ |
|
${FONT_MAP:+-m "${FONT_MAP}"} \ |
|
${FONT_UNIMAP:+-u "${FONT_UNIMAP}"} |
|
} |
|
|
|
dev_close() { |
|
exec 6>&- |
|
exec 7>&- |
|
} |
|
|
|
dev_open() { |
|
local dev=$1 |
|
|
|
exec 6< "${dev}" \ |
|
&& exec 7>> "${dev}" |
|
} |
|
|
|
dev=/dev/${1#/dev/} |
|
|
|
[ -c "${dev}" ] || { |
|
echo "Usage: $0 device" >&2 |
|
exit 1 |
|
} |
|
|
|
dev_open "${dev}" |
|
|
|
for fd in 6 7; do |
|
if ! [ -t ${fd} ]; then |
|
echo "ERROR: File descriptor not opened: ${fd}" >&2 |
|
dev_close |
|
exit 1 |
|
fi |
|
done |
|
|
|
set_keyboard |
|
set_terminal "${dev}" |
|
set_font "${dev}" |
|
set_keymap |
|
|
|
dev_close
|
|
|