Fn-F6 via ibm-acpi mit Skript belegen

AndreasMeier

New member
Themenstarter
Registriert
21 März 2005
Beiträge
398
Hallo zusammen,

meine Umstellung von Ubuntu Hoary auf Debian Etch hat funktioniert und ich bin am Feinschliff.
Nun beschäftigt mich das Problem, dass ich die Fn-F6-Taste belegen möchte.
Über Fn-F5 kann ich Bluetooth schalten.
Über Fn-F6 will ich das IPW2200-Modul laden/entladen und WLAN schalten können.

Für Fn-F6 ist ibm-acpi zuständig lt. Thinkwiki.
Nun hab ich ja bereits feststellen müssen, dass ibm-acpi bereits im Kernel installiert ist.

Ich werd aber aus der Wiki nicht so schlau, dass ich im Moment weiß, wie ich anfangen soll.

Kann mir einer bitte nen Tip geben ?

Herzlichen Dank,
Gruß
Andreas
 
Für Fn-F6 ist ibm-acpi zuständig lt. Thinkwiki.
Jein. Letzten Endes wird ein stinknormaler ACPI-Event draus gemacht. Du müsstest folglich nur einen entsprechenden Event abfangen / generieren (Beispiele findest du unter /etc/acpi/events/), und ein entsprechendes Script (ubnter /etc/acpi) hinterlegen.
 
http://www.nongnu.org/tpb/

EDIT

Habe mir eben noch mal die Doku durchgelesen. Du kannst wohl nur FN belegen, nicht FN+Key. Dacht das ginge damit. Nuja, ist schon länger her :-).

EDIT 2

Und das nächste Mal sollte ich Pfeife mir mal den Thread-Titel richtig durchlesen ;-). Ja, so wie es CC gesagt hat funzt es und ist ziemlich easy. Hatte es vor 'nem Jahr auch so laufen.
 
Hab ihr ne Idee, wie so ein WLAN-Skript aussehen könnte, kann leider noch keine Skripte selber schreiben.

Skript sollte sich so verhalten :
=> wenn WLAN ausgeschaltet ist:
1.) Module laden
2.) Netzwerk-Config laden und Netzwerk evtl. neu starten
3.) Variable setzen, dass WLAN eingeschaltet ist

=> wenn WLAN eingeschaltet ist
1.) Module entladen
2.) Variable setzen, dass WLAN ausgeschaltet ist

Das mit den Modulen laden/entladen soll dazu beitragen, dass bei Nichtgebrauch der WLAN-Karte Wärme garnicht erst produziert wird.

Gruß
Andreas
 
Mal so eben auf die Schnelle dahingetippert:
[code:1]#!/bin/sh
WLAN_MODUL=ipw2200
WLAN_INTERFACE=eth1

# Wenn das Modul geladen ist
if /sbin/lsmod | /bin/grep $WLAN_MODUL > /dev/null; then
# enlade es und fahr die Schnittstelle runter
/sbin/ifdown $WLAN_INTERFACE
/sbin/modprobe -r $WLAN_MODUL
# ansonsten
else
# lade das Modul und aktiviere die Verbindung
/sbin/modprobe ipw2200
/sbin/ifup $WLAN_INTERFACE
fi[/code:1]
Eine extra Variable brauchst du dabei nicht zu setzen, die Prüfung, ob das Modul geladen ist, reicht hier vollkommen aus. Da du Debian nutzt, kommen dir "ifup" und "ifdown" zugute, die allerdings voraussetzen, dass die /etc/network/interfaces die passenden Einträge enthält.

So hast du immerhin schon mal eine grobe Idee. Hoffe es hilft.
 
modprobe ipw2200
iwconfig eth1 (was immer du damit machen willst)
ifconfig eth1 adresse up
route add default gw gateway

das halt ganz einfach. funktioniert aber.

und entladen halt mit modprobe -r

schau dir mal die seite an: http://dev.gentoo.org/~brix/papers/X31/X31.html

