Wie Du die Funktionstasten Deines Laptops auf Fedora aktivierst

# Start Evolution (email button)
00000050)
checkuser
su – $user -c „evolution –component=mail &> /dev/null &“
;;

Die Konfiguration für den Web Browser ist fast die gleiche wie die obere.

# Start Firefox (browser button)
00000051)
checkuser
su – $user -c „firefox &> /dev/null &“
;;

Nun haben wir die Touchpad Konfiguration erreicht. Viele Laptops haben eine besondere Funktionstaste für das Touchpad – wir werden den synclient verwenden um unser Touchpad an und aus zu schalten wenn diese Funktionstaste gedrückt wird (wir haben den Synclient in Schritt 1.2 aktiviert). Dies ist Benutzer-unabhängig, wir müssen die „checkuser“-Funktion also nicht aufrufen.

# Toggle touchpad on|off (touchpad button)
0000006b)
tp_status=(`synclient -l | grep TouchpadOff`)

if [ ${tp_status[2]} = „1“ ]
then synclient TouchpadOff=0
else synclient TouchpadOff=1
fi
;;

Als Nächstes müssen wir die Funktionstasten konfigurieren, um die Lautstärke zu verringern und zu erhöhen. Auch das ist Benutzer-unabhängig, denn es gibt nur eine Soundkarte (auf den meisten Systemen).

# Lower volume (Fn + F11)
00000031)
amixer sset Master Playback Volume 5%- &> /dev/null
;;

# Raise volume (Fn + F12)
00000030)
amixer sset Master Playback Volume 5%+ &> /dev/null
;;

Wir benutzen einen kleinen Trick um den Ton auszustellen, da die Real Mute Funktion von amixer ein großes Problem verursacht – die meisten Player brechen zusammen, wenn Du sie verwendest. Wenn die Mute-Funktionstaste gedrückt wird, überprüft das Skript, ob der Sound momentan aktiviert. Wenn ja, schreibt es den derzeitigen Status in eine Datei bevor es die Lautstärke auf 0% stellt. Wenn Du diese Funktionstaste erneut drückst (und die Lautstärke immer noch 0% ist), bezieht das Skript den letzten Lautstärken-Status aus der Datei und stellt ihn wieder her.

# Toggle mute (0% – last state) (Fn + F10)
00000032)
snd_status=(`amixer sget Master Playback Volume | egrep „[on|off]$“`)
cur_vol=$(echo ${snd_status[4]} | tr ‚[|]|%‘ ‚ ‚)

if [ $cur_vol != „0“ ]
then
cat /dev/null > /opt/.volume
echo $cur_vol > /opt/.volume
amixer sset Master Playback Volume 0% &> /dev/null
else
sav_vol=$(cat /opt/.volume)
if [ $sav_vol = „“ ]
then amixer sset Master Playback Volume 50% &> /dev/null
else amixer sset Master Playback Volume $sav_vol% &> /dev/null
fi
fi
;;

Zuguterletzt schließen wir die Case Abfrage und beenden das Skript.

esac

exit 0

Speichere die Datei und mach sie ausführbar.

chmod +x /etc/acpi/events/hotkeys.sh

Als Beispiel hier einam das komplette Script.

