[patch]Keyboard lässt sich nicht anlernen

  • Wie sieht eigentlich deine remote.conf aus?

    Lars.


    Die will ich ja anlernen komm aber nicht bis zum schluss ;D

    VDR:
    Hardware: Thermaltake DH102, Zotac ION ITX-F-E, 2Gig Ram, TechnoTrend
    dual DVB-S2 6400, TechnoTrend Connect CT-3650,

    Software: EasyVDR 1.0

  • Was passiert denn, wenn du PutKey so veränderst:

    Code
    void cKbdRemote::PutKey(uint64_t Code, bool Repeat, bool Release)
     {
    -  if (rawMode || !Put(Code, Repeat, Release)) {
    +  if (rawMode || (!Put(Code, Repeat, Release) && !IsLearning())) {
          if (int func = MapCodeToFunc(Code))
             Put(KBDKEY(func), Repeat, Release);
          }
     }


    Das hat die Konsequenz, dass im Lern-Modus nicht versucht wird, die Taste selbst noch mal in cKbdRemote zu mappen und noch mal zu übergeben.

    Lars.


    Wie werden denn diese Logischen Verknüpfungen ausgewertet? Bei && wenn die erste Bedienung falsch ist wird die zweite nicht mehr ausgeführt?
    Sowas in der Art wollte ich eh machen hab aber die Funktion IsLearning() übersehen, und mit über die variable ging es logischerweise nicht.
    Sollte aber auch funktionieren.

    mfg Thomas

    VDR:
    Hardware: Thermaltake DH102, Zotac ION ITX-F-E, 2Gig Ram, TechnoTrend
    dual DVB-S2 6400, TechnoTrend Connect CT-3650,

    Software: EasyVDR 1.0

  • Ohne meinen "IsLearning()"-Patch hab ich auch die Probleme von dir, mit dem Patch sieht die remote.conf vernünftig aus.

    Lars.

    vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
    hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
    Plugins: | avahi4vdr | dbus2vdr | dynamite | epg2timer | noepg | pvrinput | sundtek |

  • Wie werden denn diese Logischen Verknüpfungen ausgewertet? Bei && wenn die erste Bedienung falsch ist wird die zweite nicht mehr ausgeführt?


    Genauso ist es. Deshalb sollte man bei &&-Verknüpfungen immer das "billige" vorweg prüfen, das "teure" erst später.
    Und wenn das zweite gar nicht mehr geprüft werden muss, muss es hinten stehen. Dann gehen solche Konstrukte wie "Zeiger prüfen, wenn ok, dann was damit machen":

    Code
    void BeispielFunktion(cRemote *remote);
    if ((remote != NULL) && (remote->Name() != NULL)) {
       ...
       }


    oder in Kurzform (da ein Zeiger, der nicht NULL ist, "true" ergibt):

    Code
    void BeispielFunktion(cRemote *remote);
    if (remote && remote->Name()) {
       ...
       }


    Wenn remote NULL wäre und das Programm die zweite Prüfung auch noch durchführen würde, dann gäbe es einen segfault.

    Lars.

    vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
    hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
    Plugins: | avahi4vdr | dbus2vdr | dynamite | epg2timer | noepg | pvrinput | sundtek |

  • Ohne meinen "IsLearning()"-Patch hab ich auch die Probleme von dir, mit dem Patch sieht die remote.conf vernünftig aus.

    Lars.


    Ja hilft meine debug Ausgaben sehen auch gut aus kein zweites put() mehr. Und jede Taste kann genau einmal angelernt werden.
    Was ist eigentlich der rawMode?

    mfg Thomas

    VDR:
    Hardware: Thermaltake DH102, Zotac ION ITX-F-E, 2Gig Ram, TechnoTrend
    dual DVB-S2 6400, TechnoTrend Connect CT-3650,

    Software: EasyVDR 1.0

  • Das dürfte aber ein generelles Problem sein das sich irgendwann eingeschlichen hat. Und fällt nur nicht auf weil vermutlich nicht sehr viele ihre Keyboards neu anlernen bzw. über die Konsole benutzen.

    mfg Thomas

    VDR:
    Hardware: Thermaltake DH102, Zotac ION ITX-F-E, 2Gig Ram, TechnoTrend
    dual DVB-S2 6400, TechnoTrend Connect CT-3650,

    Software: EasyVDR 1.0

  • Jup. Wann lernt man denn schon die Tastatur neu an? Das hat man einmal "vor Jahren" gemacht und seitdem schleppt man die remote.conf von vdr zu vdr... :)

    Lars.

    vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
    hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
    Plugins: | avahi4vdr | dbus2vdr | dynamite | epg2timer | noepg | pvrinput | sundtek |

  • Hier noch mal der Patch als Datei.
    Vielleicht magst du den Post in deinem ersten Beitrag verlinken und "[PATCH]" in die Überschrift aufnehmen? Dann fällt es kls bestimmt eher auf.

    Lars.

  • Diese Funktion liefert false zurück wenn im Lernmodus:


    ist das richtig?
    weil auf den rückgabe Wert wird ja geprüft, also ist rawMode doch false und wird auch nie gesetzt.
    mfg Thomas

    VDR:
    Hardware: Thermaltake DH102, Zotac ION ITX-F-E, 2Gig Ram, TechnoTrend
    dual DVB-S2 6400, TechnoTrend Connect CT-3650,

    Software: EasyVDR 1.0

  • Dazu müsste man untersuchen, wie sich die anderen remotes (Lirc und das ein oder andere Plugin) verhalten.
    Wenn man da einfach den Rückgabewert ändern würde, hat es evtl. weiter reichenden Einfluss als meine Änderung. Vielleicht hat Klaus ja mal bei Gelegenheit ein Ohr für uns.

    Lars.

    vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
    hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
    Plugins: | avahi4vdr | dbus2vdr | dynamite | epg2timer | noepg | pvrinput | sundtek |

  • Wie ich gerade sehe wird SetRawMode nirgendwo in VDR aufgerufen, womit rawMode also immer false ist.
    Weiß jemand, ob das in irgend einem Plugin benutzt wird? VDR selber hat es zumindest noch nie benutzt.

    Zum Patch: ich konnte das Problem hier auch mit meiner Tastatur nachvollziehen und werde den Patch übernehmen.

    Klaus

  • Danke Klaus fürs ansehen.

    Mfg Thomas

    VDR:
    Hardware: Thermaltake DH102, Zotac ION ITX-F-E, 2Gig Ram, TechnoTrend
    dual DVB-S2 6400, TechnoTrend Connect CT-3650,

    Software: EasyVDR 1.0

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!