Keymap.xml: Unterschied zwischen den Versionen
K (Keymap und Fernbedienung wurde nach Keymap.xml verschoben) |
|||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | [[Kategorie: | + | [[Kategorie:Fernbedienung]] |
− | [[Kategorie: | + | [[Kategorie:Konfigurationsdatei]] |
− | Die ''keymap.xml'' ist die Datei, in welcher z.B. für Plugins festgelegt wird, welcher Actions-Name beim Druck auf eine bestimmte Taste ausgelöst wird. | + | Die '''<code>keymap.xml</code>''' ist die Datei, in welcher z.B. für Plugins festgelegt wird, welcher Actions-Name beim Druck auf eine bestimmte Taste ausgelöst wird. |
− | Beim Öffnen der keymap.xml sind Blöcke zu erkennen, welche sich immer in ähnlicher Form wiederholen: | + | Beim Öffnen der <code>keymap.xml</code> sind Blöcke zu erkennen, welche sich immer in ähnlicher Form wiederholen: |
+ | |||
<map context="MediaPlayerActions"> | <map context="MediaPlayerActions"> | ||
<device name="dreambox remote control (native)"> | <device name="dreambox remote control (native)"> | ||
Zeile 25: | Zeile 26: | ||
Danach werden die einzelnen Tasten definiert. Im obigen Beispiel also: | Danach werden die einzelnen Tasten definiert. Im obigen Beispiel also: | ||
<key id="KEY_YELLOW" mapto="pause" flags="m" /> | <key id="KEY_YELLOW" mapto="pause" flags="m" /> | ||
− | + | *key id="KEY_YELLOW": entspricht der gelben Taste auf der Fernbedienung. Die Tastencodes sind in Enigma festgelegt.<br> | |
− | + | *mapto="pause": bestimmt, dass die gelbe Taste die Funktion ''pause'' auslösen soll.<br> | |
− | + | *flags="m": bestimmt, welche Art von Tastenbetätigung der Auslöser ist: | |
− | + | **m = make -> Taste normal gedrückt | |
− | + | **l = long -> Taste lange gedrückt | |
− | + | **b = break -> Taste losgelassen | |
− | + | **r = repeat -> Taste festgehalten | |
− | + | ||
− | + | *m kommt einmal, sobald die Taste gedrückt wurde | |
− | + | *r kommt dann nach "m", wenn man die Taste festhält; und das solange, bis man die Taste loslässt | |
− | + | *l kommt nachdem 5 repeats kamen, aber nur exakt einmal (repeat kommt dann trotzdem weiter) | |
− | + | *b kommt nachdem man die Taste losgelassen hat. | |
− | Auch in Kombination möglich, z. B.flags="mr"<br><br> | + | Auch in Kombination möglich, z. B. flags="mr"<br><br> |
Wenn man z. B. ein Fenster mit "m" öffnet, kann man im selben Kontext r/l/b für diese Taste nicht mehr benutzen. Deshalb muss man dann halt das Fenster erst auf "b" öffnen. | Wenn man z. B. ein Fenster mit "m" öffnet, kann man im selben Kontext r/l/b für diese Taste nicht mehr benutzen. Deshalb muss man dann halt das Fenster erst auf "b" öffnen. | ||
<br><br> | <br><br> | ||
Zeile 63: | Zeile 64: | ||
mache dies und das | mache dies und das | ||
− | Jetzt ist also folgendes gemacht worden: Ein normales Drücken auf die gelbe Taste startet den Programmabschnitt '' | + | Jetzt ist also folgendes gemacht worden: Ein normales Drücken auf die gelbe Taste startet den Programmabschnitt ''Erstes'', wird die gelbe Taste lange gedrückt, startet ''Zweites'' |
− | |||
− | |||
− | |||
− | |||
− | + | ==Siehe auch== | |
+ | *[[Keycode]]''' |
Aktuelle Version vom 10. Oktober 2012, 22:07 Uhr
Die keymap.xml
ist die Datei, in welcher z.B. für Plugins festgelegt wird, welcher Actions-Name beim Druck auf eine bestimmte Taste ausgelöst wird.
Beim Öffnen der keymap.xml
sind Blöcke zu erkennen, welche sich immer in ähnlicher Form wiederholen:
<map context="MediaPlayerActions"> <device name="dreambox remote control (native)"> <key id="KEY_YELLOW" mapto="pause" flags="m" /> <key id="KEY_GREEN" mapto="play" flags="m" /> <key id="KEY_TV" mapto="stop" flags="b" /> <key id="KEY_TV" mapto="shift_stop" flags="l" /> <key id="KEY_RADIO" mapto="shift_record" flags="l" /> <key id="KEY_PREVIOUS" mapto="previous" flags="m" /> <key id="KEY_NEXT" mapto="next" flags="m" /> </device> </map>
Die erste Zeile bestimmt einen eigenen Namen, der sich nicht wiederholen darf.
<map context="meinPluginActions">
In der zweiten Zeile wird das Gerät bestimmt, von welchem die Tasten-Aktion erwartet wird, das kann die Fernbedienung, erweiterte Fernbedienung, Tastatur sein. Hier mal die drei genannten:
<device name="dreambox remote control (native)"> <device name="dreambox advanced remote control (native)"> <device name="dreambox ir keyboard">
Danach werden die einzelnen Tasten definiert. Im obigen Beispiel also:
<key id="KEY_YELLOW" mapto="pause" flags="m" />
- key id="KEY_YELLOW": entspricht der gelben Taste auf der Fernbedienung. Die Tastencodes sind in Enigma festgelegt.
- mapto="pause": bestimmt, dass die gelbe Taste die Funktion pause auslösen soll.
- flags="m": bestimmt, welche Art von Tastenbetätigung der Auslöser ist:
- m = make -> Taste normal gedrückt
- l = long -> Taste lange gedrückt
- b = break -> Taste losgelassen
- r = repeat -> Taste festgehalten
- m kommt einmal, sobald die Taste gedrückt wurde
- r kommt dann nach "m", wenn man die Taste festhält; und das solange, bis man die Taste loslässt
- l kommt nachdem 5 repeats kamen, aber nur exakt einmal (repeat kommt dann trotzdem weiter)
- b kommt nachdem man die Taste losgelassen hat.
Auch in Kombination möglich, z. B. flags="mr"
Wenn man z. B. ein Fenster mit "m" öffnet, kann man im selben Kontext r/l/b für diese Taste nicht mehr benutzen. Deshalb muss man dann halt das Fenster erst auf "b" öffnen.
Unser eigenes Beispiel sieht nun also so aus:
<map context="meinPluginActions"> <device name="dreambox remote control (native)"> <key id="KEY_YELLOW" mapto="action1" flags="m" /> <key id="KEY_YELLOW" mapto="action2" flags="l" /> </device> </map>
Um die Funktionen der Standard-Tastenbelegung und die hier festgelegte Tastenbelegung zu aktivieren, muss dann im Programm ein Import erfolgen, welcher etwa so aussieht:
from Components.ActionMap import NumberActionMap, ActionMap
Desweiteren werden dann die Tasten im Programm den einzelnen Funktionen zugeordnet:
self["actions"] = ActionMap(["meinPluginActions"], { "action1": self.erstes, "action2": self.zweites, }, -1)
Selbstverständlich muss auch der dazu passende Code-Abschnitt angelegt werden, damit etwas ausgeführt wird:
def erstes(self): mache dies und das def zweites(self): mache dies und das
Jetzt ist also folgendes gemacht worden: Ein normales Drücken auf die gelbe Taste startet den Programmabschnitt Erstes, wird die gelbe Taste lange gedrückt, startet Zweites