Vorne weg etwas zum Prinzip.
Die Multimedia Tasten am Asus G1, manchmal auch extra Tasten genannt, (und anderen Notebooks wird es nicht anders ergehen) lösen ACPI-Events aus, die der ACPID abfängt und verarbeitet. Das kann man wunderbar mit dem kleinen tool acpi_listen ausprobieren:
#acpi_listen
hotkey ATKD 00000050 00000007
hotkey ATKD 0000006b 0000001b
Hier habe ich die Email Taste und die Touchpadlock Taste gedrückt.
Der ersten Block ist der Tastencode und der zweite Block ist ein Zähler
Mit diesem Event werden über Eintrage im Verzeichnis /etc/acpi/events/ shell-scripte gestartet, die Details folgen später.
Bei mir reagierten auf drücken der Tasten auch die entsprechend konfigurierten Anwendungen, doch leider funktionierte das Touchpad Lock nicht. Das ist eine Funktion, die ich beim schreiben auf dem Schoß schätzen gelernt habe, weil man manchmal unwillkührlich mit dem Handballen zu nahe an das Touchpad kommt und dann der getippte Text einfach an anderer Stelle landet als gewollt. Nun habe ich zuerst gedacht, "ok, da hat sich wohl der Code der Taste geändert". Also habe ich die zuständige Datei in /etc/acpi/events/asus-touchpad mit dem Editor geöffnet und den dort stehenden Code von 0000006a in 0000006b geändert. Trotz neustarten des ACPI-Daemon mit /etc/init.d/acpid restart funktionierte leider das abschalten immer noch nicht. Ich habe deshalb im Internet recherchiert und kam dahinter, das das Abschalten mit hilfe von synclient erfolgt. Synclient ist ein Tool, welches mittels Shared Memory mit dem Modul Synaptics im X-Server kommuniziert. Da viel es mir wie Garagen aus dem Haar. Natürlich! Also flugs die notwendigen Schritte in der xorg.conf nachgeholt. ... Doch damit war das Problem noch nicht behoben.
Ich habe einfach einen alten Eintrag aus meinem Blog (juhuh!) rausgesucht und die Einstellungen in der xorg.conf ergänzt. Ganz am Anfang findet man die Section ServerLayout, dort die Zeile
#Section "ServerLayout"
InputDevice "Synaptics Touchpad" "SendCoreEvents"
nachgetragen und im unteren Teil den Block InputDevice
#Section "InputDevice"
Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "HorizScrollDelta" "0"
Option "SHMConfig" "1"
Option "LeftEdge" "1872"
Option "RightEdge" "5800"
Option "TopEdge" "1712"
Option "BottomEdge" "4144"
EndSection
eingefügt. Wobei allerdings SHMConfig als Option gereicht hätte...
Abgespeichert und X neugestartet und siehe da... Es ging immer noch nicht.
Allerdings führte das aufrufen von /etc/acpi/asus-touchpad.sh zum Abschalten, das erneute Aufrufen zum wieder anschalten des Touchpads.
Ich vermutete nun, das etwas mit dem Event Handler nicht stimmt.
Ich habe nun in /etc/default/acpid das eventlogging und debugging akiviert (-l und -d als Option) ACPID erneut restartet und nun im Terminalfenster die Ausgaben beobachtet:
acpid: received event "hotkey ATKD 0000006b 0000000d"
acpid: rule from 3293[0:0] matched
acpid: notifying client 3293[0:0]
acpid: rule from 3235[105:111] matched
acpid: notifying client 3235[105:111]
acpid: rule from 3293[0:0] matched
acpid: notifying client 3293[0:0]
acpid: rule from /etc/acpi/events/asus-touchpad matched
acpid: executing action "/etc/acpi/asus-touchpad.sh"
BEGIN HANDLER MESSAGES
END HANDLER MESSAGES
acpid: action exited with status 0
acpid: rule from /etc/acpi/events/asus-a6u-touchpad matched
acpid: executing action "/etc/acpi/asus-touchpad.sh"
BEGIN HANDLER MESSAGES
END HANDLER MESSAGES
acpid: action exited with status 0
acpid: 5 total rules matched
acpid: completed event "hotkey ATKD 0000006b 0000000d"
Was mich zur Lösung des Äbels führte, seht ihr das auch?
Na gut, ich gebe eine Hilfe
asus:/etc/acpi/events# grep 006b *
asus-a6u-touchpad:event=hotkey (ATKD|HOTK) 0000006b
asus-touchpad:event=hotkey (ATKD|HOTK) 0000006b
Jetzt alles klar? Ich habe ja als erste Maßnahme den Eventcode geändert, dabei übersehen, das dafür schon ein anderes Script zuständig ist.
Das Script macht genau das gleiche, und zweimaliger Aufruf entspricht eben keinem Aufruf
Nun gab es mehrere Möglichkeiten, ich habe mich dazu entschlossen im asus-a6u-touchpad.sh die Zeilen mit der Action auszukommentieren.
Jetzt klapp es wieder!
hi, toller Artikel muss ich sagen. ich habe vor langer zeit ebenfalls solche probleme auf meinem Asus X53KA gehabt. teilweise konnte ich sie genau wie du lösen aber manche blieben nicht lösbar (für mich). Beispiele sind der webbutton, der Mailbutton, der Wlan-schalter und der Hotkey für die Prozessortaktstufen. da die acpi-codes in den event-dateien richtig eingegeben sind muss es an den Skripten im ordner /etc/acpi liegen.
jetzt meine frage: funktionieren alle hotkeys und schalter bei dir? mich nervt vor allem der wlan-schalter. ich muss immer über den applet im panel das netzwerk deaktivieren, wenn ich das nicht brauch.
gruß kai
Den Wlan Antennen Switch (Fn-F2) meide ich zwar wie der Teufel das Weihwasser, aber weil du es bist, habe ich es gerade probiert....es geht einwandfrei. Welche Dirstri hast du? Hast du mir acpi_listen mal geschaut, ob der Event kommt ? Bei mir:
hi, also zuerst: ich nutze ein ganz normales Ubuntu version 9.04. der Event kommt auch bei mir:
nur findet keine Aktion durch das script in /etc/acpi statt. hier noch das Event-file:
ich hab auch die anderen asus-wireless scripte ausprobiert. nichtmal mit die direkte ausführung der skripte als admin war erfolgreich. ich glaube die passen einfach nicht für meine hardware.
ach ja: die leds fürs wlan und bluetooth funktionieren ebenfalls nicht richtig. obwohl mein lappi gar kein bluetooth hat leuchtet das ding die ganze zeit. die wlan-led ist aber dauernd aus. mittlerweile habe ich mich auch an den umweg über das applet gewöhnt. der Hotkey Fn+F2 und der Schalter an der Front haben nämlich seit anfang an nicht funktioniert, was jetzt auch nicht unbedingt lebensnotwendig ist, denn die wichtigen sachen wie display-dimmen, lautstärke, touchpad, oder medienplayertasten funktionieren ja. gruß
Den Asus X53KA kenne ich nicht, kannst ja mal schauen, ob der von den asus_laptop extras erfasst wird, sollte in dmesg stehen.
Ich weiß, das man bei den Atheros Karten irgendwie ne Sonderlocke machen muss. Also wird es ein Script sein, das auch was mit den Atheros Modul anstellt? LED: suche speziel mal zu deinem Laptop infos, gibt es bestimmt. ansonsten gucke, ob es unter /sys/class etwas für deine LEDS gibt.... dann kannst du sie mit echo 1> pfadzurled anschalten und mit 0 abschalten
so, also zu asus_laptop ist folgendes rausgekommen:
und zu Atheros sprich dem ath5k Treiber:
die leds direkt über die gerätedateien anzusprechen funktioniert fehlerfrei, aber das müssten die von acpi4asus richtig einbinden. die scripte, die dafür verantwortlich sind, umzuschreiben traue ich mir nicht zu, vor allem weil ich nicht genau weis welche genau davon betroffen sind. außerdem ist mir der aufwand dazu zu hoch. zu den hotkeys ist allgemein zu sagen, dass der acpi event da ist, aber keine aktion durch das dazugehörige script stattfindet. diese scripte sind abgesehen vom asus-wireless aber korrekt. was mir aufgefallen ist: der medienplayer button lässt sich dann auch ganz einfach unter Tastenkombinationen im Menü belegen. obwohl der mailbutton und der webbutton gleich funktionieren (acpi_fakekey) geht das bei denen nicht. muss dann wohl an den zuordnungen in /usr/share/acpi-support/key-constants liegen. ich lass es einfach mal dabei und warte weiter ab. vielleicht tut sich ja was für die nächste version 9.10. wahrscheinlich besitze ich bis dahin sowieso einen anderen laptop. dann aber sicher nicht mehr einen von diesen schrottigen modellen von asus, die alle 3 Wochen in einer neuen version rauskommen, wie das bei dem X53KA der fall ist. vor zwei jahren war ich eben noch der meinung, dass man auf einem notebook auch anspruchsvoll spielen können muss. danke aber für deine Ratschläge gruß kai