# [Mini-Howto] Deutsche Tastatur mit hal-Unterstützung

## musv

Da ich mich jetzt den ganzen Tag schon damit rumgeschlagen hab, die Dokumentationen zu diesem Thema aber mehr als suboptimal sind, möchte ich jetzt hier mal eine kleine Zusammenfassung geben, wie man eine Otto-Normal-Tastatur unter xorg mit HAL-Unterstützung gängig bekommt. 

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

Die 3. Möglichkeit soll hier etwas näher beschrieben werden. 

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

HAL-Policy:

Mit den Policies können Teile der automatisch erkannten Gerätekonfiguration umgeschrieben werden. Die Policy-Dateien befinden sich in:

```
/etc/hal/fdi/policy/
```

Suchen und Auslesen der vorhandenen Konfiguration:

Mit dem Befehl 

```
hal-device
```

 bekommt man alle möglichen Geräte, die hal so verwaltet, angezeigt. Da das etwas übersichtlich sein kann, muss man die Tastatur gezielt suchen. Das geht mit:

```
hal-find-by-capability --capability input.keyboard
```

Als Ausgabe bekomm ich dann:

```
/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input
```

Mit 

```
hal-device /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input
```

 kann man sich dann die Eigenschaften des Gerätes anzeigen lassen.

In meinem Fall sieht das dann so aus:

```
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)
```

Bei xkb.layout steht "us" drin. Das wollen wir ändern. Also legen wir, wenn nicht schon vorhanden, folgende Policy an:

```
<?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>
```

xorg.conf oder war das schon alles?

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

Ich hab erstmal die Version mit der xorg.conf gelassen. Falls der HAL-Daemon dann mal die Eingabegeräte wirklich verwaltet (ohne xorg-Seiteneffekte), werd ich die Input-Rubrik aus der xorg.conf ganz rauslöschen. Die Mouse funktioniert schon jetzt nur mit HAL.

Nützliche Links dazu:

http://who-t.blogspot.com/2008/07/input-configuration-in-nutshell.html

https://forums.gentoo.org/viewtopic-t-641870-start-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: 

```
/usr/share/hal/fdi/policy/10osvendor
```

Da sucht man sich dann die passende raus, editiert die entsprechende Option und kopiert die FDI-Datei dann nach /etc/hal/fdi/policy/Last edited by musv on Thu Nov 27, 2008 8:00 pm; edited 1 time in total

----------

## Mr. Anderson

Habe eben etwa den zehnten Versuch unternommen, eine funktionierende Tastatur mit evdev zu bekommen. Dieses mal nach dieser Anleitung. Wie immer ist es gescheitert. Vielleicht hast Du eine Idee, was bei mir falsch läuft?

Es funktionieren diverse einzelne Tasten nicht (Intel 105 Tasten: die Pfeiltasten, Alt Gr, der Block über den Pfeiltasten,...)

hal-0.5.11-r1

xorg-server-1.5.2

xf86-input-evdev-2.0.7

INPUT_DEVICES="evdev"

habe aus der xorg.conf alles über Tastatur und Maus entfernt

meine /etc/hal/fdi/policy/10-x11-input.fdi sieht aus wie die oben

kxkb hilft nicht

setxkbmap de ebenfalls nicht

Beim Einloggen mit KDM funktioniert noch alles korrekt. Aber sobald KDE (4) geladen wird, fallen die Tasten aus (mit KDE 3 genau das Gleiche).

In der Xorg.0.log zeigt sich am Ende:

(EE) XKB: Couldn't open rules file /usr/share/X11/xkb/rules/evdev

(EE) XKB: No components provided for device AT Translated Set 2 keyboard

(WW) Couldn't load XKB keymap, falling back to pre-XKB keymap

edit: eben ausprobiert: wenn ich es nicht wage, ein deutsches Tastaturlayout mit kxkb oder setxkbmap auszuwaehlen, funktionieren wenigstens die Tasten.

----------

## Ampheus

Hier funktioniert das Ganze schon länger ohne extra Tools, welche in KDE4 die keymap setzen mit folgender policy:

```
<?xml version="1.0" encoding="UTF-8"?>

<deviceinfo version="0.2">

  <device>

    <match key="info.capabilities" contains="input.keys">

      <append key="info.callouts.add" type="strlist">hal-setup-keymap</append>

    </match>

    <match key="info.capabilities" contains="input.keys">

      <!-- <merge key="input.xkb.model" type="string">pc104</merge> -->

      <merge key="input.xkb.layout" type="string">de</merge>

      <merge key="input.xkb.variant" type="string">nodeadkeys</merge>

      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">

        <merge key="input.xkb.model" type="string">evdev</merge>

      </match>

      <merge key="input.xkb.rules" type="string">evdev</merge>

      <append key="input.xkb.options" type="strlist">altwin:menu</append>

    </match>

  </device>

</deviceinfo>
```

----------

## Mr. Anderson

Danke, habe das damit eben versucht. Leider hat es keine Besserung gebracht. Alles ist genau wie vorher.

----------

## Mr. Anderson

Na eeeendlich. Ich hab's gefunden. Das Problem war x11-misc/xkeyboard-config. Ich hatte Version 1.3 installiert. Das kann aber nicht mit evdev umgehen. Es wird wenigstens 1.4 benötigt.

----------

## tazinblack

Hallo,

dank Eurer Hilfe ist innerhalb von X wieder eine funktionelle Tastatur vorhanden.

Leider rafft mein gdm das nicht. Also beim Anmelden leider "clavier anglais" sprich Layout=us  :Sad: 

