Written by m4r3k and tagged by linux.
Možná jste někdy byli postaveni před problém jak rozchodit korektně čtečku čárových kódů pod Linuxem a přitom narazili na problém, že čtečka nebyla schopná korektně zapisovat čísla při nastavené české klávesové mapě. Pokud se vaše čtečka chová jako další USB klávesnice, tak si můžete pomoci ovladačem evdev a nadefinovat si dvě klávesnice, každou s rozdílným rozložením. Já tento problém vyřešil následující úpravou souboru xorg.conf.
Section "InputDevice" Driver "evdev" Identifier "Keyboard[0]" Option "Device" "/dev/input/event1" Option "Protocol" "Standard" Option "XkbLayout" "cz" Option "XkbModel" "evdev" Option "XkbOptions" "grp:shift_toggle" Option "XkbRules" "xfree86" EndSection Section "InputDevice" Driver "evdev" Identifier "Keyboard[1]" Option "Protocol" "Standard" Option "Device" "/dev/input/event5" Option "XkbLayout" "us" Option "XkbModel" "evdev" Option "XkbOptions" "grp:shift_toggle" Option "XkbRules" "xfree86" EndSection . . . Section "ServerLayout" Identifier "Layout[all]" InputDevice "Keyboard[1]" InputDevice "Keyboard[0]" InputDevice "Mouse[1]" "CorePointer" Option "Clone" "off" Option "Xinerama" "off" Screen "Screen[0]" EndSection
Kde Keyboard[1] je zmíněná USB čtečka a Keyboard[0] je obyčejná PS/2 klávesnice (ověřeno i s USB klávesnicí). Možná se ptáte, proč u InputDevice "Keyboard[1]“ není nic jako "AlwaysCore" a u InputDevice "Keyboard[0]“ není "CoreKeyboard"… Důvod je prostý, když jsem tyto příznaky nastavil, tak mi to nefungovalo. :-) Takhle mi to funguje, avšak nastává několik problémů. U “hloupých” prostředí jako je KDE, kdm, gdm, fluxbox,.. mi všechno funguje avšak u prostředí GNOME mi toto řešení nefunguje. Podle mého názoru je to způsobeno tím, že GNOME si řeší obsluhu rozložení klávesnice po svém. A protože já potřebuji toto řešení nasadit právě u systémů, kde je jako správce prostředí použito GNOME, tak bych se chtěl zeptat zdejších GNOMařů jak donutit GNOME, aby na klávesnici nijak nesahalo a všechno nechalo na Xorg jako je tomu v případě KDE, fluxboxu,… Pevně doufám, že to bude nějaká triviální úprava ať již přes grafické prostředí, nebo pomocí gconfu.
A proč je tenhle dotaz v blogu? Protože tento dotaz obsahuje také návod jak rozchodit více klávesnic, každou s jinou klávesovou mapou a tak nechci aby to jen tak zapadlo v poradně. :-)
Alternativní definování klávesnice
Klávesnici můžete definovat také tímto způsobem. Co dosadit za Phys se dozvíte například v obsahu souboru /proc/bus/input/devices.
Section "InputDevice" Driver "evdev" Identifier "Keyboard[0]" Option "Protocol" "Standard" Option "Phys" "usb-0000:00:1d.1-2/input0" Option "XkbLayout" "cz" Option "XkbModel" "evdev" Option "XkbOptions" "grp:alt_shift_toggle" Option "XkbRules" "xfree86" Option "XkbVariant" "basic" EndSection Section "InputDevice" Driver "evdev" Identifier "Keyboard[1]" Option "Protocol" "Standard" Option "Phys" "usb-0000:00:1d.1-1/input0" Option "XkbLayout" "us" Option "XkbModel" "evdev" Option "XkbOptions" "grp:alt_shift_toggle" Option "XkbRules" "xfree86" Option "XkbVariant" "basic" EndSection
Řešení problému s GNOME
Pokud používáte podobné řešení jako já a v GNOME vám nefunguje, tak se dá tento problém opravit otevřením klíče (pomocí gconf-editoru) /desktop/gnome/peripherals/keyboard/kdb a promazat všechny položky.[1] Avšak i poté to v Gnome občas funguje a občas ne. Proto vám raději doporučuji pořídit si pořádnou čtečku jak je v diskusi doporučováno.