Re: Ceska klavesnice jako implicitni?


To CZ-debian list <czdebian-l zavinac debian bod cz>
From Hans Ginzel <hans zavinac kolej bod mff bod cuni bod cz>
Date Thu, 12 Sep 2002 18:27:17 +0200
Mail-followup-to CZ-debian list <czdebian-l zavinac debian bod cz>
User-agent Mutt/1.3.28i

> > > uživatel) jako implicitní českou klávesnici. Myslel jsem, že
> > > dpkg-reconfigure console-tools by to mělo zvládnout, ale nestalo
> >
> > dpkg-reconfigure console-common
>
> To jsem našel a udělal hned po startu (nevím, jestli to dokonce
> není součástí instalace systému), ale problém je, že se mi zdá,
> že dobří debianisté si asi nedokázali představit nikoho tak
> zvrhlého, že by chtěl národní klávesnici jako defaultní (tj. že
> po startu je zapnutá čeština a do anglické klávesnice se musí
> přepnout). Prostě řečeno, tohle mi nastaví češtinu jako
> sekundární klávesnici (abych užil terminologii Windows 3.1), ale
> primární je anglická.

    Je mi líto, ale vůbec Ti nerozumím. V debianu je jen jedna klávesová
mapa pod konzolí. Defaltní je zakompilovaná v kernelu. Je-li nastaveno
přeloaduje se pomocí loadkeys volaného z /etc/rcS.d/S05keymap.sh, který
čte /etc/console/boottime.kmap.gz. Některé klávesové mapy obsahují toto:
AltGr (pravý alt) je "další shift", pause je AltGr_lock,
klávesa 2 je "2", AltGr+2 je "ě", nebo naopak, ale to je věc konkrétního
mapfilu; jak ho jeho autor napsal.

    Když jsem si přečetl /var/lib/dpkg/info/console-common.postinst,
který je volán při instalaci a při dpkg-reconfigure console-common,
resp. /usr/sbin/install-keymap, který je z předchozícho volán, musím
konstatovat, že DOBŘÍ DEBIANISTÉ JSOU ZVRHLÍ (ve Tvém smyslu slova),
neboť nastavení klávesnice NEřeší tak, že se někdy v průběhu startu (až
po té, co je přimountován /usr) přečte jméno vytoužené klávesové mapy z
konfiguráku v /etc (nebo se použije symlink) a pak se volá loadkeys
/usr/share/keymaps/<architektura>/qwertz/cz-us-qwertz.kmap.gz, ALE
tak, že se mapa naloaduje hned při konfigurování, vydumpuje do souboru
/etc/console/boottime.kmap.gz, aby byla hned na začátku bootu k dispozici,
ještě před checkováním partitions (ls -l /etc/rcS.d/S*).

    Zbývá tedy, aby sis vybral tu pravou klávesovou mapu. Tož podívejme
se na ně. V /usr/share/keymaps/i386/qwerty/cz-lat2.kmap.gz jsou řádky

charset "iso-8859-2"
keymaps 0-15
keycode 3 = two at ecaron two nul nul nul nul Meta_two Meta_two Meta_two 
Meta_two

tj. bez dalšího je klávesa s keycodem 3 (jedničku má escape) dvojka,
se shiftem zavináč, s AltGr e s háčkem, s AltGr+Shift dvojka. Naopak
v /usr/share/keymaps/i386/qwertz/cz-us-qwertz.kmap.gz je
keycode 3  = ecaron two two at nul nul nul nul Meta_two Meta_two Meta_two 
Meta_two
Snad už netřeba detailněji komentovat.

   Chce-li někdo qwerty, předpokládá (správně) autor
qwerty/cz-lat2.kmap (Jan Kasprzak, Pavel Janík), že bude chtít spíše
anglickou a přepínat do české, autor qwertz/cz-us-qwertz.kmap (Jan
Kasprzak, Petr "Šnek" Staněk) předpokládá (opět správně), že bude chtít
spíše českou a přepínat do anglické.

   SUMMARY:

        dpkg-reconfigure console-common
-> Select keymap from arch list -> qwertz -> Czech


   Chceš-li qwerty klávesnici, která je "primárně" česká, podívej se na
/usr/share/keymaps/i386/include/qwerty-layout.inc.gz a adekvátně uprav
původní.

   S klávesovými mapamy se nechá dále kouzlit: :-)

Tímto v klávesové mapě

        string F105 = "\033[cl"
        control keycode 105 = F105  # Ctrl-Left

zařídíš, že Control+šipka doleva vyšle uvedenou escape sekvenci. No a již
jen stačí aplikacím domluvit, aby adekvátně zaregovaly:

knihovna readline (bash), /etc/inputrc
"\e[cl":        backward-word           # Ctrl-Left

Vi Improved, /etc/vim/vimrc
map  l       <C-Left>
map! l       <C-Left>

(ten znak před levou hranatou závorkou, který se ti možná špatně, nebo
vůbec ne-, zobrazil je Escape, ascii 27 zapsaný pomocí Ctrl+V Escape)

   Lidé pak nevěří svým očím, když tvoje přikazová řádka nebo editor umí
všechny WordStarovské/Microsoftí hmaty (Alt+Backspce, Ctrl+Shift+Left,
Ctrl/Shift+Delete/Insert, ...). Musím tu svoji mapu někam vystavit.

        Zdraví
--
                                        Hans Ginzel

http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222
http://www.manualy.sk/archiv/a534k701.htm
http://www.infoworld.com/articles/op/xml/02/08/26/020826opsource.xml

Partial thread listing: