Linux ip-172-26-7-228 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64
Your IP : 3.142.55.138
#! /bin/sh
set -e
# Based on setupcon, but stripped down for use in a udev rule.
# We have to do several basic things here, each of which has specific state
# requirements:
#
# 1) Set Unicode/non-Unicode mode on each virtual console.
#
# The terminal line emulation on the virtual console must not be in raw
# mode (as in cfmakeraw).
#
# 2) Set the font and ACM on each virtual console.
#
# The virtual console must not be in KD_GRAPHICS mode. If using vgacon,
# the *foreground* virtual console must not be in KD_GRAPHICS mode either
# as then we'll corrupt video memory.
#
# 3) Set the keyboard mode on each virtual console to K_XLATE or K_UNICODE
# as appropriate.
#
# The virtual console must not be in K_RAW or K_MEDIUMRAW mode.
#
# We don't have to set the console keymap here. This only needs to be done
# once after setting the keyboard mode, so it belongs in an Upstart job
# instead.
export PATH="/bin:/sbin:$PATH"
. /etc/default/console-setup
# CODESET
[ "$CODESET" != guess ] || CODESET=''
if [ -z "$CODESET" ]; then
case "$CHARMAP" in
UTF-8) CODESET=Uni2;;
ARMSCII-8) CODESET=Armenian ;;
CP1251) CODESET=CyrSlav ;;
CP1255) CODESET=Hebrew ;;
CP1256) CODESET=Arabic ;;
GEORGIAN-ACADEMY) CODESET=Georgian ;;
GEORGIAN-PS) CODESET=Georgian ;;
IBM1133) CODESET=Lao ;;
ISIRI-3342) CODESET=Arabic ;;
ISO-8859-1) CODESET=Lat15 ;;
ISO-8859-2) CODESET=Lat2 ;;
ISO-8859-3) CODESET=Lat38 ;;
ISO-8859-4) CODESET=Lat7 ;; # sometimes Lat15
ISO-8859-5) CODESET=CyrSlav ;;
ISO-8859-6) CODESET=Arabic ;;
ISO-8859-7) CODESET=Greek ;;
ISO-8859-8) CODESET=Hebrew ;;
ISO-8859-9) CODESET=Lat15 ;;
ISO-8859-10) CODESET=Lat15 ;;
ISO-8859-11) CODESET=Thai ;;
ISO-8859-13) CODESET=Lat7 ;;
ISO-8859-14) CODESET=Lat38 ;;
ISO-8859-15) CODESET=Lat15 ;;
ISO-8859-16) CODESET=Lat2 ;;
KOI8-R) CODESET=CyrKoi ;;
KOI8-U) CODESET=CyrKoi ;;
TIS-620) CODESET=Thai ;;
VISCII) CODESET=Vietnamese ;;
*) ;;
esac
fi
# FONTSIZE
if [ -z "$FONTSIZE" -o "$FONTSIZE" = guess ]; then
FONTSIZE=16
fi
case "$FONTSIZE" in
8x*)
FONTSIZE=${FONTSIZE#*x}
;;
*x8)
FONTSIZE=${FONTSIZE%x*}
;;
*x*)
a=${FONTSIZE%x*}
b=${FONTSIZE#*x}
if [ "$a" -lt "$b" ]; then
FONTSIZE=${b}x${a}
fi
;;
esac
setup_unicode () {
# Set up Unicode/non-Unicode mode.
# TODO: this will probably break something if terminal line emulation is
# in raw mode.
if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM$CHARMAP" ]; then
printf '\033%%G' >"$1"
else
printf '\033%%@' >"$1"
fi
}
setup_font () {
# Set the font and ACM. setfont will silently do nothing for a console
# in graphics mode.
SETFONT_ARGS=
if [ "$FONT" ]; then
FONT="/etc/console-setup/${FONT##*/}"
FONT="${FONT%.gz}"
else
FONT="/etc/console-setup/$CODESET-$FONTFACE$FONTSIZE.psf"
fi
if [ -f "$FONT" ] || [ -f "$FONT.gz" ]; then
SETFONT_ARGS="${SETFONT_ARGS:+$SETFONT_ARGS }$FONT"
fi
if [ "$ACM" ]; then
ACM="/etc/console-setup/${ACM##*/}"
ACM="${ACM%.gz}"
else
ACM="/etc/console-setup/$CHARMAP.acm"
fi
if [ -f "$ACM" ] || [ -f "$ACM.gz" ]; then
SETFONT_ARGS="${SETFONT_ARGS:+$SETFONT_ARGS }-m $ACM"
fi
if [ "$SETFONT_ARGS" ]; then
setfont -C "$1" $SETFONT_ARGS
fi
}
setup_keyboard_mode () {
# Set the keyboard mode.
# TODO: this will probably break something if the console is in K_RAW or
# K_MEDIUMRAW mode. There doesn't seem to be a non-racy way to say "set
# to K_UNICODE only if currently K_XLATE".
if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM" ]; then
kbd_mode -u <"$1"
else
kbd_mode -a <"$1"
fi
}
if [ "$1" = fbcon ]; then
# Technically we have to wait for /dev/tty[1-6] to appear; but these are
# created in vty_init, so I think it will always be early enough. If
# I'm wrong, then the -w test will fail and we end up with the wrong
# fonts on some virtual consoles; the user can run setupcon to fix it.
for console in $ACTIVE_CONSOLES; do
if [ -w "$console" ]; then
setup_font "$console"
fi
done
else
if [ -w "$1" ]; then
setup_unicode "$1"
setup_font "$1"
setup_keyboard_mode "$1"
fi
fi
exit 0
|