Kategória: Debian Linux

Zmenené: 28. august 2010

Klávesnica a myš po novom

Nie je to tak dávno, čo som si tu umiestnil poznámky ohľadom nastavenia lokalizácie) a jeden čitateľ v komentároch spomenul hotplug. Vtedy som poriadne nevedel čo to je, ale som vďačný za nasmerovanie. S tým čo som pri pátraní a skúšaní zistil sa tu podelím.

Ako prvé som ohľadom HotPlug preštudoval príručku na stránkach DebianWiki. Podľa popisu to malo byť jednoduché a vlastne niekoľko dní po spomenutom komentári som začal s pokusmi. Ktoré však neboli veľmi úspešné. Najprv preto, že to Debian testing nemal ešte implementované ja viem, verzie balíkov som si mal pozrieť ako prvé… Potom tento malý zázrak už prešiel do testingu, ale fungovalo to len čiastočne. Po chvíľke odmlky som sa dnes rozhodol znova to vyskúšať a moje srdce zaplesalo funguje!!!

HotPlug

Asi ste tento pojem už počuli. Spomína sa zvyčajne v spojitosti, že niečo pripojíte a ono to funguje (Horúce Pripojenie) a to čo tu popisujem je úplne presne InputHotPlug, teda pripojenie vstupu(ov). V podstate ide o to, že v nedávnej minulosti bolo treba vstupné zariadenia pre X Window systém (zvyčajne myš a klávesnica) natvrdo nastaviť do konfigurácie Xorg, teda do súboru /etc/X11/xorg.conf. Na stolnom počítači s tým zväčša nebol problém, veď málokto lezie pod stôl a len tak pre radosť prehadzuje klávesnice. Avšak je doba prenosných počítačov, kde je pripojená klávesnica či myš raz taká, inokedy onaká. A to už problém byť môže.

Ďalší problém bol, že konfigurácia klávesnice, najmä národného nastavenia, bola na dvoch miestach jedna pre Xorg a jedna pre konzolu (konzola to je taká čierna obrazovka, kde nie je krížik pre zatvorenie okna) a sami iste dobre viete, že keď je konfigurácia na viacerých miestach, je rovnaká skôr náhodou ako pravidelne.

Ako riešenie týchto dvoch problémov je ponúknutý práve systém InputHotPlug, ktorý spája konfiguráciu Xorg a konzoly do jedného miesta a zároveň sa stará o automatické rozpoznanie vstupných zariadení pre okenný systém.

Inštalácia

Na plnú funkčnosť sú potrebné balíky console-setup, podpora evdev v jadre a ovládač evdev pre Xorg v balíku xserver-xorg-input-evdev. Pravdepodobne ich máte všetky v systéme, ak nie, tak ich stačí prosto nainštalovať. Inštalačný proces balíka console-setup dokonca automaticky rozpozná aktuálne nastavenie, a toto použije ako svoje východzie, takže všetko by malo fungovať na prvý šup.

Čo však automaticky urobené nie je, je úprava konfiguračného súboru X servera, z ktorého možno pokojne vyhodiť všetky zmienky o vstupných zariadeniach. Ja som tam mal tieto riadky:

Section "ServerLayout"
    Identifier "Layout0"
    Screen 0 "Screen0" 0 0
    # InputDevice "Keyboard0" "CoreKeyboard"
    # InputDevice "Mouse0" "CorePointer"
EndSection

#Section "InputDevice"
#    Identifier "Mouse0"
#    Driver "mouse"
#    Option "Protocol" "auto"
#    Option "Device" "/dev/psaux"
#    Option "Emulate3Buttons" "no"
#EndSection

#Section "InputDevice"
#    Identifier     "Keyboard0"
#    Driver "kbd"
#    Option "XkbRules" "xorg"
#    Option "XkbModel" "pc105"
#    Option "XkbLayout" "sk,us"
#    Option "XkbOptions" "compose:menu"
#EndSection

Mám v tom súbore trochu viac, ale tu som vybral len relevantné časti. Všetky nepotrebné veci sú vo výpise zakomentované pomocou mriežky na začiatku riadku. Ostáva reštartovať X server, čo už v tejto dobe nejde pomocou skratky Ctrl + Alt + Backspace (ak to nemáte výslovne povolené), ale treba sa odhlásiť a potom reštartovať server buď z menu prihlasovacej obrazovky alebo z konzoly, napr:

