Voilà comment cela fonctionne:
Le Cirque intelligent CAT (modèle GDU410 - c'est un ancien modèle) rapporte 8 octets paquet. Initialement, le paquet ressemble à ceci:
Byte 0, bit 0: Left button
Byte 0, bit 1: Right button
Byte 0, bit 2: Side buttons (they cannot be distinguished)
Byte 1: Relative X data
Byte 2: Relative Y data
Bytes 3-7: 0
Pour passer en mode absolu, vous devrez envoyer les demandes de contrôle USB suivantes à l'appareil:
unsigned char buf[8];
do {
Usb_Control_Request(Type=0xC1, Request=0x6A, Index=0,
Value=0, Data Length=8, Data Buffer=buf)
} while(buf[0] & 8);
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xBB, Value=1, No data)
do { ... /* C1/6A, see above */ } while(buf[0] & 8);
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xB5, Value=0x3E0, No data)
do { ... /* C1/6A */ } while(buf[0] & 8);
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xA2, Value=0xFEE, No data)
do { ... /* C1/6A */ } while(buf[0] & 8);
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xB4, Value=0xE, No data)
do { ... /* C1/6A */ } while(buf[0] & 8);
Usb_Control_Request(Type=0x41, Request=0x64, Index=0, Value=0, No data)
do { ... /* C1/6A */ } while(buf[0] & 8);
Peut-être que sous Linux, cela peut être fait en utilisant "libusb". Bien que j'ai déjà fait du développement de pilotes sous Linux, je n'ai pas encore utilisé "libusb".
Après avoir fait cela, les paquets de 8 octets ressemblent à ceci:
Byte 0: Buttons, as before
Bytes 1-3: 0
Byte 4: low 8 bits of X finger position
Byte 5: bits 0-2: high 3 bits of X finger position
bits 3-7: low 5 bits of Y finger position
Byte 6: bits 0-5: high 6 bits of Y finger position
Byte 7, low 7 (?) bits: non-zero if finger touches pad, 0 if not
some pads report the finger pressure;
MAYBE this is done in this field.
Finger positions:
X position: left ~0x790, right ~0x70
Y position: top ~0, bottom ~0x5B0
Le pilote de périphérique fourni par Cirque utilise le mode de position absolue pour exécuter des fonctions de défilement et similaires qui dépendent de la position du doigt absolu.
Les pavés tactiles indiquent rarement les positions absolues. – relet
@relet. Oui, tu as raison. J'ai contacté le Cirque directement et ils ont signalé que leur pavé tactile ne pouvait que nous indiquer la direction et la vitesse et qu'il était impossible de lire les positions absolues. merci pour toutes les réponses. – OJ287