= Kernel-Fehler im Treiber für Logitech Unified-Receiver Eingabegeräte = <> Logitech Unified-Receiver Eingabegeräte sind Tastatur-Maus-Kombigeräte, die sich einen Funkempfänger (unified receiver) am USB-Port des Computers teilen. == Das Symptom == Ein Computer, an dem ''nur'' ein solches Geräte (Funktastaturmaus-Kombination) angeschlossen ist, hat eine US-amerikanische Tastaturbelegung, obwohl im X-Server ein deutsches Tastaturlayout eingestellt wurde und dieses auch mittels {{{setxkbmap -pring}}} auch angezeigt wird. Führt man als Benutzer in einem X-Terminal den Befehl {{{ $ setxkbmap -layout de -variant nodeadkeys }}} aus, dann schaltet das Tastaturlayout um. Sobald man eine normale USB-Tastatur zusätzlich mit dem Linux-PC verbindet, schaltet der X-Server sofort auf das voreingestellte, deutsche Tastatur-Layout um. == Ursache == Der Linux-Kernel meldet den Unified Receiver als Virtual core pointer Device (Maus), jedoch aber nicht als Virtual core keyboard Device am System an. Aus Sicht des X-Servers ist keine Tastatur am System angeschlossen und die systemweiten Tastatureinstellungen werden nicht gesetzt. Eine ausführliche Erklärung bietet ein [[https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-evdev/+bug/995715/comments/19|Beitrag von Dirk Porezag im Ubuntu Bug-Tracker]]. == Problemlösung == Eine wirklich Problemlösung gibt es zur Zeit nicht. Sie muss von den Kernel-Entwicklern im Linux-Kernel (Treiber: hid-logitech-dj) implementiert werden. Wir haben allerdings einen Workaround für unsere Debian Edu Systeme gefunden. === Debian squeeze mit GDM === Auf unseren Debian Edu squeeze Systemen setzen wir den Display Manager {{{gdm}}} ein. Zwei Konfigurationsdateien von {{{gdm}}} müssen ein wenig modifiziert werden (hier auf dem Disklserver im Diskless Workstation Chroot): {{{ root@disklserver:/etc/gdm/Init# diff -u Default.orig Default --- Default.orig 2014-02-11 21:17:33.000000000 +0100 +++ Default 2014-02-11 21:17:05.000000000 +0100 @@ -65,7 +65,17 @@ # FIXME: is this all right? Is this completely on crack? # What this does is move the xkb configuration from the GDM_PARENT_DISPLAY # FIXME: This should be done in code. Or there must be an easier way ... - if [ -n "$GDM_PARENT_DISPLAY" ]; then + + ### added for handling the hid-logitech-dh module (Logitech Wireless Keyboards) + if [ -f /etc/default/keyboard ]; then + . /etc/default/keyboard + $SETXKBMAP -model $XKBMODEL + $SETXKBMAP -layout $XKBLAYOUT + $SETXKBMAP -variant $XKBVARIANT + $SETXKBAMP -options $XKBOPTIONS + #### by Mike Gabriel (2014-02-11) + + elif [ -n "$GDM_PARENT_DISPLAY" ]; then XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v )` if [ -n "$XKBSETUP" ]; then XKBKEYMAP=`echo "$XKBSETUP" | grep '^keymap' | awk '{ print $2 }'` }}} {{{ root@disklserver:/etc/gdm/PreSession# diff -u Default.orig Default --- Default.orig 2014-02-11 21:20:06.000000000 +0100 +++ Default 2014-02-11 21:15:33.000000000 +0100 @@ -64,4 +64,19 @@ "$XSETROOT" -cursor_name left_ptr -solid "$BACKCOLOR" fi +SETXKBMAP=`gdmwhich setxkbmap` +if [ "x$SETXKBMAP" != "x" ] ; then + + ### added for handling the hid-logitech-dh module (Logitech Wireless Keyboards) + if [ -f /etc/default/keyboard ]; then + . /etc/default/keyboard + $SETXKBMAP -model $XKBMODEL + $SETXKBMAP -layout $XKBLAYOUT + $SETXKBMAP -variant $XKBVARIANT + $SETXKBAMP -options $XKBOPTIONS + #### by Mike Gabriel (2014-02-11) + fi + +fi + exit 0 }}}