#!/bin/sh
PATH=/sbin:/bin:/usr/bin
# Possible values:
# "0" = multi user system
# "your_username" = single user system
user="olli"
# Detect the currently active user on multi user systems
checkuser()
{
    if [ $user = "0" ]
    then
        uid_session=$(
            ck-list-sessions |
            awk '
            /^Session[0-9]+:$/ { uid = active = x11 = "" ; next }
            { gsub(/'''/, "", $3) }
            $1 == "uid" { uid = $3 }
            $1 == "active" { active = $3 }
            $1 == "x11-display" { x11 = $3 }
            active == "TRUE" && x11 != "" {
            print uid
            exit
            }'
        )
        user_data=(`cat /etc/passwd | grep $uid_session | tr ':' ' '`)
        user=${user_data[0]}
    fi
}
# Assign actions to the hotkeys
case $3 in

    # Start Evolution (email button)
    00000050)
    checkuser
    su - $user -c "evolution --component=mail &> /dev/null &"
    ;;

    # Start Firefox (browser button)
    00000051)
    checkuser
    su - $user -c "firefox &> /dev/null &"
    ;;

    # Toggle touchpad on|off (touchpad button)
    0000006b)
    tp_status=(`synclient -l | grep TouchpadOff`)

    if [ ${tp_status[2]} = "1" ]
    then
        synclient TouchpadOff=0
        echo 1 > /sys/class/leds/asus:touchpad/brightness
    else
        synclient TouchpadOff=1
        echo 0 > /sys/class/leds/asus:touchpad/brightness
    fi
    ;;

    # Lower volume (Fn + F11)
    00000031)
    amixer sset Master Playback Volume 5%- &> /dev/null
    ;;

    # Raise volume (Fn + F12)
    00000030)
    amixer sset Master Playback Volume 5%+ &> /dev/null
    ;;

    # Toggle mute (0% - last state) (Fn + F10)
    00000032)
    snd_status=(`amixer sget Master Playback Volume | egrep "[on|off]$"`)
    cur_vol=$(echo ${snd_status[4]} | tr '[|]|%' ' ')

    if [ $cur_vol != "0" ]
    then
        cat /dev/null > /opt/.volume
        echo $cur_vol > /opt/.volume
        amixer sset Master Playback Volume 0% &> /dev/null
    else
        sav_vol=$(cat /opt/.volume)
        if [ $sav_vol = "" ]
        then    amixer sset Master Playback Volume 50% &> /dev/null
        else    amixer sset Master Playback Volume $sav_vol% &> /dev/null
        fi
    fi
    ;;
esac
exit 0

Aber Eines müssen wir immer noch tun. Es gibt einen Fehler, der den ACPI Daemon davon abhalten wird, die Befehle in unserem Skript auszuführen, nachdem Du Dein System gestartet/neu gestartet hast. Du musst den ACPI Daemon jedes Mal neu starten, nachdem Du Dich in ein GNOME Session eingeloggt hast. Ich nehme mal an, dass Du das nicht manuell machen möchtest 🙂 Also habe ich einen kleinen Trick für Dich (Root Privilegien werden benötigt).

vi /etc/gdm/Init/Default

Füge folgende Zeilen am Ende der Datei vor „Exit“ ein.

# acpid workaround
/etc/init.d/acpid restart

Der entsprechende Teil der Datei sollte wie folgt aussehen:

[...]
# acpid workaround
/etc/init.d/acpid restart
exit 0

Nun wird der ACPI Daemon nach jedem Login automatisch gestartet.

3 Die Xev Events handhaben

Vielleicht hast Du einige Funktionstasten entdeckt, die keinen ACPI Event in Schritt 1.3.1 aber einen Keycode Event in Schritt 1.3.2 erzeugt haben. Wir müssen diese nun konfigurieren – zuerst müssen wir die notwendige Konfigurationsdatei erstellen (ohne Root Privilegien!).

xbindkeys –defaults > $HOME/.xbindkeysrc

Lass sie uns nun bearbeiten.

vi ~/.xbindkeysrc

In der Datei siehst Du eine Beispiel-Konfiguration und einige Notizen. Die Konfiguration ist sehr einfach – füge einfach eine Zeile mit dem Befehl ein, der ausgeführt werden soll und unter dem Keycode (c:%keycode%), der zu dieser Aktion gehört. Hier ist ein Beispiel der Konfiguration auf meinem Laptop (einige Multimedia Funktionstasten wie Start/Pause, Stop etc…).

# MM button actions
# MM play/pause
"/usr/bin/audacious -p"
c:162
# MM stop
"/usr/bin/audacious -s"
c:164
# MM rewind
"/usr/bin/audacious -r"
c:144
# MM forward
"/usr/bin/audacious -f"
c:153

Speichere nun die Änderungen und füge xbindkeys (/usr/bin/xbindkeys) den Autostart Programmen (System – Preferences – Personal – Sessions) hinzu. Bitte beachte, dass Du Dich abmelden und wieder anmelden musst damit die Änderungen übernommen werden können.

4 Links

Das könnte Dich auch interessieren …