Keymap.xml: Unterschied zwischen den Versionen

Aus Gemini-Wiki
Zur Navigation springen Zur Suche springen
K (Keymap und Fernbedienung wurde nach Keymap.xml verschoben)
Zeile 1: Zeile 1:
 
[[Kategorie:Index]]
 
[[Kategorie:Index]]
 
[[Kategorie:FAQ und Anleitungen]]
 
[[Kategorie:FAQ und Anleitungen]]
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 '''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:<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, dass 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:<br><br>
+
**m = make -> Taste normal gedrückt
'''m''' = make -> Taste normal gedrückt<br>
+
**l = long -> Taste lange gedrückt
'''l''' = long -> Taste lange gedrückt<br>
+
**b = break -> Taste losgelassen
'''b''' = break -> Taste losgelassen<br>
+
**r = repeat -> Taste festgehalten
'''r''' = repeat -> Taste festgehalten<br><br>
+
 
"m" kommt einmal, sobald die Taste gedrückt wurde<br>
+
*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<br>
+
*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)<br>
+
*l kommt nachdem 5 repeats kamen, aber nur exakt einmal (repeat kommt dann trotzdem weiter)
"b" kommt nachdem man die Taste losgelassen hat.<br>
+
*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 ''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]]'''

Version vom 9. Oktober 2012, 22:54 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