Keymap.xml: Unterschied zwischen den Versionen

Aus Gemini-Wiki
Zur Navigation springen Zur Suche springen
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Index]]
+
[[Kategorie:Fernbedienung]]
[[Kategorie:FAQ und Anleitungen]]
+
[[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.<br>
+
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:<br><br>
+
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>
+
*key id="KEY_YELLOW": entspricht der gelben Taste auf der Fernbedienung. Die Tastencodes sind in Enigma festgelegt.<br>
'''''mapto="pause"''''' bestimmt, das die gelbe Taste die Funktion ''pause'' auslösen soll.<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,<br>
+
*flags="m": bestimmt, welche Art von Tastenbetätigung der Auslöser ist:
dabei entspricht:
+
**m = make -> Taste normal gedrückt
'''m''' = Taste normal drücken / '''l''' = Taste lange drücken / '''b''' = ???<br><br>
+
**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>
 +
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>
  
 
Unser eigenes Beispiel sieht nun also so aus:
 
Unser eigenes Beispiel sieht nun also so aus:
Zeile 53: 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 ''erstes'', wird die gelbe Taste lange gedrückt startet ''zweites''
+
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''
 
 
 
 
'''Bildliche Anzeige von Tastencode / keycode findest du [[Keycode|hier klicken]]'''
 
 
 
  
'''Zurück zur Übersicht:[[Gemini-Wiki:Portal]] oder [[Hauptseite]]'''
+
==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

Siehe auch