2012-03-30 06:10:10 +0000 2012-03-30 06:10:10 +0000
27
27

Comment puis-je inverser le mouvement de la souris (axes X et Y) à l'échelle du système ? (Gagnez 7 x64)

Version courte

Je cherche un moyen d'inverser les mouvements des axes X et Y de la souris. L'ordinateur fonctionne sous Windows 7, x64 et Logitech SetPoint 6.32. Je voudrais une correction permanente au niveau du système, comme une modification du pilote de la souris ou un ajustement du registre. Quelqu'un connaît-il un moyen solide de le mettre en œuvre, ou comment trouver les valeurs du registre pour le modifier ? Je me contenterai volontiers de savoir comment activer la fonction d'orientation de SetPoint 6.32 pour les souris et les trackballs.

Long Version Les gens semblent ne jamais comprendre pourquoi je voudrais cela, et j'entends couramment des conseils du genre “utilisez la souris à l'endroit”. La dyslexie ne se guérit pas en “lisant les choses correctement”. Bien que j'apprécie les tentatives d'aide, j'espère qu'un peu de contexte pourra aider les gens à comprendre.

J'ai un utilisateur avec une forme inhabituelle de dyslexie, pour qui les mouvements de la souris sont à l'envers. Si elle veut déplacer son curseur vers la gauche, elle déplacera la souris vers la droite. Si elle veut que le curseur se déplace vers le haut, elle déplacera la souris vers le bas. Elle avait l'habitude de tenir sa souris à l'envers, ce qui rend le clic sophistiqué difficile, est terrible pour l'ergonomie et rend les souris à plusieurs boutons complètement inutiles.

Autrefois, les pilotes de souris comprenaient une fonction d'orientation (généralement une montgolfière que l'on faisait glisser vers le haut pour régler l'orientation du mouvement de la souris) qui pouvait être utilisée pour définir la relation entre le mouvement de la souris et celui du curseur. Il y a plusieurs années, les pilotes de souris ont été “améliorés” et cette fonction a depuis été limitée aux trackballs.

Après avoir perdu la fonction d'orientation, elle est revenue à la souris à l'envers pendant un certain temps, jusqu'à trouver UberOptions , une mise au point pour Logitech SetPoint , qui permettrait d'activer toutes les fonctions pour tous les dispositifs de pointage. Cela inclut la fonction d'orientation. Et il y a eu beaucoup de réjouissances.

Maintenant, sa souris est morte, et les souris Logitech actuelles nécessitent une nouvelle version de SetPoint pour laquelle UberOptions n'a pas été mis à jour. Nous avons également vu MAF-Mouse (le développeur a indiqué que la version pour Windows 64 bits ne supporte pas encore les souris USB) et Sakasa (bien que cela fonctionne, les commentaires sur le web indiquent qu'elle a tendance à se casser aléatoirement et souvent. Il s'agit également d'un programme en cours d'exécution, donc pas à l'échelle du système).

J'ai vu des piratages de registres très sophistiqués. Par exemple, j'avais l'habitude d'utiliser un hack qui changeait les codes créés par les touches F1-F12 lorsque la touche F-Lock a été inventée et qui, par défaut, bousillait mon clavier. J'espère qu'il y a un moyen d'inverser les X et les Y dans le registre ; ou une autre modification similaire au niveau du système.

Une autre solution pourrait être de réactiver la fonction d'orientation pour les souris, ainsi que les trackballs. Il est très frustrant que les pilotes de périphériques d'entrée incluent la fonctionnalité dont nous avons désespérément besoin pour des raisons d'accessibilité, mais elle a été désactivée pour rendre les pilotes plus sûrs.

Réponses (5)

18
18
18
2012-03-30 23:31:51 +0000

Je n'ai rien trouvé en ligne et je me suis dit que ça ne devrait pas être trop difficile à réaliser, alors j'ai décidé d'en construire un moi-même. Nécessite Microsoft .NET Framework 4.0 pour fonctionner. Polynomial’s Mouse Inverter (freeware, sous licence CC-BY-NC-SA) - Alt Link )

Faites-moi savoir comment cela fonctionne pour vous :)


Désolé que cela ait pris autant de temps, mais voici le code qui fait réellement l'inversion :

internal class Inverter
{
    private Point pos = Cursor.Position;

    private bool invertX;

    private bool invertY;

    private bool running;

    private bool exit;

    public bool InvertX
    {
        get
        {
            return this.invertX;
        }
        set
        {
            this.invertX = value;
            if (this.InvertSettingsChanged != null)
            {
                this.InvertSettingsChanged(this, new EventArgs());
            }
        }
    }

    public bool InvertY
    {
        get
        {
            return this.invertY;
        }
        set
        {
            this.invertY = value;
            if (this.InvertSettingsChanged != null)
            {
                this.InvertSettingsChanged(this, new EventArgs());
            }
        }
    }

