← Back to team overview

touch-packages team mailing list archive

[Bug 133072] Re: tty console doen't show characters with accent

 

My 5 cents.
I guess the problem is in the console-setup package. i was digging in initramfs scripts. hope this may help.
Changes below working well for me (15.10, i386).
Look at the "#check" marks for comments (excuse me for my badly broken English ;-):

1. /usr/share/initramfs-tools/hooks/console_setup
====================================================================cut here
#! /bin/sh -e

PREREQ="kbd|console_tools"

prereqs () {
	echo "$PREREQ"
}

case $1 in
prereqs)
	prereqs
	exit 0
	;;
esac

. /usr/share/initramfs-tools/hook-functions
[ -r /etc/default/keyboard ] || exit 0
[ -r /etc/default/console-setup ] || exit 0
. /etc/default/console-setup # also sources /etc/default/keyboard

# Copy console-setup configuration
mkdir -p "$DESTDIR/etc/default"
cp -p /etc/default/keyboard "$DESTDIR/etc/default"
cp -p /etc/default/console-setup "$DESTDIR/etc/default"

#check: because of naming convention: "8xNN" -> "NN"
FONTSIZE=${FONTSIZE#8x}
# Assume setupcon --save has been run
if [ -f "$FONT" ]; then
	FONT="/etc/console-setup/${FONT##*/}"
#check: .gz is a valid suffix
#check#	FONT="${FONT%.gz}"
else
	FONT="/etc/console-setup/$CODESET-$FONTFACE$FONTSIZE.psf"
#check: font is always gzipped, so it's better to add ".gz" suffix
	[ -f "${FONT}.gz" ] && FONT="${FONT}.gz"
fi
if [ -f "$FONT" ]; then
	mkdir -p "$DESTDIR${FONT%/*}"
	cp -p "$FONT" "$DESTDIR$FONT"
fi
if [ -f "$ACM" ]; then
	ACM="/etc/console-setup/${ACM##*/}"
	ACM="${ACM%.gz}"
else
	ACM="/etc/console-setup/$CHARMAP.acm"
fi
if [ -f "$ACM" ]; then
	mkdir -p "$DESTDIR${ACM%/*}"
	cp -p "$ACM" "$DESTDIR$ACM"
fi
if [ -f /etc/console-setup/cached.kmap.gz ]; then
	mkdir -p "$DESTDIR/etc/console-setup"
	cp -p /etc/console-setup/cached.kmap.gz \
		"$DESTDIR/etc/console-setup/cached.kmap.gz"
fi

exit 0
====================================================================cut here

2. /usr/share/initramfs-tools/scripts/init-top/console_setup
====================================================================cut here
#! /bin/sh
# A crude much-simplified clone of setupcon for use in the initramfs.

#check: no FRAMEBUFFER needed
#check# OPTION=FRAMEBUFFER
#check# PREREQ="framebuffer"

PREREQ=""

prereqs () {
	echo "$PREREQ"
}

case $1 in
prereqs)
	prereqs
	exit 0
	;;
esac

[ -r /etc/default/console-setup ] || exit 0
. /etc/default/console-setup

[ "$ACTIVE_CONSOLES" ] || exit 0

if [ "$VERBOSE_OUTPUT" = yes ]; then
	verbose=
else
	verbose='>/dev/null 2>&1'
fi

for i in 1 2 3 4 5 6; do
	[ -c /dev/tty$i ] || mknod /dev/tty$i c 4 $i
done

