staging.inyokaproject.org

Tasten mit Funktionen belegen

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Den Tasten auf der Fernbedienung müssen die gewünschten Funktionen zugeordnet werden. Der LIRC-Daemon (lircd) dekodiert zwar die gesendeten Signale, ist aber selbst nicht in der Lage, Befehle auszuführen. Dafür bringt das lirc-Paket ein eigenes Programm mit - irexec. Andere nützliche Programme 🇬🇧 sind u.a. irxevent und xte, die im Folgenden vorgestellt werden. Gemeinsam haben diese Programme, dass sie eine .lircrc-Datei benötigen. Empfehlenswert ist es, die letztlich genutzten Programme im Autostart[4] einzutragen.

Voraussetzung ist natürlich eine funktionsfähige LIRC-Installation; ggf. muss das Paket

Befehl zum Installieren der Pakete:

sudo apt-get install liblircclient0 

Oder mit apturl installieren, Link: apt://liblircclient0

installiert sein [1], um bestimmte Programme mit LIRC-Support steuern zu können.

.lircrc

.lircrc ist die LIRC-Datei, in der die Anweisungen gespeichert werden, mit denen über die Tasten der Fernbedienung Programme gesteuert und Befehle ausgeführt werden. Prinzipiell sind alle Befehle, die auch in einem Terminal ausgeführt werden können, über LIRC und .lircrc "ferngesteuert" ausführbar.

.lircrc ist standardmäßig als versteckte Datei im Homeverzeichnis des Benutzers abgelegt (dort wird bei Ausführung von LIRC zunächst danach gesucht); damit sie von allen Benutzern verwendete werden kann, muss sie mit Root-Rechten als /etc/lircrc, ggf. auch als /etc/lirc/lircrc, abgelegt werden. Zum Steuern der Programme lassen sich verschiedene Wege wählen, hauptsächlich diese:

  • irexec ist ein LIRC-Programm, das Befehle ausführen kann;

  • liblirc_client ist eine Bibliothek, auf die Programme mit "integrierter" LIRC-Unterstützung zurückgreifen; z.B. verwendet VLC diese Bibliothek; außerdem muss oft ein Plugin installiert/aktiviert oder der LIRC-Support in den Einstellungen der Programme ermöglicht werden.

Syntax

Die .lircrc-Datei ist eine Textdatei, die in jedem Texteditor[3] erstell- und bearbeitbar ist. Der LIRC-daemon lircd liest bei jeder Betätigung einer Taste die Datei von oben nach unten aus, alle "Treffer" werden der Reihe nach ausgeführt - das ist zum Verständnis einiger Funktionen (z.B. mode oder flags) wichtig. Die Anweisungen in der Datei sind in Blöcken zusammengefasst, die jeweils mit einem begin eingeleitet und mit end abgeschlossen werden müssen, ansonsten ist eine Ausführung nicht möglich:

1
2
3
4
5
begin
  prog = irexec
  button = OK
  config = echo "So funktioniert die .lircrc"
end

Diese kurze .lircrc würde, bei entsprechender Belegung der Taste, So funktioniert die .lircrc im Terminal ausgeben; irexec zu Testzwecken dafür im Vordergrund, also ohne -d laufen lassen. Es lassen sich natürlich wesentlich komplexere Nutzungen realisieren.

Neustart

Veränderungen an der .lircrc werden erst nach einem Neustart des Lirc-Daemons wirksam, der erfolgt im Terminal mit dem Befehl

sudo systemctl restart lirc.service 

Ansonsten wird zunächst mit den alten Einstellungen weitergearbeitet.

Bestandteile der .lircrc
Zeile Erklärung
prog Das Programm, an das sich der Befehl richtet, z.B. irexec.
remote Der Name, den die Fernbedienung in der lircd.conf bekommen hat.
button Der Name, den die Taste in der lircd.conf bekommen hat.
repeat Anweisung, wie mit wiederholten Impulsen umgegangen werden soll.
delay Anweisung, nach wie vielen Impulsen ein Befehl umgesetzt werden soll.
config Der Befehl, den das Programm ausführen soll.
mode Schaltet in einen Programm-Modus, es werden die Befehle für diesen Modus ausgeführt.
flags Spezielle Anweisungen ausführen.
include Externe Dateien mit Anweisungen einbinden.
lircrcd Verschiedene Programm-Modi synchronisieren.

Kurz gesagt: Welches Programm (prog) soll was tun (config, mode, flags), wenn welche Taste der Fernbedienung (remote, button) wie lange (repeat, delay) betätigt wird.

prog

Hierüber wird das Programm angesteuert, das per Fernbedienung Anweisungen erhalten soll. Dabei ist irexec das LIRC-eigene Programm, über das sich alle Befehle, die auch in einem Terminal verwendet werden können, ausführen lassen. Außerdem lassen sich alle Programme mit eigener LIRC-Unterstützung angeben. Sonderfall sind etliche KDE-Programme, die über irexec und D-Bus-Befehle gesteuert werden (z.B. Kaffeine, Amarok).

remote

Diese Angabe ist nur nötig, wenn mehrere Fernbedienungen verwendet werden sollen; der Standardwert ist der Platzhalter "*", der aber nicht explizit angegeben werden muss. Der Name der Fernbedienung findet sich im Normalfall in der verwendeten lircd.conf. Mehr zum Sonderfall mit mehreren Fernbedienungen auf lirc.org 🇬🇧.

button

