Seite 1 von 1

XBox 360 Analog Stick

Verfasst: Donnerstag 22. Dezember 2016, 13:22
von djevil
Hallo,
ich habe jetzt das wunderbare Vergnügen die Analog Sticks meines XBox Controllers zu programmieren.

Und ja, ich hatte gedacht, man müsste lediglich die X und Y Werte der Achsen auslesen.

Nun, ich habe 4 bytes aus denen ich etwas basteln muss.

Daher hatte ich vermutet, daß 2 bytes pro Achse (256*2) genutzt werden.

Leider komme ich zu keinen brauchbaren Ergebnissen.

Mein Code sieht im Moment etwa so aus:

Code: Alles auswählen

events = (
    uinput.ABS_X,
    uinput.ABS_Y,
    #undokumentierte Schreibweise:
    #uinput.ABS_Y + (min, max, ?, ?)
    #uinput.ABS_Y + ( 0, 255, 0, 0),
    )

## LAnalog bytes[10:14]
## Vermutete Werte:
## x=2bytes, y=2bytes ???, values=65536, center=32768
##minDeadzone~0+6000, maxDeadzone~65536/2 +- 3000 ??

with uinput.Device(events) as device:
    for i in range(2000):
        x =0 ; y=0
        data = dev.read(0x81, 29 , 0)
        
        x=(data[10]*data[13])
        y=(data[12]*data[11])
        
        if x > 3000 and x < 29000:
            device.emit(uinput.ABS_X, -5, syn=False)
            #device.emit_click(uinput.KEY_A)
            print("-x", x)
Mag sein, daß meine Herangehensweise auch falsch ist, ich wäre für jede Hilfe dankbar.

Mfg d

Re: XBox 360 Analog Stick

Verfasst: Donnerstag 22. Dezember 2016, 13:40
von Sirius3
@djevil: Du rätst, was Du aus 4 Bytes zusammenbasteln kannst? Und Dir kommt dabei ein Produkt zweier Zahlen überkreuz in den Sinn? Nach welcher Dokumentation arbeitest Du da?

Wenn ich etwas raten müßte, würde ich ja auf sowas kommen:

Code: Alles auswählen

x, y = struct.unpack_from("<hh", data, 10)

Re: XBox 360 Analog Stick

Verfasst: Donnerstag 22. Dezember 2016, 15:02
von djevil
@Sirius3
Wenn ich etwas raten müßte, würde ich ja auf sowas kommen:
Da hast du aber verdammt gut geraten :)
Und Dir kommt dabei ein Produkt zweier Zahlen überkreuz in den Sinn?
Ne, hab nur ein bischen rumprobiert,

aber auf "struct.unpack_from" wäre ich wohl nie gekommen, muss ich mir bei Gelegenheit mal näher angucken..

Vielen,vielen Dank, und Frohe Weihnachten.

Mfg djevil

Re: XBox 360 Analog Stick

Verfasst: Donnerstag 22. Dezember 2016, 16:04
von BlackJack
@djevil: Du hättest auch ”manuell” die beiden Werte aus jeweils zwei Bytes der Daten berechnen können.