Achtung: Kein Anspruch auf Vollständigkeit und Richtigkeit. In der beschriebenen Variante funktioniert es bei mir.
Einleitung:
Es gibt Meinungen in der Linux-Entwickler-Welt, dass die Spezifikation der Eingabegeräte in der xorg.conf nichts zu suchen hat. Aus diesem Grund soll die Verwaltung der Eingabegeräte über den Hardware-Abstraction-Layer (HAL) realisiert werden. Xorg bekommt dann beim Start die Daten der Eingabegeräte von HAL zur Verfügung gestellt. In Verbindung mit dem evdev-Treiber bringt das Vorteile bei der automatischen Erkennung und Konfiguration von Eingabegeräten, die im laufenden Betrieb angestöpselt werden.
Ist-Zustand
Installiert man hal-5.1x, erscheint bei der Installation eine Meldung, dass die Konfiguration der Eingabegeräte von der xorg.conf in die /etc/hal/fdi/policy/10-x11-input.fdi übernommen wird. In meinem Fall war diese Datei allerdings leer. Als Folge des Ganzen kann es passieren, das beim nächsten Neustart von hal die Tastatur nur noch mit US-Layout funktioniert und eventuell einige Sondertasten (PC105, Cursortasten, Bild auf/ab) gar nicht mehr funktionieren.
Möglichkeiten zu Abhilfe dieses Problems
- Downgrade von hal auf Version 0.5.9. Damit läßt sich dann hal aber ab Kernel 2.6.26 nicht mehr compilieren.
- xorg-server ohne HAL-Unterstützung compilieren (Sofern man das globale Use-Flag hal gesetzt hat: USE="-hal" emerge -1 xorg-server)
- Anpassung der HAL-Policy
benötigte Pakete:
Es wird davon ausgegangen, dass das USE-Flag "hal" global gesetzt wurde.
- xorg-server >= Version 1.4
- hal >= Version 0.5.10
- xf86-input-evdev >= Version 2
Mit den Policies können Teile der automatisch erkannten Gerätekonfiguration umgeschrieben werden. Die Policy-Dateien befinden sich in:
Code: Select all
/etc/hal/fdi/policy/Mit dem Befehl
Code: Select all
hal-deviceCode: Select all
hal-find-by-capability --capability input.keyboardCode: Select all
/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_inputCode: Select all
hal-device /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_inputIn meinem Fall sieht das dann so aus:
Code: Select all
udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input'
input.originating_device = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port' (string)
input.xkb.rules = 'keyboard' (string)
info.subsystem = 'input' (string)
input.xkb.model = 'pc105' (string)
linux.sysfs_path = '/sys/class/input/input2/event2' (string)
info.category = 'input' (string)
info.product = 'AT Translated Set 2 keyboard' (string)
input.xkb.layout = 'us' (string)
info.parent = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port' (string)
info.capabilities = { 'input', 'input.keyboard', 'input.keypad', 'input.keys', 'button' } (string list)
info.udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input' (string)
input.xkb.variant = 'xorg' (string)
linux.hotplug_type = 2 (0x2) (int)
input.x11_driver = 'evdev' (string)
input.device = '/dev/input/event2' (string)
linux.subsystem = 'input' (string)
input.product = 'AT Translated Set 2 keyboard' (string)
linux.device_file = '/dev/input/event2' (string)
info.addons.singleton = { 'hald-addon-input' } (string list)Code: Select all
<?xml version="1.0" encoding="ISO-8859-1" ?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.xkb.rules" type="string">evdev</merge>
<merge key="input.xkb.model" type="string">evdev</merge>
<merge key="input.xkb.layout" type="string">de</merge>
<merge key="input.xkb.variant" type="string">xorg</merge>
</match>
</device>
</deviceinfo>Normalerweise haben wir jetzt für die Tastatur 2 Konfigurationen - eine über den HAL-Daemon und die andere über die xorg.conf. Theoretisch wäre damit die Konfiguration der Input-Section in der xorg.conf überflüssig. Als ich die Eingabegeräte mal alles auskommentiert hatte, funktionierten zwar Tastatur und Mouse, die Tastatur war aber wieder auf US-Layout.
Aktivierung des deutschen Tastatur-Layouts
Da das wie im vorherigen Punkt nicht per default funktioniert, muss man auch hier wieder etwas nachhelfen. Dafür gibt es wieder mehrere Möglichkeiten:
- Man läßt einfach die Input-Sektion in der xorg.conf stehen
- Löscht man die Input-Sektion aus der xorg.conf, muss man die Tastatur anderweitig aktivieren:
- KDE: kxkb
- Gnome: gnome-keyboard-properties
- alle anderen: setxkbmap de
Nützliche Links dazu:
http://who-t.blogspot.com/2008/07/input ... shell.html
http://forums.gentoo.org/viewtopic-t-64 ... t-175.html
So vielleicht helf ich damit jemanden, einen Wutausbruch und längere Frustration zu vermeiden.
Update 27.11.2008
Die Default-FDIs stehen unter:
Code: Select all
/usr/share/hal/fdi/policy/10osvendor