Aber wieso verwendet der gdm nicht die gnome-Einstellungen?

----------

## Knieper

 *musv wrote:*   

> wie man eine Otto-Normal-Tastatur unter xorg mit HAL-Unterstützung gängig bekommt.

 

Weil man Tastaturen so oft wechselt? Oder weil HAL gerade zum Grossteil durch DeviceKit ersetzt wird? Oder weil HAL totaler Muell ist und auf keinem Rechner laufen sollte? Soviele Vorteile auf einmal.

----------

## Necoro

 *tazinblack wrote:*   

> Also beim Anmelden leider "clavier anglais" sprich Layout=us 

 

Warum spricht dein GDM französisch mit dir? - Oder habe ich da eine versteckte Bedeutung net gesehen?

----------

## AWO

Hallo zusammen,

bei mir reichte es aus in der Kernelkonfiguration unter HID das Bootprotokoll für die Tastatur als Modul zu aktivieren. Ohne diese Option stand meine Tastatur auch auf "us".

Gruß AWO

----------

## AmonAmarth

 *tazinblack wrote:*   

> Hallo,
> 
> dank Eurer Hilfe ist innerhalb von X wieder eine funktionelle Tastatur vorhanden.
> 
> Leider rafft mein gdm das nicht. Also beim Anmelden leider "clavier anglais" sprich Layout=us 
> ...

 

steht in deiner  /etc/env.d/02locale auch

```
GDM_LANG="de_DE.UTF-8"
```

?

----------

## Mr. Anderson

 *AWO wrote:*   

> bei mir reichte es aus in der Kernelkonfiguration unter HID das Bootprotokoll für die Tastatur als Modul zu aktivieren. Ohne diese Option stand meine Tastatur auch auf "us".

 

Ich sehe nicht, was Du meinst. Kannst Du mal die genaue Beschreibung oder das genaue config-Symbol posten?

----------

## AWO

 *Mr. Anderson wrote:*   

>  *AWO wrote:*   bei mir reichte es aus in der Kernelkonfiguration unter HID das Bootprotokoll für die Tastatur als Modul zu aktivieren. Ohne diese Option stand meine Tastatur auch auf "us". 
> 
> Ich sehe nicht, was Du meinst. Kannst Du mal die genaue Beschreibung oder das genaue config-Symbol posten?

 

Gemeint habe ich in der Kernelkonfiguration unter: Device Drivers --> HID Devices --> USB HID Boot Protocol Drivers --> USB HIDBP Keyboard Support.

Voraussetzung ist natürlich eine USB-Tastatur.

Gruß AWO

----------

## Mr. Anderson

Ah, ok. Danke. Habe so etwas nicht.  :Smile: 

----------

## tazinblack

 *AmonAmarth wrote:*   

>  *tazinblack wrote:*   Hallo,
> 
> dank Eurer Hilfe ist innerhalb von X wieder eine funktionelle Tastatur vorhanden.
> 
> Leider rafft mein gdm das nicht. Also beim Anmelden leider "clavier anglais" sprich Layout=us 
> ...

 

Nee, die gibts bei mir nicht! Mal sehen, ob das die Ursache ist...

----------

## tazinblack

 *Necoro wrote:*   

>  *tazinblack wrote:*   Also beim Anmelden leider "clavier anglais" sprich Layout=us  
> 
> Warum spricht dein GDM französisch mit dir? - Oder habe ich da eine versteckte Bedeutung net gesehen?

 

sorry, "clavier anglais" heißt übersetzt englische Tastatur

----------

## tazinblack

 *AWO wrote:*   

>  *Mr. Anderson wrote:*    *AWO wrote:*   bei mir reichte es aus in der Kernelkonfiguration unter HID das Bootprotokoll für die Tastatur als Modul zu aktivieren. Ohne diese Option stand meine Tastatur auch auf "us". 
> 
> Ich sehe nicht, was Du meinst. Kannst Du mal die genaue Beschreibung oder das genaue config-Symbol posten? 
> 
> Gemeint habe ich in der Kernelkonfiguration unter: Device Drivers --> HID Devices --> USB HID Boot Protocol Drivers --> USB HIDBP Keyboard Support.
> ...

 

USB Tastatur hab ich nicht, ist ein Notebook

----------

## Josef.95

@tazinblack

was sagt denn ein 

```
locale -a

und

locale
```

?

MfG

----------

## tazinblack

 *Josef.95 wrote:*   

> @tazinblack
> 
> was sagt denn ein 
> 
> ```
> ...

 

```
locale -a

C

de_DE

de_DE@euro

de_DE.utf8

POSIX

```

```
 locale

LANG=de_DE.UTF-8

LC_CTYPE="de_DE.UTF-8"

LC_NUMERIC="de_DE.UTF-8"

LC_TIME="de_DE.UTF-8"

LC_COLLATE="de_DE.UTF-8"

LC_MONETARY="de_DE.UTF-8"

LC_MESSAGES="de_DE.UTF-8"

LC_PAPER="de_DE.UTF-8"

LC_NAME="de_DE.UTF-8"

LC_ADDRESS="de_DE.UTF-8"

LC_TELEPHONE="de_DE.UTF-8"

LC_MEASUREMENT="de_DE.UTF-8"

LC_IDENTIFICATION="de_DE.UTF-8"

LC_ALL=
```

----------

## Romses

Hallo

Meine Notebook-Tastatur meldet auch kein Layout. (Lenovo T60)

----------

