# Problem z unicodem i baselayout 2

## fau

Cześć (mam nadzieję, że wyszło przez ś i ć  :Smile:  )

Od kiedy przeszedłem na baselayout2 (tak mi się wydaję, bo poprzednio zerżnąłem ustawienia z gentoo w pracowni komputerowej na mojej uczelni i wszystko działało  :Smile:  ) mam problem z wprowadzaniem polskich znaczków w konsoli. Nie do końca ogarniam jak to funkcjonuje, ale w końcu udało mi się to naprawić dodając opcję -u do loadkeys. W tej chwili mam po prostu ustawione keymap na "-u pl2". Czy jest to bug bl2, czy raczej u mnie jest coś nie tak? Poza tym zauważyłem, że ekg, który najwyraźniej nie obsługuje unikodu wyświetla kwadraciki zamiast polskich znaków. Podobnie jest w jego dokumentacji, pomaga dopiero potraktowanie jej iconv. Czy da się z tym coś w miarę elegancko zrobić? I na koniec mam prośbę, jeśli zna ktoś stronkę, czy inne źródło z gruntownym wyjaśnieniem działania kodowania/mapowania klawiatury na linuxie to bardzo proszę o linka, chciałbym mieć z tym raz na zawsze spokój. Mógłbym pewnie dowiedzieć się tego wszystkiego czytając strony man, ale jak dla mnie to jest nieco za masochistyczna metoda.

Pozdrawiam

fau

----------

## soban_

Moze ten link, bedzie mogl troche pomoc https://forums.gentoo.org/viewtopic-p-6061546.html#6061546 ten skrypt, ktory zapodalem jest do bl2. Co do ustawien w "konsoli" w kde to odpowiednie kodowanie mozna ustawic w opcjach, jesli zas chodzi o tryb tekstowy - to odsylam do linka i podrecznikow podanych w nim. Co do EKG, to u mnie dziala bez problemow - tzn krzaczkow niet (rozwiazaniem troche innym jest ustawienie /set display_pl_chars 0 - czyli display_pl_chars = 0 (off) - jednak wtedy mozemy calkowice zapomniec o polskich znakach, EKG bedzie je konwertowac), jesli chcesz miec unicode to polecam EKG2.

----------

## fau

Dzieki za odpowiedz.

Przejzalem twoj skrypt i mam pytanie: dla czego nie ma w nim locale-gen po wgraniu twoich configow? I co ma oznaczac ta linijka: "locale grep 'pl_PL'"?

Znalazlem tez jedna literowke: w twojej paczce jest plik .bashrc.soban, a skrypt odwoluje sie do .bashrc.root.

Zrobilem wszystko az do przebudowywania slang i ncurses, bo a) nie mam problemu z wyswietlaniem polskich czcionek b) mam od poczatku ustawione wszystkie flagi jak trzeba. Jezeli mimo tego powinienem to zrobic, to prosze napisz mi dla czego. (swoja droga mozna by tam dodac euse -E unicode ncurses slang) Niestety nie pomoglo mi to w zaden sposob, nadal bez loadkeys -u nie moge wpisywac polskich znakow w trybie tekstowym (nie mialem zadnych problemow z x-ami). Problem z stronami man mam rozwiazany nieco inaczej: LC_ALL="pl_PL.utf8" LANG="pl_PL.UTF-8", w man.conf NROFF=-mandoc -mlatin2 i dziala bardzo dobrze bez aliasowania man zarowno jaki user jak i root.

PS Dla czego "konsoli" w cudzyslowie?

----------

## lsdudi

```
LC_ALL="pl_PL.utf8"
```

  a 'utf' nie ma byc przypadkiem duzymi literami ??

co do mojej konfiguracji SOA#1

```

grep -v "#" /etc/conf.d/keymaps                                                                                                              

keymap="pl2"                                                                                                                                                                        

                                                                                                                                                                                    

windowkeys="YES"                                                                                                                                                                    

                                                                                                                                                                                    

extended_keymaps=""

dumpkeys_charset=""

fix_euro="NO"
```

podejrzewam ze masz fonty niewyswietlajace polskich znakow 

```
grep -v "#" /etc/conf.d/consolefont 

consolefont="ter-v16b"
```

z media-fonts/terminus-font

----------

## fau

Niesłuszne podejrzenia, bo dwa razy pisałem, że nie mam problemów z wyświetlaniem.

LC_ALL=pl_PL.utf8, bo jeżeli wpiszesz locale -a to właśnie taka nazwa jest tam podana a nie pl_PL.UTF-8. Dzięki temu jak myślę man działa poprawnie bez dodatkowych skryptów, chociaż przyznam że nie rozumiem dla czego tak jest. Jest to właśnie jedno z rozwiązań, które mam od mojego admina na uczelni  :Smile:  . Dzięki twojemu cfg wpadłem, że może niepotrzebnie mam dumpkey_charset ustawione na iso i przez to muszę dokonywać konwersji na unicode dodając -u do keymaps. Zaraz przetestuję.

----------

## lsdudi

