Ich dachte es wäre mal an der Zeit einige Tasten an meinem Thinkpad zu belegen. Dazu muss man erstmal zu ein paar Dateien Einträge hinzufügen:
/boot/loader.conf
/etc/sysctl.conf
/etc/devd.conf
Dannn legt man das Skript '/usr/local/sbin/acpi_ibm' an.
Jetzt noch ein:
# chmod +x /usr/local/sbin/acpi_ibm
und radeontool installieren, falls es noch nicht vorhanden ist:
# cd /usr/ports/sysutils/radeontool
# make install clean
Wenn man das ganze ohne Neustart ausprobieren will einfach:
# /etc/rc.d/devd restart
Jetzt sollte ein Fn-F3 den Bildschirm dunkel schalten und ein Fn-F5 den wpa_supplicant stoppen, bzw. wieder einschalten. Die Ausgabe des Skriptes kann man mit dem Befehl:
# tail -f /var/run/acpi_ibm.log
ansehen. Was vor allem zum Testen nützlich ist. Praktischerweise kann man das Skript im laufenden Betrieb ändern und testen.
/boot/loader.conf
Code:
# load ibm acpi
acpi_ibm_load="YES"
/etc/sysctl.conf
Code:
# enable acpi_ibm devd events
dev.acpi_ibm.0.events=1
/etc/devd.conf
Code:
# ACPI_IBM
notify 10 {
match "system" "ACPI";
match "subsystem" "IBM";
action "/usr/local/sbin/acpi_ibm $notify 2>&1 > /var/run/acpi_ibm.log";
};
Dannn legt man das Skript '/usr/local/sbin/acpi_ibm' an.
Code:
#!/bin/sh
event=$1
status=
case $1 in
0x03) {
event="'backlight'";
status=$(/usr/local/bin/radeontool light | grep -Eo '[^ ]+$')
if [ "$status" = "on" ]; then
status=off
else
status=on
fi
/usr/local/bin/radeontool light $status
};;
0x05) {
event="'wireless'"
command=start
status=on
if /etc/rc.d/wpa_supplicant onestatus > /dev/null; then
command=stop
status=off
fi
/etc/rc.d/wpa_supplicant one$command > /dev/null
};;
0x07) {
event="'dac'"
status=$(/usr/local/bin/radeontool dac | grep -Eo '[^ ]+$')
if [ "$status" = "on" ]; then
status=off
else
status=on
fi
/usr/local/bin/radeontool dac $status
};;
0x10) {
event="'raise brightness'"
status=$(sysctl dev.acpi_ibm.0.lcd_brightness | grep -Eo '[0-9]+$')
};;
0x11) {
event="'lower brightness'"
status=$(sysctl dev.acpi_ibm.0.lcd_brightness | grep -Eo '[0-9]+$')
};;
0x12) {
event="'thinklight'"
status=$(sysctl dev.acpi_ibm.0.thinklight | grep -Eo '[^ ]+$')
if [ $status -eq 1 ]; then
status=on
else
status=off
fi
};;
0x15) {
event="'raise volume'"
status=$(sysctl dev.acpi_ibm.0.volume | grep -Eo '[0-9]+$')
};;
0x16) {
event="'lower volume'"
status=$(sysctl dev.acpi_ibm.0.volume | grep -Eo '[0-9]+$')
};;
esac
echo "ACPI_IBM event ($1) $event."
if [ "$status" != "" ]; then
echo " status: $status"
fi
Jetzt noch ein:
# chmod +x /usr/local/sbin/acpi_ibm
und radeontool installieren, falls es noch nicht vorhanden ist:
# cd /usr/ports/sysutils/radeontool
# make install clean
Wenn man das ganze ohne Neustart ausprobieren will einfach:
# /etc/rc.d/devd restart
Jetzt sollte ein Fn-F3 den Bildschirm dunkel schalten und ein Fn-F5 den wpa_supplicant stoppen, bzw. wieder einschalten. Die Ausgabe des Skriptes kann man mit dem Befehl:
# tail -f /var/run/acpi_ibm.log
ansehen. Was vor allem zum Testen nützlich ist. Praktischerweise kann man das Skript im laufenden Betrieb ändern und testen.