Tastaturcodes / Events

  • Hallo,
    gibt es irgendwo eine Dokumentation, wie z.B. in der keymap.xml die Tasten benamst sind, welche überhaupt verfügbar sind und wie die aufrufbaren Events heissen, ebenso die Erklärung der Sachen wie "b", "m"......


    Überall sind nur Fragmente zu finden, eine Komplettübersicht wird nirgends gegeben.


    Für einen Link oder ein Dokument bin ich dankbar.

    ---
    Gruß aus Franken
    Peter


    [size=10]DM500HD(S2), 1 x Rotor USALS (Kathrein CAS 90 und UAS 484)
    DM8000S2x4, 3 x DiseqC 1.0 mit 13,19,23 und 28 Ost mit Technisat Multi 90 cm, 1 x Rotor HH-100 Stab USALS (Kathrein CAS 90 und UAS 484)
    DM 7080 aktuell Multischalter DiseqC 13,19,23,28

  • Wie die Tasten benannt sind kann ich dir nicht sagen, aber die typischen flags m,b,l kann ich erklären...


    m: make -> Taste wird gedrückt
    b: break -> Taste wird losgelaßen
    l: long -> Taste wird lange gedrückt

    Homescreen eurer Apple-Geräte noch nicht voll genug?


    dreaMote: Fernbedienung für Dreamboxen
    Mobile WOL: Wake-on-LAN Client für iOS mit optionalem Widget
    My Home Remote: Fernkontrolle für Homematic CCU/CCU2 optimiert für mobile Benutzung

  • Hi,


    in der /usr/lib/enigma2/python/Tools/NumericalTextInput.py steht vieleicht auch was für Dich.

    1x DreamBox 7025+ DVB-SS | 1x DreamBox 7025 DVB-SS | 1x DreamBox 500 DVB-S | LE-40F86BD | Synology DS107+ | Schwaiger 100er-Alu | Goldedition Quatro 0,3 dB | Kathrein EXR 508/T

  • Eigentlich meinte ich eine richtige Dokumentation und nicht das Auslesen diverser Quellcodes um sich so das Ganze mühsam zusammenzusuchen.


    Ich möchte eigenlich nur die Keymap.xml nach meinen eigenen Bedürfnissen anpassen, da es momentan keine wirklich befriedigende Lösung für die Neutrino-Belegung gibt, daher meine Suche....

    ---
    Gruß aus Franken
    Peter


    [size=10]DM500HD(S2), 1 x Rotor USALS (Kathrein CAS 90 und UAS 484)
    DM8000S2x4, 3 x DiseqC 1.0 mit 13,19,23 und 28 Ost mit Technisat Multi 90 cm, 1 x Rotor HH-100 Stab USALS (Kathrein CAS 90 und UAS 484)
    DM 7080 aktuell Multischalter DiseqC 13,19,23,28

  • Hi peter999,


    du bist nicht der einzige und ich hoffe mit dir, dass jemand dir und damit hoffentlich auch mir einen Hinweis gibt wie die Sache in/mit der keymap.xml aufgebaut ist. Meine Anpassungen die ich in Pauli gebracht habe sind mühsam durch "try and error" entstanden und wie man an dir aber auch anderen sieht, nicht für jedermann perfekt.


    Uns würden ja Informationen reichen, niemand muss uns eine Routine schreiben mit der wir uns das FB-Layout selber anpassen könnten.



    romeo-golf


    PS: wäre schön wenn du deine Kenntnisse teilen würdest

  • Hallo Romeo-Golf


    exakt so ist es. Das mit dem Teilen ist überhaupt kein Problem. Wie gesagt, mir fehlen einfach einige Event-Namen, und natürlich die Tastatur-Codes, vor allem Kombinationen mit Shift usw...


    Die Tastaturflags hat ja ritzMo schon angegeben. Es fehlt nur noch "r"



    Meine optimale Tastenbelegung für Neutrino sieht so aus:


    OK = Programmliste anzeigen
    Exit = Toggle Programminfo
    Links = Subkanal Richtung 0, ohne Subkanal Kanal Down
    Rechts = Subkanal Richtung max, ohne Subkanal Kanal Up
    Hoch = Kanal Richtung 1
    Runter = Kanal Richtung max
    Lang auf Gelb = Plugins


    Bouquet Weiterschaltung mit den normalen Bouquet-Tasten, wenn Flag in den Settings gesetzt, sonst wie oben bei Links/Rechts oder ohne Funktion


    Info Taste kurz: Anzeige aktuell EPG
    Info Taste lang: Voller EPG Sender
    Shift Info: Multiepg Ghost, nicht den Original MEPG
    < = History Sender/Film vorheriger
    > = History Sender/Film nächster


    Wenn man dann mit Shift + Ziffertaste noch einige Plugins direkt starten könnte, wäre das die Krönung.


    Wie gesagt, hierzu fehlen teilweise die Erklärungen der Events, der Klassen usw.


    Hier noch die Tasten, von den ich nicht weiss, was sie bedeuten:


    KEY_F1... - KEY_F4,
    KEY_CHANNELUP, KEY_CHANNELDOWN
    KEY_PREVIOUS, KEY_NEXT
    KEY_ESC
    Was ist mit Shift ?



    Einen Gruß an die Entwickler, dort sollte sowas schon existieren... Wenn wir als Käufer ein wenig davon profitieren könnten, wäre recht schön.....

    ---
    Gruß aus Franken
    Peter


    [size=10]DM500HD(S2), 1 x Rotor USALS (Kathrein CAS 90 und UAS 484)
    DM8000S2x4, 3 x DiseqC 1.0 mit 13,19,23 und 28 Ost mit Technisat Multi 90 cm, 1 x Rotor HH-100 Stab USALS (Kathrein CAS 90 und UAS 484)
    DM 7080 aktuell Multischalter DiseqC 13,19,23,28

    Einmal editiert, zuletzt von peter999 ()

  • Zitat

    Original von peter999


    Die Tastaturflags hat ja ritzMo schon angegeben. Es fehlt nur noch "r"


    Hi,


    r = reapeated (müsste lange drücken bedeuten)


    Eines meiner Probleme ist die Sprache, oder anders ausgedrückt wie nennt sich z.B. die kleine Box die mir in einem Sender das laufende Programm, das folgende und die Restzeit anzeigt. (Infobar?)


    Oder welche Anzeige (Fenster, Box oder Nachricht) stehen für welche "maps" der keymap.xml ? Habe mal alle aus der aktuellen BoxMan keymap herausgezogen. Manch eine klingt logisch, aber reicht das als Antwort?


    ListboxActions = Senderliste ?
    KeyboardInputActions
    SetupActions =
    InputActions
    InfobarEPGActions
    InfobarInstantRecord
    InfobarExtensions
    InfobarChannelSelection
    MinuteInputActions
    InputAsciiActions
    InputBoxActions
    WizardActions
    InfobarMenuActions
    MenuActions
    InfobarShowHideActions
    InfobarActions
    InfobarAudioSelectionActions
    InfobarSubserviceSelectionActions
    InfobarSubserviceQuickzapActions
    GlobalActions
    PowerKeyActions
    NumberActions
    TextEntryActions
    InfobarSeekActions
    MediaPlayerSeekActions
    InfobarTimeshiftActions
    InfobarTimeshiftActivateActions
    MovieSelectionActions
    InfobarMovieListActions
    MoviePlayerActions
    InfobarCueSheetActions
    MediaPlayerCueSheetActions
    InfobarTeletextActions
    InfobarRdsActions
    RassInteractiveActions
    ChannelSelectEPGActions
    ChannelSelectEditActions
    TvRadioActions
    TimerEditActions
    EPGSelectActions
    EventViewActions
    EventViewEPGActions
    OkCancelActions
    DirectionActions
    ColorActions
    MsgBoxActions
    HelpActions
    ShortcutActions
    StandbyActions
    SleepTimerEditorActions
    CiSelectionActions
    PiPSetupActions
    MediaPlayerActions


    Mal schauen ob wir auf diese Weise zu einer einheitlichen Sprache kommen und doch die eine oder andere "Action" aufschlüsseln können.


    Grüße


    romeo-golf

  • romeo-golf


    Was aber ist dann der Unterschied bei "l" = lange gedrückt und "r" = repeated ?


    Zitat:
    Eines meiner Probleme ist die Sprache, oder anders ausgedrückt wie nennt sich z.B. die kleine Box die mir in einem Sender das laufende Programm, das folgende und die Restzeit anzeigt. (Infobar?)



    Ich denke mal, dass
    key id="KEY_EXIT" mapto="toggleShow" flags="m"
    das anzeigt, was Du meinst.


    Ich stelle mir das so vor, dass diese ganzen Actions irgendwo definiert sind (im Phyton Code) und dass sich dann je nach "Action" dann verschiedene Tastenzustände darstellen. Das obige habe ich aus der
    <map context="InfobarShowHideActions">
    übernommen. Wahrscheinlich ist irgendwo in Enigma eine Abfrage nach der Action InfobarShowHide und wenn Enigma in diesem Zustand ist, dann sind die in dieser Section vorhandenen Tastendefinitionen gültig.


    Jetzt fehlt nur noch eine Aufstellung, in der die "Actions" beschrieben sind, was sie bedeuten, neben dem, was wir sowieso wissen müssen, was nämlich die "mapto" bedeuten.....


    P.S
    in /usr/lib/enigma2/python findet sich der Source, dort ist auch eine keyids.py, in der alle vorhandenen Tasten drin sind (incl. der des Keyboards, was ja die Sache nicht übersichtlicher gestaltet).
    in der keymapparser.py wird die keymap.xml gelesen und nach DOM zerlegt und geprüft. Einige Infos zu den Flags findet man dort, aber alles wunderschön unkommentiert (was in den meisten Sourcen der Fall ist).
    Anscheinend ist die enigma.py per Programmgenerator entstanden (siehe Header). Die Vorlage des Generators habe ich noch nicht entdeckt, die hat wahrscheinlich nur DMM..

    ---
    Gruß aus Franken
    Peter


    [size=10]DM500HD(S2), 1 x Rotor USALS (Kathrein CAS 90 und UAS 484)
    DM8000S2x4, 3 x DiseqC 1.0 mit 13,19,23 und 28 Ost mit Technisat Multi 90 cm, 1 x Rotor HH-100 Stab USALS (Kathrein CAS 90 und UAS 484)
    DM 7080 aktuell Multischalter DiseqC 13,19,23,28

    Einmal editiert, zuletzt von peter999 ()

  • So, erklär ich mal ne Runde:


    In der keymap.xml werden Tasten (also keys) mit bestimmten Aktionen verknüpft (gemappt).
    Dies geschieht immer in einem gewissen Kontext, z.B. in einem Setup-Dialog.


    Beispiel:

    Code
    <map context="SetupActions">
       ...
    </map>


    Alle in diesem Block definierten verknüpfungen stehen dem Programmierer also bereit, wenn er die "SetupActions" für seine Tastenbelegung nutzt. Das wäre z.B.:

    Code
    <key id="KEY_OK" mapto="ok" flags="m" />


    Die Taste mit dem Code "KEY_OK" wird mit der Aktion "ok" verknüpft. Das flag "m" bedeutet, wie oben bereits erwähnt, dass die Aktion beim drücken der Taste ausgelöst wird.



    Und da fangen dann die Probleme an.
    Da dem Programmierer nicht exakt vorgeschrieben wird, bei welcher Aktion er was machen muss, ist das aus der keymap.xml nicht konkret rauszulesen.


    Nehmen wir aber nun mal an, dass die maptos von ihrer Bezeichnung her klar angeben, was bei der Aktion geschieht.
    Dann kann man entweder so versuchen, damit rumzujonglieren, bis man das gewünschte Ergebnis erzielt, oder man muss in den Quelltext.


    Dazu sollte man aber zumindest ein gewisses Grundverständniss für dieses Programmiersprache mitbringen.


    Hat man dieses, kann man die Quelltexte nach den entsprechenden Kontexten (Plurar von Kontext ?!) suchen und gucken, mit welchen Funktionen im Programm die Aktionen der Tasten verbunden sind (ja, sehr viele lose Verbindungen). Nun verfolgt man diese Funktion so weit, bis man versteht, was diese tut.



    Die Bezeichnungen und vor allem Beziehungen können für einen nicht-programmierer daher etwas kryptisch sein.



    Zu deinem Beispiel mit der InfobarShowHide:
    Die InfobarShowHide ist eine Klasse, die zur Infobar (also der Anzeige die standardmässig unten am Bildschirm ist) gehört. Kommentar aus dem Quelltext: "InfoBar show/hide control, accepts toggleShow and hide actions, might start fancy animations.".
    Wenn also eine Instanz der InfobarShowHide (und damit auch alle abgeleiteten Klasse, wie auch die benutzte InfoBar) aktiv ist, wird auf diese Aktionen gelauscht und entsprechende Funktionen ausgeführt.
    Bei der Aktion toggleShow wird der Anzeigestatus ge"togglet", also gewechselt. Bei hide logischerweise versteckt.



    Die enigma.py stammt aus einem Generator, ja. Die Quellen dafür wirst du allerdings im CVS finden. Aber als nicht-programmierer würde ich da nicht unbedingt dran, da Sprachbindings nicht unbedingt die schönste (übersichtlichste) Sache sind. Ich würde mich da lieber mit trial & error voranarbeiten :winking_face:


    PS: Eine Listbox ist auch das, was man bei der Kanalliste sieht, aber auch z.b. bei der Filmliste. Sie sollte im Prinzip überall zu finden sein, wo eine Liste dargestellt wird.


    Solltest ihr wirklich nicht weiter kommen und daran verzweifeln erstelle ich vielleicht so eine Auflistung, allerdings ist das nicht grade die spannendste Arbeit und daher verbring ich meine Zeit bis dahin mal anders :winking_face:

    Homescreen eurer Apple-Geräte noch nicht voll genug?


    dreaMote: Fernbedienung für Dreamboxen
    Mobile WOL: Wake-on-LAN Client für iOS mit optionalem Widget
    My Home Remote: Fernkontrolle für Homematic CCU/CCU2 optimiert für mobile Benutzung

  • ritzMo


    Danke für die Übersicht. So ähnlich habe ich es mir gedacht. Ich bin seit über 30 Jahre Softwareentwickler, habe aber noch nichts mit dem Schlangencode gemacht, ich komme aus der c, c++ Schiene und kann auch noch mit php und perl umgehen, bisher hat mich der Schlangencode auch noch nicht wirklich interessiert, da ich kein Freund von Laufzeitumgebungen bin, weil diese langsam und fehleranfällig sind. Das Konzept von Enigma 1 sagt mir eigentlich mehr zu, obwohl enigma 2 durch die Erweiterbarkeit durch phyton plugins schon was hat. Aber das hätte man mittels echtem Compiler nach dem Vorbild von z.B QT 4 auch lösen können, das würde z.B die Startzeiten der DM7025 erheblich von 2:30 Minuten auf wahrscheinlich 30 Sekunden verkürzen...


    Aber ich schweife ab.


    Ich bin eigentlich bei Enigma 2 mit fast allem zufrieden. Einzig die Fernbedienung ist für mich nicht befriedigend gelöst, ich habe seit vielen Jahren mit der Neutrino FB gelebt, die ist für mich logischer in der Grundbedienung (bitte kein Kommentar hierzu...), daher suche ich für mich einen einfachen Weg, nicht nach jeder cvs Änderung wieder den ganzen Krampf editieren zu müssen. DMM hat es ja mit Enigma 1 gezeigt, dass es auch anders geht.


    Man könnte es ja über eine Einstellung Enigma/Neutrino ja über Includes lösen, denn es geht ja nicht um die Gesamtbedienung, sondern nur um ein paar Tasten (die habe ich ja weiter oben beschrieben), im keymap-Parser könnte dann je nach schalter der xml aus einer enigma.xml oder neutrino.xml geladen werden. Da es sich ja nur um die normen Kanal-Action und die Info-Action handelt, dürfte es für DMM nicht so schwer sein, hier was entsprechend zu basteln.


    Dann könnte sich jeder seine Grundeinstellung mit Hilfe der von mir angesprochenen Doku (siehe erstes Posting) seine neutrino.xml zusammenbasteln....


    Ich denke, Romeo-Golf hat schon einen guten Weg eingeschlagen mit seinem Plugin, ich stelle es mir aber mehr so vor, wie die Leute vom LT das gelöst haben, dort kann man zumindest rudimentär einstellen, wie die Tasten zu belegen sind...

    ---
    Gruß aus Franken
    Peter


    [size=10]DM500HD(S2), 1 x Rotor USALS (Kathrein CAS 90 und UAS 484)
    DM8000S2x4, 3 x DiseqC 1.0 mit 13,19,23 und 28 Ost mit Technisat Multi 90 cm, 1 x Rotor HH-100 Stab USALS (Kathrein CAS 90 und UAS 484)
    DM 7080 aktuell Multischalter DiseqC 13,19,23,28

    2 Mal editiert, zuletzt von peter999 ()

  • Zitat

    Original von peter999
    Was aber ist dann der Unterschied bei "l" = lange gedrückt und "r" = repeated ?


    ein langer Tastendruck mit "r" = repeated sieht so aus:
    make <--- Taste gedrückt
    repeat <--- repeat beginnt
    repeat
    repeat
    repeat
    break <--- Taste wird losgelassen



    ein langer Tastendruck mit "l" sieht so aus:
    make <--- Taste gedrückt
    ...
    long <--- Taste lange gedrückt
    break <--- Taste wird losgelassen




    Und hier sind die 6 möglichen geshifteten Tasten


    shift rot "KEY_PREVIOUSSONG"
    shift gelb "KEY_PLAYPAUSE"
    shift grün "KEY_PLAY"
    shift blau "KEY_NEXTSONG"
    shift tv "KEY_STOP"
    shift radio "KEY_RECORD"



    Gruß Ralf

    Two mit SSD, One, 7025-S, 7000-S

  • ralfK


    Danke für die Info. Wenn ich ehrlich bin, verstehe ich nicht wirklich den Unterschied von r und l, denn wenn ich die Taste drücke und halte, wie wird dann unterschieden ?



    Wenn ich das richtig verstehe, sind nicht alle Tasten per Shift zu belegen, sondern nur die von Dir angegebenen ?


    Das wäre schade...

    ---
    Gruß aus Franken
    Peter


    [size=10]DM500HD(S2), 1 x Rotor USALS (Kathrein CAS 90 und UAS 484)
    DM8000S2x4, 3 x DiseqC 1.0 mit 13,19,23 und 28 Ost mit Technisat Multi 90 cm, 1 x Rotor HH-100 Stab USALS (Kathrein CAS 90 und UAS 484)
    DM 7080 aktuell Multischalter DiseqC 13,19,23,28

  • RalK hat das doch beschrieben, wie ein long/repeated Tastendruck ausschaut.
    Unterschieden wird das erst über das Flag...


    Im Prinzip sollte der Druck dann so aussehen:
    *Drücke Taste*
    (Make) Aktion ausführen wenn make-flag
    *Warte*
    (Repeated) Aktion ausführen wenn repeated-flag
    *Warte*
    (Repeated) Aktion ausführen wenn repeated-flag
    (Long) Aktion ausführen wenn long-flag
    *Warte*
    (Repeated) Aktion ausführen wenn repeated-flag
    *Warte*
    (Repeated) Aktion ausführen wenn repeated-flag
    *Lasse los*
    (Break) Aktion ausführen wenn brake-flag


    Das ist nicht der genau Ablauf, da ich die Intervalle nicht kenne und es nicht für so interessant betrachte, dass ich das jetzt unbedingt testen müsste.


    Und ja, das sind die Tasten die Shift "unterstützen".

    Homescreen eurer Apple-Geräte noch nicht voll genug?


    dreaMote: Fernbedienung für Dreamboxen
    Mobile WOL: Wake-on-LAN Client für iOS mit optionalem Widget
    My Home Remote: Fernkontrolle für Homematic CCU/CCU2 optimiert für mobile Benutzung

  • ritzMo


    etzerdla, wie mir Franken sagen. Jetzt hab ich's kapiert...


    Danke für die ausführliche Beschreibung.

    ---
    Gruß aus Franken
    Peter


    [size=10]DM500HD(S2), 1 x Rotor USALS (Kathrein CAS 90 und UAS 484)
    DM8000S2x4, 3 x DiseqC 1.0 mit 13,19,23 und 28 Ost mit Technisat Multi 90 cm, 1 x Rotor HH-100 Stab USALS (Kathrein CAS 90 und UAS 484)
    DM 7080 aktuell Multischalter DiseqC 13,19,23,28