Joystick

  • moin,

    ich habe mir nen xbox-controller an den pc gebastelt und installiert usw. und
    jetzt will ich, dass wenn ich einen button drück, die taste "2" z.B. runterdrückt, solang wie ich den button halte.
    ich brauche das für teamspeak, wenn ich zocke will ich mansche games nicht mit tastatur zoggen

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner

  • Ich möchte dich auf die Forenregeln hinweisen?
    trotzdem brauchst du irgendwas was dir zurückgibt was gerade gedrückt wurde. dann musst du nur

    [autoit]

    Send("{2}")

    [/autoit]

    schreiben wenn dasundas passiert.

    um ein event auszulesen musst du warscheinlich in einer endlosschleife einen DllCall benutzen?

  • ich kenn die forenregeln!
    ich will nur wie gesagt mansche spiele nicht mit der tastatur spielen, wenns auch mit dem joystick geht!
    ich will diese "tastenweitergabe" nur haben, weil ich mit "Push to Talk" reden muss, weil ich boxen benutzen muss, weil mein headset kaputt ist.
    und Teamspeak will auf die tasten vom controller nicht reagieren.

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner

  • bei microsoft könnten infos stehen,
    sonst musst du disassemblen (kp was das ist, habe ich im netzt gefunden!^^)

    Edit:
    ich habe keine einzige funktion in der dll selbst gefunden!
    microsoft ist einfach zu fies!

    Einmal editiert, zuletzt von Alizame (17. Juni 2010 um 22:01)

  • Ich habe damals meine PSP zum zocken als Controller benutzt und das dafür benutzt:

    Spoiler anzeigen
    [autoit]

    ;____________________________________________________________________
    ; Original program by Ejoc ;
    ; Improved by Adam1213 (autoit 3.2 compatiblity + improved labels ;
    ;____________________________________________________________________
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $joy = _JoyInit()
    Global $ControllerNummer = 0 ;musste mal ausprobieren aber denke wenn nur der eine angeschlossen ist isses die 0

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $coord = _GetJoy($joy, $ControllerNummer)
    Switch $coord[6]
    Case 9000
    Send("{2 DOWN}")
    Case 18000
    Send("{2 DOWN}")
    Sleep(200)
    Case 27000
    Send("{2 DOWN}")
    Sleep(200)
    Case Else
    Send("{2 UP}")
    EndSwitch
    Switch $coord[7]
    Case 16
    Send("{2 DOWN}")
    Sleep(200)
    Case 32
    Send("{2 DOWN}")
    Sleep(200)
    Case 2
    Send("{2 DOWN}")
    Sleep(200)
    Case 1
    Send("{2 DOWN}")
    Sleep(200)
    Case 8
    Send("{2 DOWN}")
    Sleep(200)
    Case 4
    Send("{2 DOWN}")
    Case 128
    Send("{2 DOWN}")
    Case 64
    Send("{2 DOWN}")
    Case Else
    Send("{2 UP}")
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetJoy($lpJoy, $iJoy)
    Local $coor, $ret

    [/autoit] [autoit][/autoit] [autoit]

    Dim $coor[8]
    DllCall("Winmm.dll", "int", "joyGetPosEx", _
    "int", $iJoy, _
    "ptr", DllStructGetPtr($lpJoy))

    [/autoit] [autoit][/autoit] [autoit]

    If Not @error Then
    $coor[0] = DllStructGetData($lpJoy, 1, 3)
    $coor[1] = DllStructGetData($lpJoy, 1, 4)
    $coor[2] = DllStructGetData($lpJoy, 1, 5)
    $coor[3] = DllStructGetData($lpJoy, 1, 6)
    $coor[4] = DllStructGetData($lpJoy, 1, 7)
    $coor[5] = DllStructGetData($lpJoy, 1, 8)
    $coor[6] = DllStructGetData($lpJoy, 1, 11)
    $coor[7] = DllStructGetData($lpJoy, 1, 9)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $coor
    EndFunc ;==>_GetJoy

    [/autoit] [autoit][/autoit] [autoit]

    Func _JoyInit()
    Local $joy
    Global $JOYINFOEX_struct = "dword[13]"

    [/autoit] [autoit][/autoit] [autoit]

    $joy = DllStructCreate($JOYINFOEX_struct)
    If @error Then Return 0
    DllStructSetData($joy, 1, DllStructGetSize($joy), 1);dwSize = sizeof(struct)
    DllStructSetData($joy, 1, 255, 2) ;dwFlags = GetAll
    Return $joy
    EndFunc ;==>_JoyInit

    [/autoit]


    du musst alle Case Zweige rauslöschen die du nicht brauchst, bei dem Skript wird er warscheinlich bei jeder Taste am Controller die 2 Drücken :D
    Sollte auch mit XBox-Controllen funktionieren solange er in Windows als normaler Controller registriert ist.

    Edit: hab mal nen Skript angehängt was ich noch gefunden hab, damti kann man schön die Zahlen rauskriegen die zu den Tasten gehören ;)


    Hoffe konnte helfen

    Mfg Keyle