Der Name der Taste, die verwendet werden soll. Dabei muss der Name so geschrieben werden, wie er in der lircd.conf-Datei verzeichnet ist, allerdings unterscheidet lircd nicht zwischen Groß- und Kleinschreibung. Im Zweifelsfall kann über das Programm irw 🇬🇧 der jeweils verwendete Tastenname aufgerufen werden. Es lassen sich auch Tastensequenzen festlegen, in dem mehrere button-Zeilen hintereinander verwendet werden (sinnvoll, wenn z.B. ein versehentliches Ausführen eines potentiell "gefährlichen" Befehls - shutdown o.ä. - verhindert werden soll). Tastensequenzen verwenden so lange die zu Anfang genutzte Fernbedienung bis explizit eine andere angegeben wird; die remote-Anweisung muss daher immer vor den button-Anweisungen stehen. Tastensequenzen funktionieren ggf. auch dann, wenn den Tasten noch anderen Funktionen zugeordnet sind; es werden allerdings sofort auch diese Funktionen ausgeführt; die zweite/letzte Taste sollte dann aber auch (wenn nicht z.B. der Modus gewechselt wurde) zum Ausführen der "gesicherten" Anweisung führen. Eine flags = quit-Anweisung zwischen zwei button-Zeilen bleibt dabei interessanterweise wirkungslos; nach dem letzten button gesetzt funktioniert sie aber normal. In Sequenzen kann auch die selbe Taste mehrfach verwendet werden.

repeat

Diese Anweisung legt fest, was bei anhaltendem Druck auf eine Taste geschieht. Der Standard-Wert (der auch ohne Angabe verwendet wird) ist 0; er führt dazu, dass wiederholte Impulse ignoriert werden. Andere Werte (positve Ganzzahl n) führen dazu, dass die Anweisung in config jedes n-te Mal des Tastendruckes ausgeführt wird, nicht aber wie oft; das ist abhängig von der Länge des Tastendrucks! Wenn eine Dauerfunktion (wie z.B. für die Lautstärkeregelung) gewünscht wird, kann mit einer repeat-Anweisung festgelegt werden, wie schnell die Änderung vonstatten gehen soll. Ein Dauerdruck erzeugt im Normalfall eine ständige Wiederholung des Impulses, diese wird dann jedes festgelegt Mal ausgeführt. Falls trotz einer solchen Angabe keine Wiederholung des Befehls ausgeführt wird, liegt eventuell ein Problem in der Konfiguration der verwendeten lircd.conf und dem verwendeten toggle_bit_mask bzw. pre_data-Wert vor.

delay

Hier lässt sich, ebenfalls durch eine positive Ganzzahl n, festlegen, wie viele Impulse ignoriert werden, bis die in der repeat-Anweisung festgelegte Konfiguration ausgeführt wird. Standard ist ebenfalls 0, damit ist diese Funktion zunächst ausgeschaltet. Sinnvoll ist die Verwendung z.B. dann, wenn bei schneller Wiederhol-Rate der Fernbedienung (der gap-Wert in der lircd.conf steht für die Zeitspanne zwischen den Impulsen in msec) mehrfaches Senden und Ausführen von Befehlen verhindert werden soll. Die Verwendung ohne einen repeat-Wert führt dazu, dass der Befehl erst verzögert, aber dann auch nur einmal, ausgeführt wird (repeat = 0 und delay = 0-Angaben sind allerdings überflüssig, weil Standard...).

config

Hier steht der eigentliche Befehl, der von dem mit prog angesteuerten Programm ausgeführt werden soll. Es lassen sich (für irexec) in einer Zeile beliebig viele Befehle hintereinander aufreihen (getrennt durch die Zeichenfolge &&), die auf den einen Tastendruck hin ausgeführt werden sollen. Programme mit LIRC-Support lassen das allerdings nicht unbedingt zu (so z.B. VLC). Zwei (oder mehrere) hintereinander folgende config-Zeilen werden im Wechsel ausgeführt, sodass beim ersten Druck die erste, beim erneutem Druck dann die zweite config-Zeile (etc.) abgearbeitet wird; so lassen sich z.B. Play/Plause-Wechsel-Funktionen erstellen, falls sie in einem Programm nicht vorgesehen sind.

irexec kann jeden Befehl ausführen, der auch im Terminal verwendbar ist; damit lassen sich alle Programme, Skripte, oder Befehle - auch mit ggf. gewünschten Parametern - starten; z.B. kann so einem Musik-Player gleich die abzuspielende Playlist mit auf den Weg gegeben werden.

Um Zeichenfolgen zu übergeben, die nicht ohne weiteres darstellbar sind, lassen sich alle in C üblichen "escape"-Sequenzen ( wie \n = line-feed, \r = , \t = Tab ⇆ , \e = Esc , \<n> = ASCII-Code in oktaler Darstellung, \x<n> = ASCII-code in hexadezimaler Darstellung, \\ = backslash) verwenden. Auch die Strg -Taste lässt sich so darstellen : \C steht z.B. für Strg + C .

Welche Befehle für Programme mit LIRC-Support verwendet werden können, lässt sich meist in der Programmdokumentation in Erfahrung bringen oder wird in den FAQs der jeweiligen Web-Seite der Programme erklärt. Hilfreich kann auch eine Websuche nach dem gewünschten Programm und lircrc sein.

Damit Programme mit integrierter LIRC-Unterstützung, die mit einem irexec-Befehl gestartet werden, die Verwendung der Fernbedienung für andere Anwendungen nicht blockieren, sollte ans Ende der programmaufrufenden config-Zeile ein &-Zeichen gestellt werden (z.B. config = rhythmbox &). Wenn es fehlt, werden die Befehle für weitere Anwendungen solange nicht ausgeführt, wie das aktuell gesteuerte Programm läuft; diese Anweisungen werden zunächst gespeichert und dann erst nach Abschluss des laufenden Programms ausgeführt - was zu unbeabsichtigten Folgen führen kann. Wer z.B. wiederholt die Taste zum Starten eines Programms gedrückt hatte, sieht sich später mit immer neuem Starten dieses Programms konfrontiert, so oft, wie die Taste zuvor - vermeintlich wirkungslos - gedrückt worden war...

mode

Hiermit lassen sich Befehle für ein Programm oder eine Funktion zusammenfassen. Ein "Modus" wird zunächst mit einer Taste gestartet (z.B. zusammen mit dem Startaufruf eines Programms; der Wechsel in den Modus erfolgt sofort); die Konfigurationsblöcke für diesen Modus werden mit begin <Modename> und end <Modename> eingeschlossen. Damit lassen sich die Steuerbefehle für verschiedene Programme trennen und die selben Tasten in verschiedenen Programmen für unterschiedliche Funktionen verwenden, ohne dass sie sich "ins Gehege kommen". Innerhalb eines mode-Blocks lassen sich keine weiteren mode-Blöcke verschachteln; diese müssen immer außerhalb definiert werden.

Da LIRC die .lircrc grundsätzlich bei jedem Tastendruck von oben nach unten ausliest, kann es mit Modi u.U. zu ungewolltem Ausführen von Befehlen kommen. Die mode-Anweisungsblöcke werden zusätzlich dann verwendet, wenn der entsprechende Modus gestartet wurde; allerdings schließt die Verwendung einer Taste in einem Modus nicht aus, dass auch ein Befehl dieser Taste außerhalb eines Modus ausgeführt wird. Wer also z.B. die "OK"-Taste mit einer Funktion (ohne Modus) belegt hat, und die "OK"-Taste auch in einem Modus verwendet, wird feststellen, dass beide Funktionen ausgeführt werden, wenn die Taste innerhalb des Modus gedrückt wird. Die Reihenfolge ist dabei abhängig von der Position der Konfigurationsblöcke in der .lircrc. Abhilfe kann das quit-Flag schaffen; außerdem sollte man ggf. die mode-Blöcke an den Anfang der .lircrc stellen, vor die "allgemeinen" Anweisungen und vor jene, die den jeweiligen Modus aufrufen (mehr dazu siehe Die Relevanz der Reihenfolge).

Programme mit integriertem LIRC-Support lassen sich, wenn sie innerhalb einer mode-Funktion gesteuert werden sollen, anscheinend nur mit einem Modus verwenden, der den Namen des betreffenden Programms hat; sie lassen sich in anderen Modi nicht aufrufen, sondern suchen "ihren" Modus. (Wer z.B. einen mode = music erstellt und darin versucht, prog = rhythmbox-Befehle aufzurufen, dürfte keinen Erfolg haben, der Modus muss anscheinend mode = rhythmbox heißen).

Außerdem lesen Programme mit LIRC-Support beim Start die .lircrc aus und starten dann automatisch in dem Modus mit dem Namen der Anwendung, wenn dieser vorhanden ist. Ein explizites Starten des Modus ist nicht nötig, die Programme können so mit der Fernbedienung gesteuert werden wie es im Modus festgelegt ist. Das kann allerdings bei Start mehrerer Programme dazu führen, dass die Modi nicht mehr sauber getrennt werden und alle Programme gleichzeitig auf denselben Tastendruck reagieren. Eigentlich soll lircrcd das wohl verhindern; falls das nicht funktioniert, kann das Problem umgangen werden, in dem die Programme immer nur per Fernbedienung mit dem entsprechenden Modus-Eintrag gestartet werden.

Die mode-Funktion lässt sich auch ohne andere Anweisungen verwenden; so kann z.B. innerhalb eines Modus mit einem Tastendruck direkt in einen anderen Modus umgeschaltet werden; das kann sinnvoll sein, wenn zwischen zwei laufenden Anwendungen direkt umgeschaltet, oder eine Anwendung gesteuert werden soll, die zunächst nicht über die Fernbedienung gestartet wurde, deren Modus aber an den Startaufruf gekoppelt war.

Aus der offiziellen LIRC-Dokumentation 🇬🇧 noch folgendes Zitat:

Caveat: In order to avoid many identical entries all actions that modify the mode a program currently is in are independent of the prog token.

Übersetzung: "Achtung: Um eine Vielzahl gleichlautender Einträge zu vermeiden, sind alle Aktionen, die den Modus eines Programmes, in dem es sich gerade befindet, modifizieren, unabhängig von der "prog"-Anweisung."

Theoretisch soll das wohl bedeuten, dass, wenn für ein Programm der Modus geändert wird, im neuen mode-Block auf die prog-Anweisung verzichtet werden kann. In der Praxis aber lassen sich ggf. Programme mit LIRC-Support sowieso nur in dem Modus mit dem eigenen Namen steuern... Im Zweifelsfall daher weiterhin eine prog-Anweisung verwenden.

flags

Unter "flags" werden spezielle Steueranweisungen verstanden, die sich im Zusammenhang mit bestimmten anderen Anweisungen verwenden lassen. Sie werden mit "flags = <Name des flags>" aufgerufen.

Verwendbare "flags"
Name Funktion
once Nur zusammen mit einer mode-Anweisung verwendbar; bewirkt, dass der dazugehörige config-Befehl nur das erste Mal, wenn der Modus aufgerufen wird, an die entsprechende Anwendung übergeben wird - oder erst dann wieder, nachdem der Modus explizit verlassen wurde. Nutzungsmöglichkeit: Mit einem bestimmten Modus-Aufruf gleichzeitig ein Programm zu starten.
quit ⚓︎Normalerweise werden bei einem Tastendruck alle Anweisungs-Blöcke daraufhin überprüft, ob sie ausgeführt werden müssen. Mit diesem "flag" lässt sich das Ausführen weiterer Befehle, die mit der Taste verbunden sind, sofort unterbinden. Verwendung: sinnvoll, wenn nur die Funktion einer Taste innerhalb eines Modus ausgeführt werden soll, und nicht die außerhalb des Modus (dabei Reihenfolge der betroffenen Blöcke/Modi innerhalb der .lircrc beachten!). Wenn z.B. mit einer Taste ein Modus-Wechsel erfolgt, wird dieser sofort ausgeführt; ohne das quit-Flag würden dann auch weitere "Treffer", die nach dieser Anweisung in der .lircrc stehen, direkt ausgeführt.
mode Nur innerhalb eines Modus verwendbar; führt dazu, dass der aktuelle Modus verlassen wird. Dabei wird nicht in einen eventuell zuvor verwendeten Modus zurückgeschaltet, sondern es werden alle Modi beendet! Ggf. statt dessen mode = <Modename des letzten Modus> zum Wiederaufruf verwenden.
startup_mode Lässt ein Programm unmittelbar den Modus verwenden, der in einer nachfolgenden mode-Anweisung spezifiziert ist.
toggle_reset Verwendbar, wenn mehrere config- Zeilen in einem Block benutzt werden. Im Normalfall "merkt" lircd sich, welche config-Zeile ausgeführt wurde, und ruft bei weiterem Tastendruck die nächste Zeile auf. toggle-reset führt dazu, dass , wenn zwischenzeitlich (eine) andere Taste(n) verwendet wurde(n), bei erneutem Aufruf wieder der Befehl der ersten Zeile ausgeführt wird.

include

Die .lircrc-Datei kann, um bei umfangreicheren Vorhaben mit mehreren zu steuernden Programmen/Funktionen die Übersicht zu behalten, unterteilt werden; die einzelnen Dateien können dann mit include /Pfad/zur/Datei aufgerufen werden. includes werden dabei in der Reihenfolge genauso verarbeitet, wie andere Anweisungen: Trifft LIRC auf einen include-Befehl, wird zunächst die angegebene Datei (von oben nach unten) ausgelesen, um dann in der eigentlichen .lircrc weiter fortzufahren. So lassen sich Funktionen, die in allen Programmen zur Verfügung stehen sollen (z.B. Lautstärkeregelung), in einer Datei zusammenfassen, und die Steuerbefehle für die einzelnen Programme jeweils in einer entsprechend benannten Datei ablegen. Sie können dann gemeinsam, z.B. in einem Modus-Eintrag, aufgerufen werden:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
...
begin rhythmbox
include ~.lirc/volume
include ~.lirc/rhythmbox
end rhythmbox

begin vlc
include ~.lirc/volume
include ~.lirc/vlc
end vlc

lircrcd

Weiteres Zitat aus der offiziellen Dokumentation:

If you start a LIRC client program, it reads your ~/.lircrc and reacts only on prog= entries which point to itself. All programs should give you the possibility to use an alternative config file. If you have included more than one program in your .lircrc, then start all these programs, they react only to their according entries in .lircrc. This also leads to a disadvantage of the mode concept. If you don't start all client programs at a time the mode they have to maintain may differ between applications. Also key sequences might not be recognized equally because all programs then don't have the same starting point. In order to solve this problem there is the new lircrcd program since version 0.8.0. lircrcd's purpose is to synchronise all clients and maintain the current mode. In order to use the lircrcd feature you have to explicitly enable it by adding the following line at the beginning of the file:

#! lircrcd

Übersetzt:
"Wenn ein Programm mit LIRC-Support gestartet wird, liest es die ~/.lircrc-Datei aus und reagiert nur auf prog =-Einträge, die auf eben dieses verweisen. Alle Programme sollten die Möglichkeit bieten, eine alternative Konfigurations-Datei zu verwenden. Wenn in eine .lircrc-Datei mehr als ein Programm aufgenommen wurde, und dann all diese Programme starten, reagieren sie nur auf ihre entsprechenden .lircrc-Einträge. Das zeigt auch einen Nachteil des Modus-Konzeptes auf. Wenn nicht alle Programme mit LIRC-Unterstützung gleichzeitig starten, kann der Modus, den sie verwalten müssen, zwischen Anwendungen differieren. Auch könnten Tasten-Sequenzen nicht als gleiche/entsprechend erkannt werden, denn dann haben nicht alle Programme den selben Startzeitpunkt. Um dieses Problem zu lösen, existiert seit Version 0.8.0 das neue Programm lircrcd. Aufgabe von lircrcd ist es, alle Programme mit LIRC-Support zu synchronisieren, und den derzeitigen Modus zu verwalten. Um diese Funktion nutzen zu können, muss sie explizit durch Aufnahme der Zeile #! lircrcd am Anfang der .lircrc ermöglicht werden."

Christoph Bartelmus (der LIRC-Entwickler) erläutert diesen Passus folgendermaßen:

[Verwendung der .lircrc] ohne lircrcd:
Jedes Programm hat jeweils eine Variable, die heißt: mode

Da die Programme in der Regel nicht gleichzeitig gestartet werden, kann es leicht vorkommen, dass sich mode von Programm A und mode von Programm B voneinander unterscheiden. Das Verhalten ist dann nicht leicht nachvollziehbar.

Mit lircrcd:
Es gibt nur noch eine Variable mode, die von lircrcd verwaltet wird und alle Programme fragen bei lircrcd nach, wie der Inhalt von mode ist. Also sind alle im gleichen Modus, unabhängig davon wann sie gestartet wurden.

Bei der Verwendung ohne lircrcd "suchen" die Programme mit LIRC-Support ohne explizite Modus-Angabe (also wenn sie von "außerhalb" gestartet wurden) nach Einträgen in der .lircrc, aber auch in den Modus-Blöcken! Das kann dazu führen, dass bei mehreren so gestarteten Programmen ohne mode-Angabe nicht eindeutig ist, welcher Befehl ausgeführt werden soll. Ggf. werden bei Tastenbelegung für mehrere Programme die Anweisungen gleichzeitig ausgeführt, z.T. aber wird nicht unbedingt nach Reihenfolge abgearbeitet; das Verhalten wird damit unberechenbar. lircrcd soll diese "Modi" der Programme synchronisieren. Mit der Verwendung von lircrcd scheinen "außerhalb" gestartete Programme ohne Modusangabe allerdings nur auf der "Grundebene" der .lircrc nach entsprechenden prog-Anweisungen zu suchen. Wenn sich dort aber keine finden lassen, weil sie alle im entsprechenden mode-Block stehen, funktionieren die Tasten ohne einen expliziten Wechsel in den entsprechenden Modus nicht. Ggf. kann dann eine prog-Anweisung außerhalb des mode-Blocks mit einem entsprechendem Moduswechsel das Programm "auf die richtige Spur" setzen.

Die Verwendung dieser Funktion mit Rhythmbox (und auch Totem) ist dabei anscheinend fehlerhaft; prog-Anweisungen werden mit der Verwendung von #! lircrcd ggf. nicht ausgelesen/ausgeführt (siehe auch hier im Forum). Abhilfe schafft es wohl nur, auf lircrcd zu verzichten, und alle Programme immer mit einer entsprechenden mode-Anweisung mit der Fernbedienung zu starten. Dann kommt es nicht zu Problemen mit unklaren Modi (siehe Beispiele).

Die Relevanz der Reihenfolge

lircd liest die .lircrc bei jedem empfangenen Impuls von oben nach unten aus. Anweisungen in mode-Blöcken werden bei aufgerufenem Modus zusätzlich zu den "Grundbefehlen" berücksichtigt. Das hat entscheidende Auswirkungen für die Funktion der .lircrc, kann aber auch gezielt eingesetzt werden.

Zunächst ein kurzes Beispiel, bei dem das Vertauschen von Blöcken zu völlig unterschiedlichen Ergebnissen führt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
begin order
begin
    button = OK
    prog = irexec
    config = echo "Dieses wird zuletzt ausgegeben"
end
end order

begin
    button = OK
    prog = irexec
    config = echo "Dieses wird zuerst ausgegeben"
    mode = order
    flags = quit
end   

Als Ergebnis wird beim ersten Tastendruck Dieses wird zuerst ausgegeben erscheinen, beim zweiten ist der Modus gewechselt, und auch die Anweisung im order-Block erscheint. Sie steht vor der zweiten Block, also werden beide Anweisungen so ausgegeben:

Dieses wird zuletzt ausgegeben
Dieses wird zuerst ausgegeben

und ebenfalls für jeden weiteren Tastendruck. Das quit-Flag hat keinen Einfluss, da keine weitere Anweisung folgt.

Werden die Blöcke vertauscht

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
begin
    button = OK
    prog = irexec
    config = echo "Dieses wird zuerst ausgegeben"
    mode = order
    flags = quit
end
 
begin order
begin
    button = OK
    prog = irexec
    config = echo "Dieses wird zuletzt ausgegeben"
end
end order

führt dies beim ersten Tastendruck ebenfalls zu

Dieses wird zuerst ausgegeben

Allerdings wird es auch bei jedem weiteren Druck ausgegeben. Es erfolgt zwar eine Wechsel in den order-Modus, allerdings verhindert das quit-Flag die Ausführung der zweiten Funktion. Ohne quit-Flag würde beim zweiten (und jedem weiteren Tastendruck)

Dieses wird zuerst ausgegeben
Dieses wird zuletzt ausgegeben

erscheinen. Mit quit-Flag im order-Block würde ab dem zweiten Druck nur noch

Dieses wird zuerst ausgegeben

produziert; die Ausgabe der anderen Anweisung würde unterbunden.

Daher sollte man, wenn man tatsächlich die Möglichkeit haben möchte, alle Tasten - ohne Ausführung weiterer Befehle - in allen Modi zu verwenden,

  • die mode-Blöcke vor die anderen Anweisungen stellen

  • in den Anweisungen der mode-Blöcke ggf. ein quit-Flag setzen.

Allerdings kann man die Reihenfolge des Abarbeitens der .lircrc-Blöcke auch gezielt verwenden: Wer z.B. in mehreren Programm-Modi Tasten mit der selben Funktion belegen möchte (Start eines anderen Programms, Lautstärkeregelung etc.), kann für diese Befehle einen eigenen "Steuer"-Modus erstellen. Dieser muss dann in der .lircrc nach den Programm-Modi stehen; die in den Programm-Modi verwendete Taste braucht nur noch die Anweisung mode = steuermodus, womit sofort in diesen Modus gewechselt wird. Ohne quit-Flag im Programm-Modus wird dann die Anweisung umgehend im neuen Modus ausgeführt; mit einem weiteren Modus-Wechsel/flags = mode in dieser Anweisung sind ganze "Befehlsketten" realisierbar (siehe auch Beispiele).

Spezielle Programme für die .lircrc

irexec

irexec 🇬🇧 ist im lirc-Paket enthalten. irexec sendet beliebige Befehle auf der Kommandozeilen-Ebene und ermöglicht es so, alle Programme oder Befehle zu starten und zu steuern, soweit diese auch in einem Terminal bedienbar sind. Dabei greift es auf .lircrc im Homeverzeichnis zurück. Damit die Befehle umgesetzt werden, muss irexec (zunächst im Terminal) als normaler Benutzer gestartet werden:

irexec -d 

Um den Befehl nicht nach jedem Systemstart manuell aufrufen zu müssen sollte die ~/.profile die folgende Zeile enthalten:

/usr/bin/irexec -d

Möchte man das zentral für jedem Systembenutzer konfigurieren, so kann der Aufruf auch in /etc/profile hinzugefügt werden.

irexec als Debugging-Werkzeug

Um zu überprüfen, ob die .lircrc-Datei formal funktionsfähig ist, kann irexec verwendet werden. Im Terminal nicht als Hintergrund-Prozess gestartet (ohne die Option -d), liest irexec die Datei aus und meldet Syntaxfehler, wenn die Konfiguration fehlerhaft ist, also z.B. end-Einträge fehlen, oder Modi formal falsch gesetzt sind. Inwieweit allerdings "semantische" Fehler vorliegen, lässt sich so nicht feststellen. Unerwartete Ergebnisse treten - verständlicherweise - z.B. dann auf, wenn in einem Modus versehentlich die selbe Taste für verschiedene Funktionen verwendet werden soll (das ist natürlich möglich und manchmal auch sinvoll).

irxevent

irxevent befindet sich im Paket

  • lirc-x (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install lirc-x 

Oder mit apturl installieren, Link: apt://lirc-x

irxevent 🇬🇧 ist in der Lage, einzelne Tasten oder Tastenkombinationen auf dem Keyboard an bestimmte Anwendungen zu schicken. Zappte man bisher z.B. mit den Pfeiltasten auf der Tastatur durch seine Senderliste, kann das nun auch per Fernbedienung erledigt werden. Die Syntax in .lircrc unter config ist dabei: Key (d.h. es folgt eine Taste) <Name der Taste> (beschrieben unter /usr/share/doc/lirc/irxevent.keys) <Name des Programms>, als Beispiel config = Key alt-ctrl-t x-session-manager. Bei entsprechender Tastenkombination lässt sich so zum Beispiel der Zoom von Compiz ausführen. Genauere Informationen finden sich in der manpage des Programms. Damit die Befehle umgesetzt werden können, muss irxevent (zunächst im Terminal) als normaler Benutzer gestartet werden:

irxevent -d 

Auch hier gilt: Um es dann dauerhaft nutzen zu können, empfiehlt es sich, es schon beim Systemstart, z.B. durch Eintrag in die rc.local, aufzurufen.

xte

Manchmal kennt man den genauen Namen eines Programms, das aufgerufen wird, wenn man die Tastenkombination XY drückt, gar nicht. Oder man möchte die Zifferntasten in allen Anwendungen so nutzen wie den Numblock der Tastatur. Abhilfe schafft dabei das Programm xte. Mit ihm lassen sich vom Terminal aus alle Tasten des Keyboards simulieren, sodass für den Rechner kein Unterschied zwischen einem "echten" Tastendruck und dem Befehl von xte erkennbar ist. xte befindet sich im Paket

  • xautomation (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install xautomation 

Oder mit apturl installieren, Link: apt://xautomation

Um das Programm in Verbindung mit LIRC nutzen zu können, wird es in .lircrc mittels irexec gestartet. Die relevante Zeile sieht dabei folgendermaßen aus: config = xte 'key 1', oder für eine Tastenkombination: config = xte 'keydown Alt_L' 'keydown 2' 'keyup Alt_L' 'keyup 2'. Die Namen der Tasten sind in der manpage des Programms beschrieben.

Automatisches Erstellen einer .lircrc

Um automatisch eine .lircrc-Datei zu erstellen, kann das Programm mythbuntu-lirc-generator verwendet werden (gleichnamiges Paket (universe) installieren). Es generiert mit den Angaben aus der lircd.conf eine Steuerungsdatei, die bei Bedarf weiter ausgebaut werden kann. Dabei werden Konfigurationen für die Programme MythTV, Elisa, MPlayer, Totem, VLC und XINE erstellt. Es wird eine kurze .lircrc erstellt, mit include-Befehlen werden die Konfigurationen für die einzelnen Programme aus dem angelegten Ordner ~/.lirc aufgerufen (die automatisch erstellten repeat = 0 und delay = 0-Anweisungen sind so allerdings überflüssig).

Basisdateien

.lircrc

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#Custom lircrc generated via mythbuntu-lirc-generator
#All application specific lircrc files are within ~/.lirc
include ~/.lirc/mythtv 
include ~/.lirc/mplayer 
include ~/.lirc/xine 
include ~/.lirc/vlc 
include ~/.lirc/xmame 
include ~/.lirc/xmess 
include ~/.lirc/totem 
include ~/.lirc/elisa 

~/.lirc/totem

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
# LIRCRC Auto Generated by Mythbuntu Lirc Generator
# Author(s): Mario Limonciello, Nick Fox
# Created for use with Mythbuntu
begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = INFO
    config = show_playing
    repeat = 0
    delay = 0
end

begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = Play
    config = play_pause
    repeat = 0
    delay = 0
end

begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = PAUSE
    config = pause
    repeat = 0
    delay = 0
end

begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = Mute
    config = mute
    repeat = 0
    delay = 0
end

begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = Vol-
    config = volume_down
    repeat = 0
    delay = 0
end

begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = Up
    config = up
    repeat = 0
    delay = 0
end

begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = Vol+
    config = volume_up
    repeat = 0
    delay = 0
end

begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = Down
    config = down
    repeat = 0
    delay = 0
end

begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = Right
    config = right
    repeat = 0
    delay = 0
end

begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = FF
    config = seek_forward
    repeat = 0
    delay = 0
end

begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = DVD
    config = play_dvd
    repeat = 0
    delay = 0
end

begin
    remote = Terratec_Cinergy_HT_PCI_
    prog = totem
    button = Left
    config = left
    repeat = 0
    delay = 0
end

Beispiele

Als Veranschaulichung einiger Möglichkeiten eine kommentierte .lircrc, über die die Programme VLC und Rhythmbox gesteuert werden können. Ebenfalls ist die Mausbedienung per Fernbedienung vorgesehen, außerdem ist das Herunterfahren des Rechners möglich (funktioniert so allerdings nur unter GNOME). Die echo-Anweisungen in den config-Zeilen sind optional, sie geben die jeweils ausgeführte Aktion im Terminal wieder. So kann kontrolliert werden, ob die mode-Wechsel wie gewünscht vonstatten gehen (Voraussetzung: irexec wird nicht als daemon ausgeführt). Der Wechsel der Arbeitsflächen mit xte funktioniert natürlich nur, wenn die entsprechende Tastenkombinationen entsprechend eingestellt sind (siehe dazu auch im Forum).

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# Programm-Modi, Befehle werden per "include" aus einzelnen Dateien ausgelesen:
begin rhythmbox
    include ~/.lirc/rhythmbox
    include ~/.lirc/maus
end rhythmbox

begin kaffeine
    include ~/.lirc/kaffeine
end kaffeine

begin vlc
    include ~/.lirc/vlc
    include ~/.lirc/maus
end vlc

begin maus
    include ~/.lirc/maus
end maus

begin shut

# "Sicherheitstaste" um aus versehentlich aufgerufenem Herunterfahr-Modus zurückzukommen:
begin
    button = BACK
    prog = irexec
    config = echo "mode normal aus shut"
    mode = normal
end

# Tasten-Sequenz zum tatsächlichen Herunterfahren:

begin
    prog = irexec
    button = DELETE
    button = POWER
    config = gnome-power-cmd.sh shutdown
end

end shut

# Befehle des Normal-Modus:
begin normal

# Starttasten für die Programme; gleichzeitig wird in den entsprechenden Modus gewechselt und auf eine andere Arbeitsfläche geschaltet:
begin
    prog = irexec
    button = TV
    config = echo "mode kaffeine aus startup" && xte 'keydown Control_L' 'keydown Shift_L' 'keydown 4' 'keyup Control_L' 'keyup Shift_L' 'keyup 4' && kaffeine &
    mode = kaffeine
end

# VLC wird hier gleich als DVB-T-Player mit entsprechender channels.conf gestartet:
begin
    prog = irexec
    button = VIDEO
    config = echo "mode vlc aus startup" && xte 'keydown Control_L' 'keydown Shift_L' 'keydown 2' 'keyup Control_L' 'keyup Shift_L' 'keyup 2' && vlc /pfad/zur/channels.conf &
    mode = vlc
end

begin
    prog = irexec
    button = DVD
    config = echo "mode rhythmbox aus startup" && xte 'keydown Control_L' 'keydown Shift_L' 'keydown 3' 'keyup Control_L' 'keyup Shift_L' 'keyup 3' && rhythmbox &
    mode = rhythmbox
end

# Tasten zum Wechseln des Modus:

begin
    button = TEXT
    prog = irexec
    config = echo "mode maus aus mode normal"
    mode = maus
end

begin
    button = POWER
    prog = irexec
    config = echo "mode shut aus mode normal"
    mode = shut
end

# Aufruf von laufenden Programmen mit Wechsel auf entsprechend Arbeitsfläche (wird auch aus den einzelnen Modi heraus verwendet):
begin
    button = GREEN
    prog = irexec
    config = echo "mode vlc aus mode normal"&& xte 'keydown Control_L' 'keydown Shift_L' 'keydown 2' 'keyup Control_L' 'keyup Shift_L' 'keyup 2' 
    mode = vlc
end

begin
    button = RED
    prog = irexec
    config = echo "mode kaffeine aus mode normal" && xte 'keydown Control_L' 'keydown Shift_L' 'keydown 4' 'keyup Control_L' 'keyup Shift_L' 'keyup 4' &&  dcop kaffeine KaffeineIface pause 
    mode = kaffeine
end

begin
    button = YELLOW
    prog = irexec
    config = echo "mode rhythmbox aus startup" && xte 'keydown Control_L' 'keydown Shift_L' 'keydown 3' 'keyup Control_L' 'keyup Shift_L' 'keyup 3' && rhythmbox-client --no-start --play &
    mode = rhythmbox
end

end normal

# Inbetriebnahme der Fernbedienung mit der BACK-Taste:
begin
    button = BACK
    prog = irexec
    config = echo "mode normal start"
    mode = normal
end

Dazu die entsprechende ~/.lirc/vlc für ein Programm mit LIRC-Support:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
## VLC ##

begin
	prog = vlc
	button = PLAY
	config = key-play
end

begin	
        prog = vlc
	button = PAUSE
	config = key-play-pause
end

begin	
        prog = vlc
	button = STOP
	config = key-stop
end

begin       
       prog = vlc
       button = MUTE       
       config = key-vol-mute
end

begin
       prog = vlc
       button = VOLUMEDOWN       
       config = key-vol-down
       repeat = 2
       delay = 10
end

begin       
       prog = vlc
       button = VOLUMEUP       
       config = key-vol-up
       repeat = 2
       delay = 10
end

begin
        prog = vlc
	button = CHANNELUP
	config = key-next
end

begin
        prog = vlc
	button = CHANNELDOWN
	config = key-prev
end
begin	 
        prog = vlc
	button = PIC
	config = key-fullscreen
end
begin	
        prog = vlc
	button = REWIND
	config = key-slower
end
begin	
        prog = vlc
	button = FORWARD
	config = key-faster
end

# Navigation im DVD-Menü
begin	
        prog = vlc
	button = LEFT
	config = key-nav-left
end

begin	
        prog = vlc
	button = DOWN
	config = key-nav-down
end

begin	
        prog = vlc
	button = UP
	config = key-nav-up
end

begin	
        prog = vlc
	button = RIGHT
	config = key-nav-right
end

begin
      prog = vlc
      button = OK
      config = key-nav-activate
end

begin
      prog = vlc
      button = DVDMENU
      config = key-disc-menu
end

# Beenden des Programm, Rückkehr zu mode normal und Arbeitsfläche 1:
begin
      button = HOME
      prog = irexec
      config = echo "mode normal aus vlc quit" && xte 'keydown Control_L' 'keydown Shift_L' 'keydown 1' 'keyup Control_L' 'keyup Shift_L' 'keyup 1'
end

# Hier ist die HOME-Taste bewusst mit einem zweiten Befehl belegt, da es sich um verschiedene Programme handelt, die gleichzeitig bedient werden (irecex und VLC):
begin	
        prog = vlc
	button = HOME
	config = key-quit
        mode = normal
end

# Rückkehr zu mode normal, um z.B. ein weiteres Progamm per Fernbedienung starten zu können; VLC wird stummgeschaltet; gleichzeitig Wechsel auf Arbeitsfläche 1:
begin       
       prog = vlc
       button = BACK       
       config = key-vol-mute
end

begin
     button = BACK
     prog = irexec
     config = echo "mode normal aus vlc" && xte 'keydown Control_L' 'keydown Shift_L' 'keydown 1' 'keyup Control_L' 'keyup Shift_L' 'keyup 1'
     mode = normal
end

# Tasten, um zu bereits laufenden Anwendungen zu wechseln (über mode normal); VLC wird stummgeschaltet, die laufende Anwendung mit Sound/Forsetzung fortgeführt: 
begin
      prog = vlc
      button = RED
      config = key-vol-mute
      mode = normal
end

begin
      prog = vlc
      button = BLUE
      config = key-vol-mute
      mode = normal
end

begin       
       prog = vlc
       button = YELLOW       
       config = key-vol-mute
       mode = normal
end

# Lautstärke für VLC einschalten, wenn aus anderen Anwendungen in den VLC-Modus gewechselt wird (Taste länger drücken): 
begin
      prog = vlc
      button = GREEN
      config = key-vol-mute
      repeat = 1
      delay = 5
end

# Tasten, um andere Anwendungen zu starten; VLC wird stummgeschaltet, Aufruf über mode normal:
begin       
       prog = vlc
       button = TV       
       config = key-vol-mute
       mode = normal
end

begin       
       prog = vlc
       button = MUSIC       
       config = key-vol-mute
       mode = normal
end

begin
      prog = vlc
      button = DVD
      config = key-vol-mute
      mode = normal
end

Hinweis:

Unter KDE4 ist eine Steurung so nicht mehr möglich. Die Steuerung erfolgt mit D-Bus-Aufrufe, siehe Kaffeine - Fernbedienung. Die Grundfunktionen lassen sich bei laufendem Kaffeine-Programm mit

qdbus org.kde.kaffeine /Player  

ausgeben.

Programme beenden

Um Programme zu bedienen, die keinen "eigenen" Befehl zum Beenden haben, kann folgendes Skript von bulderbacke per Tastendruck gestartet werden:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash

# von http://xbmc.org/forum/showthread.php?s=a6f0736b696c88149143ce0077b2a448&t=30230

export USER=<dein_User>
export LOG=/tmp/irscript-<zu steuerndes Programm>_restart.log

# Test to see if <zu steuerndes Programm> is still running
if [ -n "$(pidof <zu steuerndes Programm>)" ] ;
then
# Send gentle kill signal
killall <zu steuerndes Programm>
echo `date` "Killed <zu steuerndes Programm>! (soft)" >> $LOG

# takes a second or two to die with the soft kill
sleep 2

# still running? Send hard kill signal
if [ -n "$(pidof <zu steuerndes Programm>)" ] ;
then
# If it's still around, kill it -9
killall -9 <zu steuerndes Programm> ;
echo `date` "Killed <zu steuerndes Programm>! (hard)" >> $LOG
fi
else
echo `date` "Starting <zu steuerndes Programm>" >> $LOG
<zu steuerndes Programm> --lirc --fullscreen;
fi &

Skript herunterladen und ausführbar machen, <zu steuerndes Programm> durch den gewünschten Programmnamen ersetzen und unter einem aussagekräftigen Namen abspeichern (z.B. als start-stop-<zu steuerndes Programm>.sh). Das Skript versucht zunächst, das Programm "einfach" zu beenden und überprüft dann, ob es geklappt hat. Wenn nicht, kommt ein "härterer" killall-Befehl zum Einsatz. Wenn es zuvor nicht lief, wird das Programm gestartet - wenn möglich mit LIRC-Support und im Fullscreen-Modus. Da ganze wird dann noch in einem Log (/tmp/irscript-<zu steuerndes Programm>_restart.log) mitgeschnitten.

Eine Anweisung in der .lircrc zum Aufruf könnte so aussehen:

1
2
3
4
5
begin
        prog   = irexec
        button = HOME
        config = /Pfad/zum/Script/start-stop-<zu steuerndes Programm>.sh
end

Maus per Fernbedienung steuern

Mit xte ist es sehr einfach, auch die Maus-Funktionen per Fernbedienung zu steuern; hier eine .lircrc-Beispielkonfiguration, in der der Ziffernblock der Fernbedienung zur Navigation verwendet wird, die linke Maustaste wird mit 5, die rechte Maustaste mit 0 "geklickt".

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#Maussteuerung per xte

begin
    prog = irexec
    button = 2
    config = xte  'mousermove 0 -15'
    repeat = 1
end

begin
    prog = irexec
    button = 3
    config = xte  'mousermove 15 -15'
    repeat = 1
end

begin
    prog = irexec
    button = 1
    config = xte  'mousermove -15 -15'
    repeat = 1
end

begin
    prog = irexec
    button = 8
    config = xte  'mousermove 0 15'
    repeat = 1
end

begin
    prog = irexec
    button = 7
    config = xte  'mousermove -15 15'
    repeat = 1
end

begin
    prog = irexec
    button = 9
    config = xte  'mousermove 15 15'
    repeat = 1
end

begin
    prog = irexec

    button = 4
    config = xte  'mousermove -15 0'
    repeat = 1
end

begin
    prog = irexec
    button = 6
    config = xte  'mousermove 15 0'
    repeat = 1
end

begin
    prog = irexec
    button = 5
    config = xte  'mouseclick 1' 
end

begin
    prog = irexec
    button = 0
    config = xte  'mouseclick 2' 
end

Diese Revision wurde am 3. November 2022 10:15 von DJKUhpisse erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Kommunikation, Multimedia