PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Menue-Macros



MartinO
14.07.2005, 10:16:55
Hallo,

ich habe eine Idee für eine Bedienfunktions-Erweiterung, deren Reiz auch darin liegt, dass es möglich sein müsste sie auch ohne Siemens zu implementieren.

Die Idee: ich muss bestimmte Aktionen (z.B. 4:3 / 16:9 Umschaltung) immer wieder ausführen, die tief in den Menues verborgen liegen. Andere mögen andere Bedürfnisse haben (z.B. ein bestimmtes Verzeichnis im Media-Locator anwählen) . Aus diesem Grund wäre es nett, man könnte individuelle Macros-Programmieren. Ich würde vorschlagen, die Farb-Tasten im Grund-Menue damit frei belegen zu können, denn da kommt man schnell hin, und diese sind bislang nicht belegt. Dann hätte man 4 Shortcuts, die man normalerweise mit nur zwei Tastendrücken anwählen kann: <Menu>, <Farbtaste>.

Die Programmierung könnte mit einer Taste erfolgen, die in den meisten Menues nicht belegt ist. Z.B. <Stop>.

Die Programmierung sähe dann wie folgt aus: <Exit> (für den definierten Anfangszustand), <Menu>, <Cursor-Tasten> und <ok> nach Bedarf, <Stop>, <Farbtaste>. Die Funktion muss sich dann die <Curser-Tasten>- und <OK>-Drücke zwischen <Menue> und <Stop> merken.

Ich denke dies ließe sich bereits jetzt ohne Siemens-Hilfe implementieren, mit nur kleinen Einschränkungen. Und zwar mittels eines Scripts, welches Ausgaben von lircd liest und zur Makro-Ausführung Kommandos an lircd zurückschickt. (wie das PHP-Skript zur Timer-Programmierung).

Zu den Einschränkungen:

* Es dürfte schwer sein, zu ermitteln wann man wirklich im Grund-Menu ist. Denn war man da vorher, beenden <Menue> dieses ja statt es aufzurufen. Aber ich denke, da könnte man eine Lösung finden, z.B. mittels Time-Out. Nach <Exit> ist die Sache klar, aber wenn man sich darauf verläßt, dann könnte man die Macros nicht beim Abspielen einer Aufnahme aufrufen ohne diese abzubrechen, was unschön wäre. Ausserdem wären dann drei statt zwei Tastendrücke nötig.

* Ferner kann sich die Bedeutung des Macros bei dynamischen Menues ändern, wie der Datei-Struktur im Media-Locator, oder bei dem Aufnahme-Ordner. Ein Macro, dass einem immer die letzte heute-Sendung aufruft, ist so nicht möglich.

Dennoch glaube ich, dass es vielen eine Hilfe wäre. Wie seht Ihr das?

