[Announce] vdr-plugin-gamepad 0.0.1

  • Hi,


    ich hab die erste Version des gamepad Plugin released.


    Es erlaubt die VDR Steuerung mittels Joystick Devices. Analogsticks können wie Buttons verwendet werden. Für jeden Button kann die Belegung konfiguriert werden. Weiters kann pro Button ein automatisches Repeatintervall bei gedrückthalten des Buttons konfiguriert werden (So kann zum Beispiel die Lautstärke mittels Analogsticks verändert werden).
    Weitere Details stehen in der README.


    Das Plugin gibts bei VDR Developer:
    http://projects.vdr-developer.org/projects/plg-gamepad


    Obwohl ich noch keines hab möchte ich in Zukunft ein XBOX Gamepad verwenden, das hat die richtigen Farbtasten für die VDR Steuerung.

    mein VDR:
    hardware: ASUS C8HM70-I, Zotac Zone Edition GeForce GT 630 Rev. 2, Mystique SaTiX-S2 Sky V2 USB, MSI DVB-T Stick
    vdr: yavdr 0.5, softhddevice

  • Hallo,
    ich wollte es gerade mal bauen, aber er bricht mit dieser Fehlermeldung ab:

    Code
    g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -O3 -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -c -DPLUGIN_NAME_I18N='"gamepad"'  -o gamepad.o gamepad.c
    g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -O3 -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -c -DPLUGIN_NAME_I18N='"gamepad"'  -o gamepad_handler_thread.o gamepad_handler_thread.c
    g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -O3 -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -c -DPLUGIN_NAME_I18N='"gamepad"'  -o gamepad_handler.o gamepad_handler.c
    g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -O3 -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -c -DPLUGIN_NAME_I18N='"gamepad"'  -o gamepad_process_keys_thread.o gamepad_process_keys_thread.c
    gamepad_process_keys_thread.c: In Elementfunktion »void cGamepadProcessKeysThread::loadKeyMap()«:
    gamepad_process_keys_thread.c:54:57: Fehler: »isspace« wurde in diesem Gültigkeitsbereich nicht definiert
                             while(end > line && isspace(*end)) end--;
                                                             ^
    Makefile:66: recipe for target 'gamepad_process_keys_thread.o' failed
    make: *** [gamepad_process_keys_thread.o] Error 1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • So geht es:

    Diff
    --- vdr-plugin-gamepad/gamepad_process_keys_thread.c    2013-11-17 08:52:31.879034659 +0100
    +++ b/gamepad_process_keys_thread.c     2013-11-17 08:53:30.272743361 +0100
    @@ -5,6 +5,7 @@
      *
      * $Id$
      */
    +#include <ctype.h>
     #include "gamepad_process_keys_thread.h"
     #include <vdr/remote.h>
     #include <vdr/tools.h>


    Dann bekomme ich nur noch bei den locales eine Warnung:

    Code
    xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-gamepad --package-version=0.0.1 --msgid-bugs-address='<see README>' -o po/gamepad.pot `ls gamepad_handler_thread.c gamepad_handler.c gamepad_setup.c event_action.c gamepad_process_keys_thread.c gamepad.c gamepad_config.c`
    msgmerge -U --no-wrap --no-location --backup=none -q -N po/de.po po/gamepad.pot
    msgfmt -c -o po/de.mo po/de.po
    po/de.po:7: Warnung: Das Felder »Language« im Kopfeintrag hat immer noch den anfänglichen Vorgabewert

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das Plugin funktioniert schon sehr gut, nur bei den analogen Schultertasten des XBOX 360 Controllers bin ich noch auf der Suche nach den optimalen Einstellungen, weil die je nach Druckstufe unterschiedliche Events liefern:
    Drücken und Loslassen der rechten analogen Schultertaste:


    Linke analoge Schultertaste:

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • Wäre es eventuell machbar, dass das Plugin das Abschalten der Reaktion auf die FB durch den VDR mit auswertet statt das zwingend über ein eigenes SVDRP-Interface umzusetzen?

    Code
    svdrpsend remo on|off|status

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • Muss das Plugin das selbst machen? So wie ich den vdr-Code verstehe, ist "enabled" eine globale Eigenschaft, die von den passenden Stellen schon beachtet wird.
    Wenn "gamepad" von cRemote abgeleitet ist (hab noch nicht nachgesehen), dann sollte es "einfach tun".


    In lirc.c finde ich z.B. auch keinerlei Code, was "enabled" beachtet.


    Lars.

  • Ups, Kommando zurück, das mit remo on/off klappt schon.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hallo,
    ich wollte es gerade mal bauen, aber er bricht mit dieser Fehlermeldung ab:

    Danke! Deine Änderungen hab ich ins Repository übernommen.

    Das Plugin funktioniert schon sehr gut, nur bei den analogen Schultertasten des XBOX 360 Controllers bin ich noch auf der Suche nach den optimalen Einstellungen, weil die je nach Druckstufe unterschiedliche Events liefern:
    ...

    Seht aus als wenn beim Drücken und Loslassen ein event ausgelöst wird. Mann darf dann nur einem Generic Event (hier 26 oder 27) eine Taste zuordnen. Eventuell benötigen diese Tasten aber noch eine Sonderbehandlung. Ich werd mir das anschaun sobald ich ein XBOX Gamepad hab.

    Wäre es eventuell machbar, dass das Plugin das Abschalten der Reaktion auf die FB durch den VDR mit auswertet statt das zwingend über ein eigenes SVDRP-Interface umzusetzen?

    Code
    svdrpsend remo on|off|status

    Ups, Kommando zurück, das mit remo on/off klappt schon.

    Ursprünglich hab ich die SVDRP Kommandos dafür vorgesehen, dass man das Joystick Device freigeben kann (also z.B.: /dev/input/js0). Das ist aber anscheinend gar nicht notwendig. Zumindest in XBMC funktioniert das Gamepad auch ohne Deaktivierung vom Gamepad Plugin.

    mein VDR:
    hardware: ASUS C8HM70-I, Zotac Zone Edition GeForce GT 630 Rev. 2, Mystique SaTiX-S2 Sky V2 USB, MSI DVB-T Stick
    vdr: yavdr 0.5, softhddevice

  • Ursprünglich hab ich die SVDRP Kommandos dafür vorgesehen, dass man das Joystick Device freigeben kann (also z.B.: /dev/input/js0). Das ist aber anscheinend gar nicht notwendig. Zumindest in XBMC funktioniert das Gamepad auch ohne Deaktivierung vom Gamepad Plugin.


    Ich denke das klappt, weil du das Gerät nicht exklusiv öffnest (so habe ich http://projects.vdr-developer.…ree/gamepad_handler.c#n25 zumindest verstanden, das remote-Plugin setzt da ja noch mit fnctl ein O_EXCL für das Gerät).
    Da das X-Box Gamepad keine KEY_* Events erzeugt, überschneidet es sich auch nicht mit den Eingaben über den X-Server und das VDR-Frontend:


    Ich kann grade nicht an den VDR, aber kann man durch ein Ab- und Anschalten des Gamepad durch die SVDRP-Kommandis des Plugin auch einen nachträglich angesteckten Empfänger nutzbar machen?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich kann grade nicht an den VDR, aber kann man durch ein Ab- und Anschalten des Gamepad durch die SVDRP-Kommandis des Plugin auch einen nachträglich angesteckten Empfänger nutzbar machen?

    Ja, das sollte funktionieren, beim ENABLE Kommando macht das Plugin fast das gleiche wie bei einem VDR restart. Nur die keymap.txt wird nicht neu eingelesen, aber das wär leicht zu ändern.

    mein VDR:
    hardware: ASUS C8HM70-I, Zotac Zone Edition GeForce GT 630 Rev. 2, Mystique SaTiX-S2 Sky V2 USB, MSI DVB-T Stick
    vdr: yavdr 0.5, softhddevice

  • Übrigens ist udev auch gar nicht schwer, da kann man auf neu angesteckte Geräte entsprechend reagieren.
    In dynamite nutze ich das z.B.


    Lars

  • Vielleicht solltest du die Befehle dann detach und attach nennen, um das von REMO abzugrenzen.

    Werd ich in der nächsten Version anpassen...

    Dann waere dein Plugin aber recht ueberfluessig , denke ich mal.


    -> http://pingus.seul.org/~grumbel/xboxdrv/

    Ich seh da kein VDR Plugin... aber viele Wege führen nach Rom. Dieses ist jedenfalls nicht speziell für XBOX Gamepads gemacht.

    mein VDR:
    hardware: ASUS C8HM70-I, Zotac Zone Edition GeForce GT 630 Rev. 2, Mystique SaTiX-S2 Sky V2 USB, MSI DVB-T Stick
    vdr: yavdr 0.5, softhddevice

Jetzt mitmachen!

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