[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: kernel keymap and kbd_mode



On Fri, Aug 08, 2003 at 12:27:52PM +0200, Damjan wrote:
> >  * TTY fixes.  When using the cooked TTY line discipline, the delete key
> >    should delete a full UTF-8 character, not just one byte.
> 
> Hmm this didn't work for me. 
> I applied your combined patch, recompiled the kernel but backspace
> behaviour is still wrong. 

Ah, I see. Probably something in your init scripts is resetting the TTY.

I think I have a much better way.  I wrote a Perl script (sttyutf8) that
allows you to set it yourself.

Usage:
sttyutf8
sttyutf8 on
sttyutf8 off

Chris

#!/usr/bin/perl

use POSIX qw(:termios_h);
sub IUTF8 {0x4000}
my $term = POSIX::Termios->new;
$term->getattr(fileno(STDIN));
my $iflag = $term->getiflag();

my $param = $ARGV[0];
my $changed = 0;
if (!defined($param)) {
	printf "UTF-8 is %s.\n", ($iflag & IUTF8) ? "on" : "off";
} elsif ($param eq "on") {
	if ($iflag & IUTF8) {
		print "UTF-8 is already on.\n";
	} else {
		print "UTF-8 was off, turning it on.\n";
		$iflag |= IUTF8;
		$changed = 1;
	}
} elsif ($param eq "off") {
	if ($iflag & IUTF8) {
		print "UTF-8 was on, turning it off.\n";
		$iflag &= ~IUTF8;
		$changed = 1;
	} else {
		print "UTF-8 is already off.\n";
	}
} else {
	print "Bad option\n";
	exit 1;
}

if ($changed) {
	$term->setiflag($iflag);
	$term->setattr(fileno(STDIN), TCSANOW);
}