Ich würde es irgendwann selbst programmieren, aber z.Z. fehlt mir eine einfache Voraussetzung, nächmlich ein passendes Anschlußkabel ans Ethernet :-(. OK, faule Ausrede, aber ich dachte, vielleicht geht's schneller, wenn ein anderer die Idee aufgreift? Interesse?

Eine andere Anwendung wäre übrigens der (dann aber fest verdrahtete) Aufruf von selbst-geschriebenen Skripten auf der Box, ohne ext. Rechner und Telnet.

Gruß, Martin

api
14.07.2005, 10:46:39
ich habe eine Idee für eine Bedienfunktions-Erweiterung,

Mit lircd kontextabhängig bisher funktionslose Tasten abfangen und mit eigenen Funktionen belegen, welche ebenfalls mit lircd die Box steuern. Die Idee hat was.

Man könnte sogar gewisse Funktionen erweitern, also z.B. nach der Senderwahl mit lircd ein Info-Kommando hinterherschicken.

Das sollte prinzipiell mit den uns zur Verfügung stehenden Mitteln zu machen sein. (Also insbesondere ohne Änderungen in der Wavebox.) Es würde dabei ja lediglich lircd bemüht.

Das Problem wird, wie Du schon sagtest, die sichere Erkennung des Kontextes sein.

Lemmi
14.07.2005, 15:12:02
Mit lircd kontextabhängig bisher funktionslose Tasten abfangen und mit eigenen Funktionen belegen, welche ebenfalls mit lircd die Box steuern. Die Idee hat was.

Man könnte sogar gewisse Funktionen erweitern, also z.B. nach der Senderwahl mit lircd ein Info-Kommando hinterherschicken.

Das sollte prinzipiell mit den uns zur Verfügung stehenden Mitteln zu machen sein. (Also insbesondere ohne Änderungen in der Wavebox.) Es würde dabei ja lediglich lircd bemüht.

Das Problem wird, wie Du schon sagtest, die sichere Erkennung des Kontextes sein.
Hier hilft evtl. das gleichzeitige Mitlesen des wavebox-Ausgabe via Port 10001.

MartinO
19.07.2005, 21:37:35
Ich habe nun eine einfache Version erstellt. Eine Kontexterkennung nach Lemmis Vorschlag ist nicht enthalten, da ich es zunächst vermeiden wollte, zwei TCP Streams gleichzeitig auszuwerten. Stattdessen habe ich mit lircd.conf die Taste "HELP" (<?>) zu "MACRO" umdefinert. (Die Hilfe-Texte finde ich eh recht zweckfrei). Der Benutzer sollte diese Taste nur aufrufen, wenn er sich außerhalb von Menus befindet, sonst kann es unvorhergesehene Effekte geben. Auch die Aufzeichung von Makros läuft etwas anders als im ersten Beitrag beschrieben ab.

Sobald das Skript die Taste "MACRO" <?> erkennt, sendet es sofort das "MENU"-Kommando über lircd an die Wavebox. Gleichzeitig wechselt es in einen Zustand, in dem es Befehle erkennt. Die Farb-Tasten <ROT>, <GRÜN>, <GELB> und <BLAU>, und alle Ziffern-Tasten <0>-<9> rufen bereits definierte Makros auf. Nicht existierende Makros werden ignoriert, bzw. die Fehlermeldung landet im Nirvarna. Danach ist das Skript wieder im Ausgangzustand, wartet also auf die nächste Betätigung von "MACRO".

Betätigt man stattdessen nach "MACRO" die Taste "STOP", die treffenderweise ja auch die Bedeutung "Aufnehmen" hat, so startet die Makro-Aufzeichung. Es können beliebige Kombination der Cursor-Tasten und <OK> aufgezeichnet werden. Die Aufzeichung wird beendet mit einer der obengenannten Farb- oder Ziffern-Tasten. Unter dieser wird dann das Makro gespeichert, zum späteren Aufruf wie oben beschrieben. Drückt man stattdessen eine andere Taste , wird die Aufzeichung ergebnislos abgebrochen. Das Skript ist in beiden Fällen danach wieder im Ausgangszustand.

Zur Installation: Wer keine Admin-Erfahrung unter Linux hat, dem rate ich zu warten bis dies vielleicht mal in eine Firmware-Fassung integriert wurde.

So wie es ist kann das Skript auf der Box in /var/etc gespeichert werden. Nach Anpassung der ersten Zeilen könnte es auch testweise auf einem Linux-Rechner gestartet werden, der mit der Box über das Netz verbunden ist.

Auf jeden Fall muss aber auf der Box ein modifiziertes lircd.conf installiert werden, wie im Wiki beschrieben. rc.local ist ein guter Ort, um das macro-control.sh Skript aufzurufen.

Das Archiv enthält noch vier Beispiel-Makro, die die Status-Anzeige, das TV/Bildformat-Menue, sowie die Timer- und Aufnahmen-Ordner aufrufen (letzeres ist im Wiedergabe-Betrieb hilfreich).

Wer das Skript editiert, kann auch andere Skripte/Befehle auf der Box aufrufen, z.B. um EPG-Dateien zu löschen.

Viel Spaß wünscht Martin