Petr Pajas <[EMAIL PROTECTED]> writes: >Hi Nick, All, > >as we discussed here before, one needs to set $top->useinputmethods(1) >to make Tk804 accept accented characters from various national keymaps >in X. However, this seems to break still with UTF8 locale settings >(which are default on RH8 and RH9 for most languages).
RedHat are generaly considered to be premature in making the switch. > >In my case, I cannot input czech characters if I > >unset LC_ALL >export LANG="cs_CZ.utf8" >export LC_CTYPE="cs_CZ.utf8" > >Setting LC_CTYPE="cs_CZ" works though (but may break other >applications, like Qt, etc). My test script looks as below. With >cs_CZ.utf8, $w->XEvent->A is empty, while all other values are >correct. With cs_CZ, $w->XEvent->A returns the correct utf8 encoded >character and that character appears in the Entry. > >Does anybody have an idea what could cause this problem? Anybody else >using national keyboard maps and UTF8 locale? There is _a_ UTF-8 input map in my SuSE's X11 - I think this is an XFree86 type question. But I am copying this to perl-unicode list as there folk there may have some insight... > >#!/usr/bin/perl >package main; > >use Tk 804; >use Tk::Entry; > >use POSIX; >setlocale('LC_CTYPE',"cs_CZ.utf8"); >use locale; > >$top = MainWindow->new; >$top->useinputmethods(1); # Try this? >binmode(STDOUT,':utf8'); >$top->bind("<KeyPress>", sub { my $w=shift; > print $w->XEvent->A," ", > $w->XEvent->N, " ", > $w->XEvent->K, " ", > $w->XEvent->k, > "\n" }); >$e=$top->Entry->pack; >$e->focus(); >MainLoop; >__END__ > >Same applies to Russian, etc. I tried setting several national >keyboards with setxkbmap and kxkb (KDE), with the same result. (BTW, >"setxkbmap ru" is dangerous, 'cause you cannot type "us" then:-) to >get back to normal. "setxkbmap cz" is safe though, since on czech >keyboard accented letters occupy just the top row of the keyboard with >numbers being remapped to shift+number and the rest of the keyboard is >(almost) like us, so you may always switch back by typing "setxkbmap >us"). > >-- Petr