invoke-rc.d gdm restart

Po naštartovaní treba skontrolovať či všetko funguje ako má, mne fungovalo všetko okrem kláves Y/Z, ktoré boli prehodené na štýl QWERTY, ale tom v ďalšej časti.

Nastavenie

Celé nastavenie tohoto malého zázraku je vlastne v dvoch súboroch. Prvý je /etc/default/console-setup a je dlhý najmä kvôli rozsiahlym komentárom, ktoré sú tam uvedené ku každej položke. V tomto súbore asi nebude treba nič meniť (ja som menil len hodnoty FONTFACE a FONTSIZE, ale to bolo kvôli Splashy). Keď však prezriete tento súbor poriadne, zistíte, že nastavuje len šesť premenných, takže keď vynechám väčšinu komentárov, vyzerá takto:

# Change to "yes" and setupcon will explain what is being doing
VERBOSE_OUTPUT="no"

# Setup these consoles.  Most people do not need to change this.
ACTIVE_CONSOLES="/dev/tty[1-6]"
# Put here your encoding.
CHARMAP="UTF-8"

# The codeset determines which symbols are supported by the font.
CODESET="Lat2"

# Set FONTFACE and FONTSIZE to empty strings if you want setupcon to
# set up the keyboard but to leave the console font unchanged.
FONTFACE=""
FONTSIZE=""

if [ -f /etc/default/keyboard ]; then
    . /etc/default/keyboard
fi

Po tejto časti nasleduje ešte jedna dôležitá čast, a to odkaz na súbor /etc/default/keyboard, v ktorom je nastavenie klávesnice a v mojom prípade vyzerá takto:

XKBMODEL="pc105"
XKBLAYOUT="sk"
XKBVARIANT=""
XKBOPTIONS="compose:menu"

Konfiguračné premenné majú rovnaké meno ako tie, ktoré sa používajú v Xorg, takže všetky návody platia, len hodnoty treba napísať tu a už nie do xorg.conf. V mojom konfiguračnom súbore klávesnice vidíte, že mám nastavenú 105 klávesovú klávesnicu so slovenským rozložením (sk). Okrem toho mám nastavený variant QWERTZ (teda vedľa T je Z a nie Y) no a nakoniec nastavenie Compose na kláves Menu.

Hoci sa vo vyššie spomínanej príručke spomína HAL (aj v /etc/default/keyboard), o načítanie pravidiel sa stará UDEV, konkrétne súbor /lib/udev/rules.d/64-xorg-xkb.rules. Aby sa teda zmeny v súbore /etc/default/keyboard premietli do nastavenia X servera, nestačí ho reštartovať, ale je potrebné znova vyvolať udalosti udev pomocou:

udevadm trigger

Prípadne je možno potrebné aj znova načítať pravidlá udev:

udevadm control --reload-rules

Riešenie problémov

No, ťažko mi písať ako riešiť problémy, keď na tie pôvodné som už zabudol a teraz to funguje bezchybne. Každopádne, ak niečo nefunguje ako má, skontrolujte, či ste z konfigurácie Xorg odstránili všetky zmienky o vstupných zariadenia. Potom prezrite záznam X servera ( /var/log/Xorg.?.log), či obsahuje takéto riadky:

...

(II) LoadModule: "evdev"
(II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
(II) Module evdev: vendor="X.Org Foundation"
    compiled for 1.7.3.902, module version = 2.3.2
    Module class: X.Org XInput Driver
    ABI class: X.Org XInput driver, version 7.0
...
(II) config/udev: Adding input device "AT Translated Set 2 keyboard" (/dev/input/event1)
...
(**) Option "xkb_rules" "evdev"
(**) Option "xkb_model" "pc105"
(**) Option "xkb_layout" "sk"
(**) Option "xkb_variant" "qwertz"
(**) Option "xkb_options" "compose:menu"
...
(II) config/udev: Adding input device "ImPS/2 Generic Wheel Mouse" (/dev/input/event5)
...

Najprv je uvedené, ako to vyzerá pri načítaní modulu evdev, bez ktorého to fungovať proste nebude. Potom sú ukážky výpisu rozpoznania a nastavenia mojej klávesnice a myši. Ak sa tieto riadky v zázname Xorg neobjavujú, treba ešte skontrolovať, ako to vyzerá v udev, ale s tým Vám neporadím…