To patrz w takim razie na to 

```
lukaszd@laptop_lukaszd ~ $ echo $LC_ALL

pl_PL.UTF-8

lukaszd@laptop_lukaszd ~ $ locale -a

C

en_US.utf8

pl_PL.utf8

POSIX
```

----------

## fau

http://www.elvanor.net/wiki/Using_UTF-8_%28Unicode%29_in_Gentoo

 *Quote:*   

> locale -a can be very useful as it gives the exact names of the locales available on the system. Note that strangely this can differ from what is written in locale.gen. If you change a particular locale setting (in my case, LC_TIME for instance), the string used must match *exactly* the one outputed by locale -a. Else applications will emit warnings that the locale cannot be found (and indeed, they will fallback to the default "C" locale). 

 

Widziałem to też w paru innych źródłach (aczkolwiek po ustawieniu tak jak u ciebie nie mam locali C, tylko niektóre programy mają z tym kłopot. Poza tym taka uwaga, że jeżeli LC_* nie są ustawione to przyjmują defaultowo wartość LANG. U mnie tak działa, i zostawiam makro LC_ALL w spokoju.

Przysiadłem ostatnio trochę nad tematem sterownika klawiatury i konsoli, dłuższy tekst jest już w drodze  :Smile:  . A w tym konkretnym przypadku są dwa sposoby uzyskania odpowiednich znaków przy wpisywaniu z klawiatury w trybie unicode. Problemy spowodowane są tym, że wszystkie polskie keymapy są napisane w iso-8859-2. Dla tego można:

1. Dodać -u do loadkeys co spowoduje niejawną konwersję do keymapy UTF-8. W tej chwili w openrc można to zrobić dodając -u do keymap w /etc/conf.d/keymap, u mnie wygląda to tak jak napisałem wcześniej - keymap="-u pl2".

2. Wczytać czcionkę z unikodową mapą konsoli 8859-2 (setfont -m 8859-2 <font>), przez ustawienie consoletranslation=8859-2 w /etc/conf.d/consolefont. Zostanie ona nałożona na 8-bitową wartość, którą wychodzi z polskiej keymapy i dzięki temu dostaniemy poprawną wartość w ucs2, która z kolei zostanie przekonwertowana do UTF-2 i taką zobaczymy w showkeys -a. Ponieważ sterownik konsoli działa w trybie unikodowym nie wpłynie to na wyświetlanie wyjścia programów.

PS Jeśli chodzi o dumpkeyscharset to w obecnej wersji openrc nie jest w ogóle używane.

----------

## tgR10

wiem, ze nie do konca to co szukasz, ale moze w czyms pomoze :)

https://tgr10.wordpress.com/2010/01/07/iso-8859-2-utf-8/

tez nie zbyt swieze, ale tak przejzalem na szybko, i chyba nic szczegolnego sie nie zmienilo. wiec powinno to dzialac.

----------

## soban_

 *fau wrote:*   

> Znalazlem tez jedna literowke: w twojej paczce jest plik .bashrc.soban, a skrypt odwoluje sie do .bashrc.root.

 Dzisiaj to poprawie, zastanawiam sie tez nad innym rozwiazaniem z "man", bo w sumie nie powinienem ruszac tego pliku.

 *fau wrote:*   

> (swoja droga mozna by tam dodac euse -E unicode ncurses slang)

  Mysle ze to dodam ;-) 

 *fau wrote:*   

> Niestety nie pomoglo mi to w zaden sposob, nadal bez loadkeys -u nie moge wpisywac polskich znakow w trybie tekstowym

  W /etc/conf.d/keymaps - masz poprawnie ustawione? Pamietaj ze pl/pl2 rozny sie dzialaniem 2 alt'ow. Mysle ze tutaj tkwi blad, probowales 

```
/etc/init.d/keymaps restart
```

 po odpowiednim ustawieniu klawiszy? pokaz tez czy gdy zrobisz, o ile bedziesz juz mogl:

```
echo ąęść
```

 zwroci Ci to samo.

 *fau wrote:*   

> (nie mialem zadnych problemow z x-ami). Problem z stronami man mam rozwiazany nieco inaczej: LC_ALL="pl_PL.utf8" LANG="pl_PL.UTF-8", w man.conf NROFF=-mandoc -mlatin2 i dziala bardzo dobrze bez aliasowania man zarowno jaki user jak i root.

 Wlasnie chyba to rozwiazanie zastosuje, chociaz o ile dobrze pamietam - wczesniej mialem jakis z tym problem. Swoja droga na paru sprzetach instalowalem juz gentoo i skrypt zawsze ten dzialal przy bl2. *fau wrote:*   

> PS Dla czego "konsoli" w cudzyslowie?

  Poniewaz konsola, jest w srodowisku graficznym KDE.

//Sorki ze tak dlugo nie odpisywalem, ale mialem troche innych spraw na glowie.

----------

## fau

Główny problem tego wątku jest już rozwiązany i to dość kompleksowo - patrz mój poprzedni post  :Smile: 

----------

