Keymap.xml

Aus Gemini-Wiki
Version vom 9. März 2009, 08:08 Uhr von Shadowrider (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Fernbedienung / Keymap:

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, das die gelbe Taste die Funktion pause auslösen soll.
flags="m" bestimmt, welche Art von Tastenbetätigung der Auslöser ist,
dabei entspricht: m = Taste normal drücken / l = Taste lange drücken / b = ???

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