[Patch] softhddevice und Umlaute in Eingabefeldern

  • Moin!


    Ausgehend von diesem Thread hab ich mich gefragt, warum man eigentlich keine Umlaute in Eingabefeldern mit einer Tastatur eingeben kann. Nach einigem Wühlen in der Klasse cKbdRemote des vdr bin ich dann irgendwie darauf gestoßen, dass die Ausgabeplugins auch ihren Teil dazu beitragen. Das "remote"-Konzept im vdr war mir bis heute noch ziemlich unbekannt... :)


    Jedenfalls hab ich mich auf die Suche nach den Umlauten gemacht. Dabei hab ich festgestellt, dass von X für ein "ä" der Name "adiaeresis" geliefert wird. Das ist natürlich ein Tastenname, mit dem der vdr so gar nichts anfangen kann. Nach etwas weiterem Wühlen (kenne mich mit X überhaupt nicht aus) habe ich festgestellt, dass softhddevice "XLookupString" aufruft, das schon einen String mit dem gedrückten Buchstaben zurückliefert. Dieser wird bloß nirgendwo benutzt...


    Da ich nichts vorhandenes kaputt machen wollte, übergebe ich diesen String nun extra an "FeedKeyPress", so dass diese den Buchstaben nutzen kann, wenn alle Stricke reißen. Ich hab aber noch keine Ahnung, in welchem Encoding dieser String ist, ich vermute aber, dass es der eingestellten locale entspricht. Ich wandle ihn nach Utf8, dann mit den vdr-Routinen in etwas, das den internen Tasten entspricht und reiche das Ergebnis einfach mal an den vdr weiter... Und siehe da, plötzlich erscheinen Umlaute in den Eingabefelder. :)
    Buchstaben mit Akzenten hab ich allerdings noch nicht hinbekommen.


    Es darf gerne mal jemand mit mehr Wissen über den Patch schauen. Wer möchte, darf es natürlich auch für xine(liboutput) portieren, da scheint es das Problem auch noch zu geben.


    Lars.

  • Nach vier Jahren mit Software-Frontends für den VDR kann ich endlich die Tastatur sinnvoll zur Texteingabe nutzen :thumbup:

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • XLookupString sollte eigentlich das machen was man will, aber es war irgendein Problem.


    Sowie du es gemacht hast, habe ich dann einfach den String an FeedKeyPress übergeben.
    XLookupString sollte Buchstaben usw. als String zurückgeben, wenn es einfache Zeichen sind.
    Sondertasten (Cursor...) sollten dann leeren String ergeben.


    Es kann sein, daß das Leerzeichen ein Problem war. Das Mapping vom Vdr erwartet den Text "Space" und XLookupString gab das Zeichen 'Space' zurück.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Ja, XLookupString gibt zwei Dinge zurück, den Namen der Taste und eine String-Repräsentation, die bei Sondertasten leer ist.
    Bisher hast du nur den Namen verwendet und das passiert auch immer noch so. Wenn dieser Name in der remote.conf gefunden wird, wird er auf die entsprechende vdr-Taste gemappt. Kommt der Name aber nicht vor (wie z.B. bei "adiaeresis", das ist ja keine vdr-Taste), dann liefert cRemote::Put ein false zurück und nur dann verfüttere ich einfach den String an den vdr als KBDKEY. Und das auch nur, wenn der Utf8-Code kleiner als 256 ist. Intern arbeitet der vdr ja nicht mit Unicode (und wird er auch nie). Ist also nur eine Erweiterung des bisherigen Verhaltens. Die Logik könnte man sicherlich verfeinern, aber das kann ja jemand machen, der noch komischere Zeichen als Umlaute braucht. :)


    Prima wäre es, wenn das noch jemand mit einer anderen locale-Einstellung probieren könnte, ob die Zeichen dann immer noch korrekt ankommen.


    Lars.

  • Ich hatte es versucht alles im X11 Teil zulösen, was aber schief ging.
    Aber sorum könnte es klappen. Man kann dann Tasten wie Return mappen.


    Was passiert wenn ich die Taste a auf Audio gemappt habe? Kannst du dann noch a in Textfeldern eingeben?


    (Habe den Patch noch nicht angewandt)


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Was passiert wenn ich die Taste a auf Audio gemappt habe? Kannst du dann noch a in Textfeldern eingeben?


    In der remote.conf gemappte Tasten werden nicht mehr für die Texteingabe verwendet (das war davor auch schon so). Ich bin gerade dabei meine Belegung umzustellen, damit die Texteingabe nicht beeinträchtigt wird:
    [Blockierte Grafik: https://dl.dropboxusercontent.com/u/960809/yaVDR-Keyboard.png]

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    2 Mal editiert, zuletzt von seahawk1986 ()

  • Häufig ist ja auch m für Menü gemappt, das konnte man früher auch nie in den Eingabefeldern eingeben. War immer überraschend, wenn dann plötzlich das Menü zuging. :)


    Das ist aber ein grundsätzliches Problem im vdr (z.B. auch auf der Konsole) und nur mit einer anderen Belegung wie der von seahawk zu lösen.


    Lars.

  • Okay, dann spielt es keine Rolle wie man die Änderung im Plugin einbaut.


    Kann man nicht über cOsd::IsOpen() die Prioritöten ändern?


    Wenn im Menu, werden 1 Zeichencodes direkt als Eingabe geschickt.
    Und wenn kein Menu so wie im Patch.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Wenn im Menu, werden 1 Zeichencodes direkt als Eingabe geschickt.
    Und wenn kein Menu so wie im Patch.

    Klingt eigentlich gut - aber hätte man dann nicht auch unterschiedliche Belegungen je nachdem ob gerade die Kanalinfo oder eine OSD-Message gerade angezeigt wird oder nicht?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Dann bekommen wir aber doch das "Space" wieder nicht richtig in den vdr, oder?
    Schön wäre es, wenn man den vdr fragen könnte, ob gerade ein Eingabefeld im Editiermodus ist, aber das geht dann spätestens nicht mehr, wenn ein Plugin sich ein eigenes Menuitem ausdenkt und implementiert.


    Die ganze Menügeschichte ist noch nicht so richtig rund und ich denke, es wird auch nicht einfach, da was Rundes draus zu machen.


    Lars.

  • Dann bekommen wir aber doch das "Space" wieder nicht richtig in den vdr, oder?
    Schön wäre es, wenn man den vdr fragen könnte, ob gerade ein Eingabefeld im Editiermodus ist, aber das geht dann spätestens nicht mehr, wenn ein Plugin sich ein eigenes Menuitem ausdenkt und implementiert.


    Die ganze Menügeschichte ist noch nicht so richtig rund und ich denke, es wird auch nicht einfach, da was Rundes draus zu machen.


    Es ist eigentlich ganz einfach: beim Anlernen der Fernbedienung nur die Tasten verwenden, die man nicht in Eingabefeldern benutzen möchte.
    Einzige Ausnahme: die Zifferntasten. Diese kann man auch in Eingabefeldern benutzen, wenn man sie beim Anlernen für die Ziffern verwendet hat.


    Klaus

  • Dann bekommen wir aber doch das "Space" wieder nicht richtig in den vdr, oder?
    Schön wäre es, wenn man den vdr fragen könnte, ob gerade ein Eingabefeld im Editiermodus ist, aber das geht dann spätestens nicht mehr, wenn ein Plugin sich ein eigenes Menuitem ausdenkt und implementiert.


    Kann durchaus sein, werde es einfach mal ausprobieren.


    Besser wäre wenn das Eingabemapping vom VDR, "States" kennen würde. Dann bräuchten die Plugins nur den Eingabe "State" setzen und man hätte die Eingabebelegung. Und dann Funktionen, wie lange drücken oder zweimal kurz usw.
    Ist aber nicht DAU tauglich.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Ich bin gerade dabei meine Belegung umzustellen, damit die Texteingabe nicht beeinträchtigt wird:
    [Blockierte Grafik: https://dl.dropboxusercontent.com/u/960809/yaVDR-Keyboard.png]

    Die Belegung gefällt mir. Aber ich würde noch die ESC-Taste mit Back belegen. Wenn ich den VDR mit einer Tastatur bediene drücke immer wieder mal auf die ESC-Taste, bis mir wieder einfällt, dass ich beim VDR mit Backspace zurückkomme.


    Tschüß Frank

  • Die Belegung gefällt mir. Aber ich würde noch die ESC-Taste mit Back belegen. Wenn ich den VDR mit einer Tastatur bediene drücke immer wieder mal auf die ESC-Taste, bis mir wieder einfällt, dass ich beim VDR mit Backspace zurückkomme.


    Das darf ja jeder so handhaben wie er will - mit vdr-sxfe ist ESC halt beispielsweise schon belegt...

    Code
    XKeySym.Back   Escape

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Der Patch ist nun im GIT, hoffe er funktioniert so wie gewünscht.


    wobei ich mich frage ob man nicht immer csoft->Put aufrufen soll ohne die Entscheidung ob der Tastenname 1 Zeichen oder mehrere ist:



    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Wenn es nur ein Zeichen ist, dann braucht man die Konvertierung nicht.
    Ich meine, ich hab das auch ausprobiert und dann gab es noch ein anderes Problem. Ich erinnere mich nur nicht mehr...


    Lars.

  • So nun geht im Moment kein Anlernen der Fernbedienung mehr, kann dies mit dieser Änderung zusammen hängen?


    Code
    vdr: video/vdpau: osd upload 668x241+38+94 1ms 643952
    vdr: [3547] [softhddev]FeedKeyPress XKeySym, Up,


    Kommt, aber der VDR reagiert nicht auf das Up.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • War gar nicht so schlimm:


    Im Lernmodus kann man sich wohl nicht so richtig auf den Returnwert verlassen. :)


    Lars.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!