Soo, hab jetzt mal im Internet kurz nach den Daten der Mäuse gesucht und bin unter http://wiki.osdev.org/Mouse_Input fündig geworden.
Danach erhältst du tatsächlich ein volles Byte (8Bit == 256) als Bewegungsdaten. Das Vorzeichen steht in zwei extra Bits in Byte 0.
Wenn du die 256 als positive Werte haben willst, musst du nur das Auslesearray als unsigned char behandeln und die Bewegungsrichtung aus Byte 0 auslesen. Das steht zumindest so in diesem Wiki.
Probieren musst du es nun natürlich selbst.
sast
Habe gerade mal auf dem Raspi einen Test mit dem Code aus deiner Quelle gemacht. xvz und yvz sind die Vorzeichen Flags aus b[0]. 1 bedeutet negativ. Man erkennt, dass die negativen Zahlen im unsigned char als 255 abwärts dargestellt werden. Im Zweierkoplement ist 255(b1111 1111) == -1 und -128 wäre dann b1000 0000
Code:
lb=0 rm=0 mb=0 xvz=0 yvz=0 xo=0 yo=0 xd=0 yd=1
lb=0 rm=0 mb=0 xvz=0 yvz=0 xo=0 yo=0 xd=1 yd=1
lb=0 rm=0 mb=0 xvz=0 yvz=1 xo=0 yo=0 xd=0 yd=255
lb=0 rm=0 mb=0 xvz=0 yvz=1 xo=0 yo=0 xd=0 yd=254
lb=0 rm=0 mb=0 xvz=1 yvz=1 xo=0 yo=0 xd=255 yd=253
lb=0 rm=0 mb=0 xvz=0 yvz=1 xo=0 yo=0 xd=0 yd=252
lb=0 rm=0 mb=0 xvz=1 yvz=1 xo=0 yo=0 xd=255 yd=250
lb=0 rm=0 mb=0 xvz=0 yvz=1 xo=0 yo=0 xd=0 yd=252
Daraus folgt.
Wenn ich die Bytes 2 und 3 als signed behandle ist zu erkennen, dass tatsächlich nur +-127 ausgegeben wird. char ist auf dem Raspian anscheinend ein unsigned char.
Code:
lb=0 rm=0 mb=0 xvz=1 yvz=0 xo=0 yo=0 xd=-7 yd=0
lb=0 rm=0 mb=0 xvz=1 yvz=1 xo=0 yo=0 xd=-6 yd=-2
lb=0 rm=0 mb=0 xvz=1 yvz=0 xo=0 yo=0 xd=-9 yd=0
lb=0 rm=0 mb=0 xvz=1 yvz=1 xo=0 yo=0 xd=-11 yd=-1
lb=0 rm=0 mb=0 xvz=1 yvz=0 xo=0 yo=0 xd=-11 yd=0
lb=0 rm=0 mb=0 xvz=1 yvz=1 xo=0 yo=0 xd=-11 yd=-1
Lesezeichen