Portál AbcLinuxu, 4. května 2025 19:24

Po aktualizaci Xorg serveru přestala fungovat klávesnice ( diakritika )

Xorg server od verze 1.5 přináší dynamickou podporu pro vstupní zařízení (klávesnice, myš atp.), o které se stará - již výhradně - HAL. V dokumentaci k HAL se lze dočíst spoustu zajímavých věcí jak HAL funguje a jak jej konfigurovat, bohužel funkční volby pro nastavení klávesnice pro Xorg server > 1.5 tam nenajdete. Teprve až když jsem věděl co hledat, mi google našel ukázkový konfigurační soubor, ve kterém je to pěkně polopaticky vyloženo a především zdůrazněno, že volby:

input.xkb.rules
input.xkb.model
input.xkb.layout
input.xkb.variant
input.xkb.options

..které jsou v dokumentaci k HAL uvedeny, se NEMAJÍ používat. Místo nich je třeba použít jmenný prostor x11_options a volby příslušné pro použitý ovladač.

Výchozím ovladačem pro vstupní zařízení je evdev. Prostřednictvím konfiguračního souboru pro HAL lze místo něj nastavit jiný (ale u klávesnice to moc nedoporučuji). Konfigurační soubor pro HAL, je XML dokument, který je třeba umístit do adresáře /etc/hal/fdi/policy (Debian unstable)

Strukturu elementů ukázkového konfiguračního souboru můžete vidět níže . Element match je kontejner, který může obsahovat mimo vlastní nastavení elementem merge další upřesňující kontejnery match.

deviceinfo
 |
 \-device
    |
	|-match key="info.capabilities" contains="input.mouse"
	|  |
	|  |- merge key="input.x11_driver" type="string"
	|  |
	|  \- match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux"
	|      |
	|      \- merge key="input.x11_driver" type="string"
	|
	\- match key="info.capabilities" contains="input.keys"
	    |
		|- merge key="input.x11_driver" type="string"
		|
		|- merge key="input.x11_options.XkbRules" type="string"
		|
		|- match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux"
		|   |
		|   |- merge key="input.x11_driver" type="string"
		|   |
		|   \- merge key="input.x11_options.XkbModel" type="string"
		|
		|- merge key="input.x11_options.XkbLayout" type="string"
		|
		\- merge key="input.x11_options.XkbVariant"

V uvedeném příkladu nastaveny dva kontejnery pro vstupní zařízení. Jeden pro zařízení identifikovaná řetězcem 'input.mouse' a druhý pro 'input.keys'. Každý z nich má dále subkontejner, který ovladač přenastaví v případě že obsah klíče "/org/freedesktop/Hal/devices/computer:system.kernel.name" (klíč system.kernel.name v objektu s udi /org/freedesktop/Hal/devices/computer) odpovídá řetězci 'Linux'. Mapa kláves zůstává stejná bez ohledu na použitý ovladač, proto jsou volby pro její nastavení součástí nadřazeného kontejneru.

V případě Xorg serveru 1.5 mi tedy stačilo vytvořit soubor s následujícím obsahem

<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keys">
      <merge key="input.x11_options.XkbLayout" type="string">cz,us</merge>
      <merge key="input.x11_options.XkbVariant" type="string">qwerty,</merge>
    </match>
  </device>
</deviceinfo>

Poté co jsem vyřešil problém s klávesnicí v X prostředí, jsem se ještě chvíli trápil s klávesnicí v prostředí virtuálních strojů VMware Workstation, ale o tom v jiném FAQ.

O trápení a zkušenostech jiných uživatelů s HAL si na tomto serveru můžete přečíst v diskuzích k následujícím blogpostům.

Dokument vytvořil: Aleš Kapica, 25.11.2008 15:27 | Poslední úprava: Aleš Kapica, 27.11.2008 16:33 | Historie změn | Zobrazeno: 1751×

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.