und geh zu dem punkt 3.16. ThinkPad Buttons.
da kannst du sehen wie man es auch komfortabel machen kann.
besonders das x31.sh skript.
 
Danke an alle für die Infos.

Hab jetzt das X31-Skript hergenommen und unter /etc/acpi abgelegt. Ist das richtig, oder muß ich das unte r/etc/acpi/events ablegen ?
Die Modifikation in der modules.conf hab ich bereits gemacht.

Weitere Frage ist, wie ich den kontrollieren kann, ob die IPW2200-Module beim Booten bereits geladen werden oder nicht.
In der /etc/modules steht nix von IPW2200 !

Danke und Gruß
Andreas
 
Hab jetzt das X31-Skript hergenommen und unter /etc/acpi abgelegt. Ist das richtig, oder muß ich das unte r/etc/acpi/events ablegen ?

Ist im Prinzip egal, aber unter /etc/acpi macht es Sinn :-) Du musst jedoch noch in /etc/acpi/events/default definieren, für welche events acpid das x31.sh aufrufen soll. Siehe zum Beispiel hier. Leider bin ich gerade nicht unter Linux, kann dir keine bessere Hilfe geben.

Weitere Frage ist, wie ich den kontrollieren kann, ob die IPW2200-Module beim Booten bereits geladen werden oder nicht.

$ lsmod | grep ipw2200
 
Hab unter /etc/acpi/events/ keine defaults-Datei.
Reicht es, diese einfach anzulegen ?
Lt. dem Link von STB soll da folgendes drin sein:
event=.*
action=/etc/acpi/acpi_handler.sh %e

Frage: was bedeutet das %e am Schluß, das finde ich in einem anderen Skript nicht.

Frage: überschreibe ich mit dem events=.* andere events, sprich, wird dann alles vom x31.sh abgearbeitet ?

Danke und Gruß
 
Das heisst, für das Ereignis event führe Aktion action aus. In diesem Fall ist das Ereignis ein beliebiges (=.*) und die dazugehörige Aktion ist das Ausführen der Datei /etc/acpi/acpi_handler.sh. Das %e ist der Name des übergebenen Ereignisses. Wie der genau aussieht, kann ich dir leider nicht sagen, ich tippe aufgrund der Datei auf 'button power'. Das heisst, das Skript wird an Kommandozeile wiefolgt aufgerufen:

$ /etc/acpi/acpi_handler.sh button power

Du kannst auch für ein spezielles Ereignis ein bestimmtes Skript ausführen. Dann brauchst Du nicht unbedingt Argumente zu übergeben:

event=button/power.*
action=/etc/acpi/powerbutton.sh

Hier nochmal die Manpage von acpid.

EDIT: Mach' mal ein 'find /etc/acpi' und poste das hier.
 
Sorry, hat lange gedauert, aber anbei der Output:
/etc/acpi
/etc/acpi/events
/etc/acpi/events/powerbtn
/etc/acpi/events/defaults
/etc/acpi/events/lm_lid
/etc/acpi/events/lm_battery
/etc/acpi/events/lm_ac_adapter
/etc/acpi/actions
/etc/acpi/actions/lm_lid.sh
/etc/acpi/actions/lm_ac_adapter.sh
/etc/acpi/actions/lm_battery.sh
/etc/acpi/x31.sh
/etc/acpi/powerbtn.sh

Das x31.sh ist ein Beispielskript, welches Cromsche oben erwähnt hat. Läuft aber alles noch nicht.

Gruß
Andreas
 
Wie ihr seht, hab ich ja andere Skripte unter actions liegen.
Da ich aber durch die defaults-Datei alle Events zu dem x31.sh-Skript umleite, kann ich dann die anderen Dateien (Skripte) löschen ?

Wie könnte ich denn am einfachsten überprüfen, ob die Übergabe der Tastenkombination überhaupt läuft ?

Gruß
Andreas
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben