Kurz zusammengefasst geht es um die Tücken des Weges irmplircd bzw lircd → lircd2uinput → /dev/input/eventX → eventlircd → Anwendung.
Bislang gab es bei mir nur den direkten Weg irmplircd → Anwendung, und das funktioniert wie es soll. Für OpenELEC habe ich mich mit dem yaVDR-„Umweg“, der ja von vielen übernommen wurde, auseinandergesetzt.
/dev/input/eventX arbeitet mit KeyDown und KeyUp. Bei den Fernbedienungen gibt es aber keine KeyUp-Entsprechung (auch das toggle-bit kommt ja erst beim nächsten Knopfdruck). Da eventX solange bis das KeyUp kommt Signale abfeuert, wird in lircd2uinput (yaVDR) bzw. lircd-uinput (OpenELEC) nach einem timeout ein KeyUp automatisch erzeugt.
Das führt zu einem Problem. Nehmen wir an, dass die Fernbedienung bei gedrückt gehaltener Taste alle repeat_period Millisekunden feuert.
Fall A: Falls timeout > repeat_period gibt es einen Nachlauf, und in eventX werden eventuell ein oder mehrere Knopfdrücke zu viel erzeugt.
In einem Menu läuft der Cursor dann weiter, obwohl der Finger schon vom Knopf ist.
Fall B: Falls timeout < repeat_period läuft weniger bis nichts nach, aber es wird jedes Mal ein neuer Knopfdruck erzeugt, obwohl es noch derselbe ist. Kodi verhält sich aber teilweise bei neuem Knopfdruck anders als bei wiederholtem Knopfdruck.
Den Fall timeout = repeat_period gibt es nicht, da die Signale, die von der Fernbedienung kommen, nie ganz regelmäßig kommen, und die Intervalle mal etwas kürzer und mal etwas länger sind.
Gibt es eine Lösung für dieses Problem?
Bei meinem ersten OpenELEC Versuch habe ich das Problem dadurch umgangen, dass ich Kodi direkt an irmplircd gehängt habe, und das könnte man auf yaVDR auch so tun. Hat das ungünstige Nebenwirkungen?
Spräche etwas dagegen, dass wenn ein irmplircd-Paket installiert wird, automatisch eventlircd gestoppt wird und statt dessen irmplircd auf /var/run/lirc/lircd ausgibt (also da, wo vorher eventlircd ausgegeben hat)?
Würde das gehen, solange IRMP der einzige IR-Empfänger ist?
Im Prinzip wäre es auch möglich, durch geschickt gewählte Werte von delay und repeat in eventX den Nachlauf klein zu halten. Das hängt aber von der Fernbedienung ab und müßte individuell eingestellt werden.