Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

1

18.06.2011, 17:31

Joystick emulieren

Hallöchen ^^

Nachdem ich endlich mein Gamecube-controller-zu-USB-converter fertig gebaut habe, kann ich jetzt per Programm
die Daten auslesen. Jetzt soll dieses Programm einen Joystick (8 Tasten, 2 Analogsticks, 2 Slider, 1 Digitalstick)
emulieren und zwar so, dass andere Programme (Emulatoren) ihn erkennen. Bisher hab ich nur herausgefunden, dass
man mit SendInput eine HARDWAREINPUT Struktur senden kann. Auch scheint Windows nicht genügend Nachrichten
zu haben ( http://msdn.microsoft.com/en-us/library/…v=VS.85%29.aspx ) um so viele Knöpfe zu handlen.

Wie kann man einen Joystick emulieren? (Die Daten hab ich)
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

2

21.06.2011, 12:50

Hast du den Konverter selbst gebaut? Warum meldest du den nicht an der USB-Schnittstelle als HID an? Dann kannst du den generischen Treiber nutzen und musst dir nicht selbst einen basteln. Müsstest nur das entsprechende USB-Interface auf dem Controller implementieren.

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

3

21.06.2011, 23:52

Hallo Genion :)

Ich hab bereits versucht das Gerät als HID anzumelden, jedoch nur als Tastatur. Der Deskriptor (den ich aus einem Projekt eines anderen kopiert hatte und damit eigentlich funktionieren müsste) funktioniert nicht, das Gerät wird dann nicht mehr als HID-Gerät erkannt. Ich lad morgen mal das ganze Projekt hoch.

Im Augenblick gucke ich mir grade PPJoy an, dieses hat eine WinAPI-Schnittstelle um den virtuellen Joystick mit Daten zu füttern.
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

4

22.06.2011, 21:22

So :)

Hier das ganze Projekt.
Der Deskriptor

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 const char usbHidReportDescriptor[] PROGMEM = {
    0x05, 0x01,                 // USAGE_PAGE (Generic Desktop)
    0x09, 0x05,                 // USAGE (Gamepad)
    0xa1, 0x01,                 // COLLECTION (Application)
    
    0x09, 0x01,                 //   USAGE (Pointer)    
    0xa1, 0x00,                 //   COLLECTION (Physical)
    0x05, 0x01,                 //  USAGE_PAGE (Generic Desktop)
    0x09, 0x30,                 //  USAGE (X)
    0x09, 0x31,                 //  USAGE (Y)
    
    0x09, 0x33,                    //   USAGE (Rx)
    0x09, 0x34,                     //    USAGE (Ry)

    0x09, 0x35,                     //    USAGE (Rz)    
    0x09, 0x36,                     //    USAGE (Slider)    

    0x15, 0x00,                 //  LOGICAL_MINIMUM (0)
    0x26, 0xFF, 0x00,           //  LOGICAL_MAXIMUM (255)
    0x75, 0x08,                 //  REPORT_SIZE (8)
    0x95, 0x06,                 //  REPORT_COUNT (6)
    0x81, 0x02,                 //  INPUT (Data,Var,Abs)
    0xc0,                       //   END_COLLECTION (Physical)

    0x05, 0x09,                 //   USAGE_PAGE (Button)
    0x19, 0x01,                 //   USAGE_MINIMUM (Button 1)
    0x29, 0x10,                 //   USAGE_MAXIMUM (Button 14)
    0x15, 0x00,                 //   LOGICAL_MINIMUM (0)
    0x25, 0x01,                 //   LOGICAL_MAXIMUM (1)
    0x75, 0x01,                 //   REPORT_SIZE (1)
    0x95, 0x10,                 //   REPORT_COUNT (16)
    0x81, 0x02,                 //   INPUT (Data,Var,Abs)

    0xc0                        // END_COLLECTION (Application)
};


Das andere Projekt was einen funktionierenden Deskriptor hat:
http://www.raphnet.net/electronique/gc_n64_usb/index_en.php

Hier der relevante Teil:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const char gcn64_usbHidReportDescriptor[] PROGMEM = {
    0x05, 0x01,                 // USAGE_PAGE (Generic Desktop)
    0x09, 0x05,                 // USAGE (Gamepad)
    0xa1, 0x01,                 // COLLECTION (Application)
    
    0x09, 0x01,                 //   USAGE (Pointer)    
    0xa1, 0x00,                 //   COLLECTION (Physical)
    0x05, 0x01,                 //  USAGE_PAGE (Generic Desktop)
    0x09, 0x30,                 //  USAGE (X)
    0x09, 0x31,                 //  USAGE (Y)
    
    0x09, 0x33,                    //   USAGE (Rx)
    0x09, 0x34,                     //    USAGE (Ry)

    0x09, 0x35,                     //    USAGE (Rz)    
    0x09, 0x36,                     //    USAGE (Slider)    

    0x15, 0x00,                 //  LOGICAL_MINIMUM (0)
    0x26, 0xFF, 0x00,           //  LOGICAL_MAXIMUM (255)
    0x75, 0x08,                 //  REPORT_SIZE (8)
    0x95, 0x06,                 //  REPORT_COUNT (6)
    0x81, 0x02,                 //  INPUT (Data,Var,Abs)
    0xc0,                       //   END_COLLECTION (Physical)

    0x05, 0x09,                 //   USAGE_PAGE (Button)
    0x19, 0x01,                 //   USAGE_MINIMUM (Button 1)
    0x29, 0x10,                 //   USAGE_MAXIMUM (Button 14)
    0x15, 0x00,                 //   LOGICAL_MINIMUM (0)
    0x25, 0x01,                 //   LOGICAL_MAXIMUM (1)
    0x75, 0x01,                 //   REPORT_SIZE (1)
    0x95, 0x10,                 //   REPORT_COUNT (16)
    0x81, 0x02,                 //   INPUT (Data,Var,Abs)

    0xc0                        // END_COLLECTION (Application)
};
»Gotbread« hat folgende Datei angehängt:
  • USC.rar (170,94 kB - 114 mal heruntergeladen - zuletzt: 29.03.2024, 05:29)
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

5

28.06.2011, 12:43

keiner eine idee? :(
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

Werbeanzeige