Réduire la sensibilité de la souris USB

Les joueurs aiment avoir des souris de haute résolution, mais ce peut être pénible pour placer la souris précisément sur la timeline d'un écran vidéo. XFree86 vous permettait de diminuer la sensibilité des souris de type PS/2 en utilisant des commandes telles que xset m 1 1 mais vous n'avez pas cette chance si vous utilisez une souris USB ou KVM.

Il y a une manière de réduire la sensibilité de la souris USB mais elle demande d'éditer le code source du noyau. Même si les souris USB sont gérées depuis des années, le code source du noyau pour les souris USB est en perpétuelle réécriture. Les informations qui suivent s'appliquent pour la version 2.6.12.3. Éditez /usr/src/linux/drivers/input/mousedev.c.

Après la ligne suivante :

     struct mousedev_hw_data {

mettez :

     #define DOWNSAMPLE_N 100
     #define DOWNSAMPLE_D 350
     int x_accum, y_accum;

Ensuite, la section qui ressemble ceci :

     case EV_REL:
     	switch (code) {
       		case REL_X:	mousedev->packet.dx += value; break;
       		case REL_Y:	mousedev->packet.dy -= value; break;
       		case REL_WHEEL:	mousedev->packet.dz -= value; break;
     	}
     	break;

doit être remplacée par :

   case EV_REL:
   	switch (code) {
		case REL_X:
       			mousedev->packet.x_accum += value * DOWNSAMPLE_N;
       			mousedev->packet.dx += (int)mousedev->packet.x_accum / (int)DOWNSAMPLE_D;
       			mousedev->packet.x_accum -= ((int)mousedev->packet.x_accum / (int)DOWNSAMPLE_D) * (int)DOWNSAMPLE_D;
       			break;
       		case REL_Y:
       			mousedev->packet.y_accum += value * DOWNSAMPLE_N;
       			mousedev->packet.dy -= (int)mousedev->packet.y_accum / (int)DOWNSAMPLE_D;
       			mousedev->packet.y_accum -= ((int)mousedev->packet.y_accum / (int)DOWNSAMPLE_D) * (int)DOWNSAMPLE_D;
       			break;
       		case REL_WHEEL:	mousedev->packet.dz -= value; break;
     	}
	break;

Modifiez la valeur de DOWNSAMPLE_N pour changer la sensibilité de la souris.