J'ai trouvé ces deux API au http://linux.die.net/man/3/xgetpointermapping. Je pense qu'ils peuvent être utilisés pour échanger des boutons de souris sur le système Linux ou Mac. Je l'ai utilisé de la manière suivante:Utilisez XGetPointerMapping/XSetPointerMapping pour échanger les boutons de la souris
Display * curdisp; // Current display.
char curmap[MAX_NUM];// Current mapping.
int nmap; // number of mappings.
curdisp = XOpenDisplay(NULL);
nmap = XGetPointerMapping(curdisp, curmap, MAX_NUM);
if(!nmap)
return -1;
if(curmap[0] == '1' && curmap[2] == '3') {
curmap[0] = '3';
curmap[2] = '1';
} else {
curmap[0] = '1';
curmap[2] = '3';
}
//Set the mapping.
nmap = XSetPointerMapping(curdisp, curmap, nmap);
Mais le XSetPointerMapping d'appel renvoie 0 et il n'y a aucun effet sur le bouton de la souris. Quelqu'un peut-il donner un exemple d'échange de bouton de la souris en utilisant XSetPointerMapping? ou Comment l'utiliser correctement? Est-ce que ça va fonctionner immédiatement?
Le système d'exploitation utilisé est Mac OS X 10.7.4.
Merci pour la réponse. J'ai changé '1' à 1 et '3' à 3. Mais XSetPointerMapping retourne 0. Même après l'avoir exécuté sous sudo, il retourne zéro et il n'y a aucun impact sur le bouton de la souris. Quelle est la signification de 0 comme valeur de retour? Je suis tout à fait nouveau à la programmation X Windows. – doptimusprime
Fonctionne pour moi et je reçois un retour de zéro alors je pense que c'est ok. Essayez d'imprimer les valeurs de la carte pour les vérifier. Le seul autre changement que j'ai fait était d'utiliser char non signé. – parkydr
Le même programme fonctionne-t-il bien pour vous? Est-ce que je manque quelque chose pour curdisp? Je cours ce code sur Mac OS (Mountain Lion 10.7.4). Sur cette machine, il ne fonctionne pas. Je n'ai pas testé jusqu'à présent dans la machine Linux. – doptimusprime