#check: because of font naming convention: "...8xNN" -> "...NN"
FONTSIZE=${FONTSIZE#8x}
#check: Define font name only once, not every cycle, also it gives proper font name for /dev/tty1
if [ "$FONT" ]; then
	FONT="/etc/console-setup/${FONT##*/}"
#check: .gz is a valid suffix
#check#	FONT="${FONT%.gz}"
else
	FONT="/etc/console-setup/$CODESET-$FONTFACE$FONTSIZE.psf"
#check: try to find gzipped font
	[ -f "${FONT}.gz" ] && FONT="${FONT}.gz"
fi

for console in $ACTIVE_CONSOLES; do
	[ -w $console ] || continue

	if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM$CHARMAP" ]; then
		printf '\033%%G' >$console
	else
		printf '\033%%@' >$console
	fi

	if [ -f "$FONT" ]; then
		if type consolechars >/dev/null 2>&1; then
			eval consolechars -v --tty=$console -f "$FONT" $verbose
		elif type setfont >/dev/null 2>&1; then
			eval setfont -v -C $console "$FONT" $verbose
		fi
	fi

	if [ "$ACM" ]; then
		ACM="/etc/console-setup/${ACM##*/}"
		ACM="${ACM%.gz}"
	else
		ACM="/etc/console-setup/$CHARMAP.acm"
	fi
	if [ -f "$ACM" ]; then
		if type consolechars >/dev/null 2>&1; then
			eval consolechars -v --tty=$console --acm "$ACM" \
				$verbose
		elif type setfont >/dev/null 2>&1; then
			eval setfont -v -C "$console" -m "$ACM" $verbose
		fi
	fi

	if type kbd_mode >/dev/null 2>&1; then
		if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM" ]; then
			kbd_mode -u <$console
		else
			kbd_mode -a <$console
		fi
	fi
done

if [ -f /etc/console-setup/cached.kmap.gz ] && type loadkeys >/dev/null; then
	eval loadkeys /etc/console-setup/cached.kmap.gz $verbose
fi

exit 0
====================================================================cut here

3. /usr/share/initramfs-tools/scripts/init-top/keymap
====================================================================cut here
#!/bin/sh

#check: 
#check# OPTION=FRAMEBUFFER
PREREQ=""
prereqs()
{
	echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
	prereqs
	exit 0
	;;
esac

OPTS="-q"

# Should terminal be in UTF8 mode?
if [ -x /bin/kbd_mode ]; then
	/bin/kbd_mode -u
	OPTS="${OPTS} -u"
fi

# Load custom keymap
if [ -x /bin/loadkeys -a -r /etc/boottime.kmap.gz ]; then
	loadkeys ${OPTS} /etc/boottime.kmap.gz
fi
====================================================================cut here

4. /usr/share/initramfs-tools/scripts/panic/console_setup
same as [2]

5. /home/vfrolov/rebuild-initrd/initrd/scripts/panic/keymap
same as [3]

6. Configure and save

sudo dpkg-reconfigure console-setup #choose font and keyboard map
sudo setupcon --save-only #save settings to /etc/default/console-setup
sudo update-initramfs -u #that's it

Thank you for the very best OS i'm using and really enjoying with!!!

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to console-setup in Ubuntu.
https://bugs.launchpad.net/bugs/133072

Title:
  tty console doen't show characters with accent

Status in console-setup package in Ubuntu:
  Confirmed
Status in kbd package in Ubuntu:
  Fix Released

Bug description:
  In Kubuntu 7.10 tribe 4, tty console (out of X) cannot display characters with accent, also can't display 'ñ' and '€'.
  Locale value:

  LANG=es_ES.UTF-8
  LANGUAGE=es_ES:es:en_GB:en
  LC_CTYPE="es_ES.UTF-8"
  LC_NUMERIC="es_ES.UTF-8"
  LC_TIME="es_ES.UTF-8"
  LC_COLLATE="es_ES.UTF-8"
  LC_MONETARY="es_ES.UTF-8"
  LC_MESSAGES="es_ES.UTF-8"
  LC_PAPER="es_ES.UTF-8"
  LC_NAME="es_ES.UTF-8"
  LC_ADDRESS="es_ES.UTF-8"
  LC_TELEPHONE="es_ES.UTF-8"
  LC_MEASUREMENT="es_ES.UTF-8"
  LC_IDENTIFICATION="es_ES.UTF-8"
  LC_ALL=

  Thanks for your atention.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/console-setup/+bug/133072/+subscriptions