Skip to main content

Shortcuts - FN Tasten

Überprüfen von ACPI-Ereignissen

Installiere und starte den ACPI-Dienst:

sudo apt-get update
sudo apt-get install acpid
sudo systemctl enable acpid
sudo systemctl start acpid

Verwende acpi_listen, um zu sehen, ob die Fn-Tasten ACPI-Ereignisse auslösen:

acpi_listen

Drücke nun nacheinander die Fn-Tasten F9, F10 und F11.
Beobachte die Ausgabe im Terminal.


ACPI

ACPI arbeitet über ein Ereignissystem, das in deinem System so konfiguriert ist, dass es bei bestimmten Hardware-Ereignissen (wie z. B. Fn-Tastendrücken) automatisch Skripte oder Befehle ausführt. Hier eine Erklärung, wie das im Detail funktioniert:

  1. ACPI-Ereignisdateien:
    Im Verzeichnis /etc/acpi/events/ liegen Konfigurationsdateien wie media_prev. Jede dieser Dateien enthält zwei wichtige Teile:

    • event=...
      Hier wird ein Muster definiert, das einem bestimmten ACPI-Ereignis entspricht. Zum Beispiel könnte event=ibm/hotkey LEN0268:00 00000080 00001317 genau dem Signal entsprechen, das gesendet wird, wenn du F9 drückst.
    • action=...
      Hier wird angegeben, welcher Befehl oder welches Skript ausgeführt werden soll, wenn ein Ereignis eintritt, das dem Muster entspricht. Im Fall von media_prev wäre das beispielsweise ein Skript, das den Befehl playerctl previous ausführt, um zum vorherigen Track zu wechseln.
  2. Der ACPI-Daemon (acpid):
    Beim Systemstart lädt der ACPI-Daemon (acpid) alle Dateien aus /etc/acpi/events/ ein. Er „kennt“ dadurch alle Muster und die zugehörigen Aktionen.
    Sobald ein ACPI-Ereignis (z. B. das Drücken von F9) vom Kernel erzeugt wird, vergleicht acpid dieses Ereignis mit den Mustern in den Konfigurationsdateien.

    • Passender Treffer: Findet acpid ein Muster, das zu deinem Tastendruck passt, wird automatisch die in der Datei definierte Aktion ausgeführt.
  3. Kein manuelles „Verlinken“ nötig:
    Es gibt keine separate Konfigurationsdatei, in der du explizit die Fn-Tasten mit den Skripten verknüpfst.
    Stattdessen durchforstet acpid beim Start das Verzeichnis /etc/acpi/events/ und „registriert“ alle darin enthaltenen Ereignismuster.
    Wenn du also F9 drückst und das ACPI-Ereignis exakt mit dem in der Datei media_prev definierten Muster übereinstimmt, weiß acpid automatisch, dass es das entsprechende Skript (bzw. den Befehl) ausführen soll.

Zusammengefasst:

  • ACPI-Ereignisdateien im Verzeichnis /etc/acpi/events/ definieren, welches ACPI-Signal (Muster) welcher Aktion zugeordnet ist.
  • Der ACPI-Daemon liest diese Dateien beim Start und überwacht fortlaufend die Ereignisse.
  • Wenn ein Ereignis (z. B. F9) erkannt wird, das mit einem in einer dieser Dateien definierten Muster übereinstimmt, führt acpid die entsprechende Aktion aus (z. B. "Track zurück").

So „weiß“ das System also automatisch, dass bei einem F9-Druck der vorherige Track abgespielt werden soll – alles basiert auf den in den ACPI-Ereignisdateien definierten Mustern und Aktionen.

Next Song - Spotify

/etc/acpi/events/media_next
event=ibm/hotkey LEN0268:00 00000080 00001319
action=/usr/bin/sudo -u jj /etc/acpi/local/media_next.sh

/etc/acpi/local/media_next.sh
#!/bin/bash

export DISPLAY=:0.0
export XAUTHORITY=/home/jj/.Xauthority
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus

playerctl -p spotify next

Previous Song - Spotfy

/etc/acpi/events/media_prev
event=ibm/hotkey LEN0268:00 00000080 00001317
action=/usr/bin/sudo -u jj /etc/acpi/local/media_prev.sh

/etc/acpi/local/media_prev.sh
#!/bin/bash

export DISPLAY=:0.0
export XAUTHORITY=/home/jj/.Xauthority
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus

playerctl -p spotify previous

Play and Pause - Spotify

/etc/acpi/events/media_play_pause
event=ibm/hotkey LEN0268:00 00000080 00001318
action=/usr/bin/sudo -u jj /etc/acpi/local/media_play_pause.sh

/etc/acpi/local/media_play_pause.sh
#!/bin/bash

export DISPLAY=:0.0
export XAUTHORITY=/home/jj/.Xauthority
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus

playerctl -p spotify play-pause