Wenn für eine Fernbedienungstaste eine Funktion für langen und normalen Tastendruck definiert ist, kommt es - vor allem wenn die auszuführende Aktivität des langen Tastendrucks nur kurz dauert - dazu, dass die für normalen Tastendruck vorgesehene Funktion nach dem langen Tastendruck ebenfalls aufgerufen wird.
In der keymap sind das die flags 'l' und 'b'.
Von Programmierern wird das meist in der Programmroutine abgefangen, was aber etwas mühsam ist.
Das Plugin KeymapAdaption verhindert, dass die mit flag 'b' definierte Funktion nach Durchführung der mit flag 'l' definierten Funktion ausgeführt wird.
Zusätzlich kann man einstellen, dass ein langer Tastendruck und/oder die Wiederholungsfunktion für die Tasten generell verhindert werden.
Standardmässig wird die Priorität auf -10 gesetzt (Eingabe = 10). Das verhindert in allen wesentlichen keymaps - die üblicherweise mit Priorität 1 bis -4 abgearbeitet werden - die Ausführung der mit flag 'b' definierten Funktion nach einem langen Tastendruck. Mir bekannte Ausnahmen sind die Plugins ShootYourScreen und GrannyButton, die mit maximaler Priorität -7FFFFFFF(hex) arbeiten. Wenn man diese übersteuern möchte muss man die Priorität in KeymapAdaption ebenfalls auf den Maximalwert stellen.
Für Plugin-Entwickler:
Diese Funktion sollte eigentlich im VTI integriert werden. Wenn man diese als Entwickler in seinen Programmen anwenden will muss man gleichzeitig dafür Sorge tragen, dass das Plugin installiert und aktiviert ist.
Temporär (bis zum nächsten Restart oder Ausführung des Setups für das Plugin) kann man bei installiertem Plugin die Funktionen auch mit folgenden config-Parametern steuern:
config.plugins.KeymapAdaption.activate_
config.plugins.KeymapAdaption.stopLong_
config.plugins.KeymapAdaption.stopRepeated_
Achtung auf den Unterstrich! True = aktiviert, False = deaktiviert, wobei die letzten beiden jedenfalls deaktiviert sind, wenn ...activate_ nicht aktiviert ist.
Wichtig ist, dass das Plugin nur 1 x installiert wird - also nicht in anderen Plugins importieren und ausführen, weil jedesmal eine weitere Key-Abfrageroutine angelegt werden würde und irgendwann das System in die Knie geht.
Eigentlich würde das Plugins zu den SystemPlugins gehören. Ich stelle es jetzt mal als Extension ein.
Falls es positive Rückmeldungen gibt werde ich die dahinterliegende Funktion beim VTI-Team zur Implementierung in zukünftigen VTI-Versionen vorschlagen.
PS:
Manchmal lässt sich das eingangs beschriebene Problem auch lösen, wenn man in der keymap für die Taste einen zusätzlichen Eintrag mit flag 'm' macht und mit diesem im Programm eine Funktion aufruft, die einfach nichts macht (pass oder return). Warum das so ist habe ich nicht herausgefunden, das dürfte eigentlich nicht funktionieren. Vielleicht ist ja irgendwo definiert, dass drei Funktionen mit einem Tastendruck nicht zulässig sind.
In der keymap sind das die flags 'l' und 'b'.
Von Programmierern wird das meist in der Programmroutine abgefangen, was aber etwas mühsam ist.
Das Plugin KeymapAdaption verhindert, dass die mit flag 'b' definierte Funktion nach Durchführung der mit flag 'l' definierten Funktion ausgeführt wird.
Zusätzlich kann man einstellen, dass ein langer Tastendruck und/oder die Wiederholungsfunktion für die Tasten generell verhindert werden.
Standardmässig wird die Priorität auf -10 gesetzt (Eingabe = 10). Das verhindert in allen wesentlichen keymaps - die üblicherweise mit Priorität 1 bis -4 abgearbeitet werden - die Ausführung der mit flag 'b' definierten Funktion nach einem langen Tastendruck. Mir bekannte Ausnahmen sind die Plugins ShootYourScreen und GrannyButton, die mit maximaler Priorität -7FFFFFFF(hex) arbeiten. Wenn man diese übersteuern möchte muss man die Priorität in KeymapAdaption ebenfalls auf den Maximalwert stellen.
Für Plugin-Entwickler:
Diese Funktion sollte eigentlich im VTI integriert werden. Wenn man diese als Entwickler in seinen Programmen anwenden will muss man gleichzeitig dafür Sorge tragen, dass das Plugin installiert und aktiviert ist.
Temporär (bis zum nächsten Restart oder Ausführung des Setups für das Plugin) kann man bei installiertem Plugin die Funktionen auch mit folgenden config-Parametern steuern:
config.plugins.KeymapAdaption.activate_
config.plugins.KeymapAdaption.stopLong_
config.plugins.KeymapAdaption.stopRepeated_
Achtung auf den Unterstrich! True = aktiviert, False = deaktiviert, wobei die letzten beiden jedenfalls deaktiviert sind, wenn ...activate_ nicht aktiviert ist.
Wichtig ist, dass das Plugin nur 1 x installiert wird - also nicht in anderen Plugins importieren und ausführen, weil jedesmal eine weitere Key-Abfrageroutine angelegt werden würde und irgendwann das System in die Knie geht.
Eigentlich würde das Plugins zu den SystemPlugins gehören. Ich stelle es jetzt mal als Extension ein.
Falls es positive Rückmeldungen gibt werde ich die dahinterliegende Funktion beim VTI-Team zur Implementierung in zukünftigen VTI-Versionen vorschlagen.
PS:
Manchmal lässt sich das eingangs beschriebene Problem auch lösen, wenn man in der keymap für die Taste einen zusätzlichen Eintrag mit flag 'm' macht und mit diesem im Programm eine Funktion aufruft, die einfach nichts macht (pass oder return). Warum das so ist habe ich nicht herausgefunden, das dürfte eigentlich nicht funktionieren. Vielleicht ist ja irgendwo definiert, dass drei Funktionen mit einem Tastendruck nicht zulässig sind.
Skin: Nemesis FHD (mit vielen eigenen Skinparts), MyEPG, EMC, OScam 1.20 rev.11682, ORF-Karte, MCC MovieCutCenter
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von WeFraJo ()