    public bool Running
    {
        get
        {
            return this.running;
        }
    }

    public Inverter(bool x, bool y)
    {
        this.invertX = x;
        this.invertY = y;
        this.pos = Cursor.Position;
    }

    private void MouseLoop()
    {
        Thread.CurrentThread.IsBackground = true;
        Thread.CurrentThread.Priority = ThreadPriority.Highest;
        while (!this.exit)
        {
            Point position = Cursor.Position;
            int right = (this.invertX ? this.pos.X - (position.X - this.pos.X) : position.X);
            if (this.invertX)
            {
                if (right < 2)
                {
                    right = 2;
                }
                if (right > Screen.FromPoint(position).Bounds.Right - 2)
                {
                    Rectangle bounds = Screen.FromPoint(position).Bounds;
                    right = bounds.Right - 2;
                }
            }
            int bottom = (this.invertY ? this.pos.Y - (position.Y - this.pos.Y) : position.Y);
            if (this.invertY)
            {
                if (bottom < 2)
                {
                    bottom = 2;
                }
                if (bottom > Screen.FromPoint(position).Bounds.Bottom - 2)
                {
                    Rectangle rectangle = Screen.FromPoint(position).Bounds;
                    bottom = rectangle.Bottom - 2;
                }
            }
            Cursor.Position = new Point(right, bottom);
            this.pos = Cursor.Position;
            Thread.Sleep(1);
        }
        this.exit = false;
    }

    public void Start()
    {
        this.pos = Cursor.Position;
        this.running = true;
        (new Thread(new ThreadStart(this.MouseLoop))).Start();
    }

    public void Stop()
    {
        this.running = false;
        this.exit = true;
    }

    public event EventHandler InvertSettingsChanged;
}

Je viens de le sortir de l'exécutable avec Telerik JustDecompile, parce que je n'ai pas le code original. Vous pouvez extraire un projet VS entier avec JD si vous avez besoin du code complet de l'application.

10
10
10
2013-03-29 21:10:55 +0000

Il existe un programme appelé SakasaMouse qui inverse les mouvements de la souris :

SakasaMouse est un logiciel gratuit qui permet d'inverser le sens de déplacement du curseur de la souris sur l'axe x et/ou l'axe y.

Si vous déplacez la souris vers la droite, le pointeur de la souris se déplace vers la gauche.

Il fonctionne pour toutes les souris, y compris celles sans fil qui viennent d'être achetées. Le seul problème, c'est qu'elle est susceptible de revenir en arrière sans avertissement, ce qui peut être un peu déconcertant.

5
5
5
2012-04-01 07:14:25 +0000

Je suis l'auteur de MAFMouse et il est vrai que la version x64 ne fonctionne pas encore avec les souris USB (la version 32 bits le fait !). Je suis actuellement trop occupé pour travailler sur ce sujet.

Donc ma suggestion est d'utiliser une souris PS2 - cela fonctionne très bien et à l'échelle du système, même pour les jeux.

J'ai beaucoup d'utilisateurs qui ont dû utiliser la souris tournée de 180 degrés auparavant (avec le câble pointant vers l'utilisateur) et ils sont très satisfaits de ce pilote. Il est intéressant de noter que tous sauf un sont des femmes :)

L'installation sous Windows 7 est un peu compliquée, contactez-moi pour plus de détails…

3
3
3
2016-04-20 23:54:18 +0000

Il existe un intéressant script AHK de souris inversée :

BlockInput Mouse
SetMouseDelay -1

MouseGetPos x0, y0
SetTimer WatchMouse, 1
Return

WatchMouse:
   MouseGetPos x, y
   MouseMove 2*(x0-x), 2*(y0-y), 0, R
   MouseGetPos x0, y0
Return

!z::ExitApp

Je l'ai eu ici https://autohotkey.com/board/topic/17828-invert-mouse-axis/

Dans votre cas, je vérifierais même la possibilité de faire une modification rapide de HW pour inverser l'axe à l'intérieur de la souris…

0
0
0
2012-07-15 12:16:41 +0000

Moi aussi, j'ai inversé l'orientation de ma souris et je le faisais sur XP avec Intellipoint 4 et une souris PS2.

Depuis que j'ai acheté un PC Win 7, Intellipoint 4 ne fonctionne pas dessus, et j'utilise donc maintenant Setpoint 4.8 avec une souris Logitech USB. Sur la page web uberoptions, vous trouverez une liste des périphériques pris en charge. Il semble qu'aucun développement n'ait été effectué depuis 2009 environ pour les nouvelles souris, il faut donc trouver une souris plus ancienne. La souris M500 est toujours disponible gratuitement.