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.
Obsah článku
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…