Das /proc-Verzeichnis
Samstag, den 24. November 2007Nachdem ich ja schonmal die Wireless LED meines MD40100 unter Linux mit dem Befehl echo 1 > /proc/driver/acerhk/wirelessled einschalten kann, wollte ich es nun mit der WLAN-Taste kombinieren. Gar nicht so einfach. Zuerst dachte ich, dass ich mit echo /proc/driver/acerhk/wirelessled den Status auslesen kann – leider nicht. Auch mit cat /proc/driver/acerhk/wirelessled hat es nicht geklappt. Also habe ich mich mal auf die Suche gemacht. Dabei habe ich herausgefunden, dass /proc ein spezielles Dateisystem ist.
In der acerhk.c-Datei (aus der das Modul erzeugt wurde), werden in diesem /proc-Dateisystem das Verzeichnis acerhk und die Dateien (z.B. wirelessled) erzeugt. Diese werden dann Funktionen zugewiesen. Also wenn ich das richtig verstehe, dann ist die Datei dort einfach nur ein Zeiger auf eine Funktion. Und wenn ich da jetzt einen Wert hinschicke, dann wird dieser Wert an die Funktion übergeben.
Also müßte ich jetzt die Funktion überprüfen, ob die mir auch den Status zurückgeben kann – aber das war mir dann doch etwas zu hoch, also habe ich einen anderen Weg probiert.
Ganz einfach, ich schreibe mir den von mir gesetzten Status in eine Umgebungsvariable. Da gibt es viele schöne Befehle wie set, env, printenv und export… Aber leider nichts brauchbares dabei. Die Umgebung gilt nur für das jeweilige Script.
Vielleicht kann ich den Status ja in eine Datei schreiben? Unter /usr/share/wireless fehlen dem Script leider die Rechte. Ich habe daher eine Status-Datei unter /var/tmp/wireless-state erzeugt. Dazu ein kleines Script, dass mir den Wert ausliest, diesen dann ändert und an meine wirelessled-Datei und wireless-state-Datei zurückschreibt.
Für meine Sondertasten habe ich das Programm Hotkeys installiert und ein Definitionsfile erstellt. Der Tastencode 147 ist meine Wireless-Taste. Dort habe ich dann das Script eingebunden – und es klappt jetzt ;-) Juchuu.
Langsam werde ich vom Linux-Anfänger zum Linux-Nutzer.


