Como posso reverter o movimento do mouse (eixo X e Y) em todo o sistema? (Ganhe 7 x64)

27

Versão curta

Estou procurando uma maneira de reverter os movimentos dos eixos X e Y do mouse. O computador está executando o Windows 7, x64 e o Logitech SetPoint 6.32. Eu gostaria de uma correção permanente no nível do sistema; como uma modificação do driver do mouse ou um ajuste no registro. Alguém sabe de uma maneira sólida de implementar isso ou como encontrar os valores do registro para mudar isso? Ficarei feliz em saber como habilitar o recurso de orientação no SetPoint 6.32 para mouses e trackballs.

Versão longa As pessoas parecem nunca entender por que eu gostaria disso, e geralmente ouço "basta usar o mouse com o lado direito para cima!" conselho. A dislexia não é algo que possa ser curado "apenas lendo as coisas corretamente". Embora aprecie as tentativas de ajudar, espero que algumas informações possam ajudar as pessoas a entender.

Eu tenho um usuário com uma forma incomum de dislexia, para quem os movimentos do mouse são atrasados. Se ela quiser mover o cursor para a esquerda, ela moverá o mouse para a direita. Se ela quiser que o cursor se mova para cima, ela moverá o mouse para baixo. Ela costumava segurar o mouse de cabeça para baixo, o que dificulta o clique sofisticado, é péssimo para a ergonomia e torna os ratos com vários botões completamente inúteis.

Antigamente, os drivers do mouse incluíam um recurso de orientação (normalmente um balão de ar quente que você arrastava para cima para definir a orientação do movimento do mouse) que poderia ser usado para definir a relação entre o movimento do mouse e o movimento do cursor. Vários anos atrás, os drivers do mouse foram "aprimorados" e esse recurso foi limitado a trackballs.

Depois de perder o recurso de orientação, voltou ao mouse de cabeça para baixo por um tempo, até encontrar o UberOptions , um ajuste para o Logitech SetPoint , que habilitaria todos os recursos para todos os dispositivos apontadores. Isso incluiu o recurso de orientação. E houve muita alegria.

Agora, o mouse morreu e os atuais Logitech exigem uma versão mais recente do SetPoint para a qual o UberOptions não foi atualizado. Também vimos o MAF-Mouse (o desenvolvedor indicou que a versão para Windows de 64 bits ainda não suporta mouses USB) e Sakasa (enquanto funciona, comentários na web indicam que ele tende a quebrar aleatoriamente e com frequência. um programa em execução, portanto, não em todo o sistema.).

Eu vi alguns hacks de registro muito sofisticados. Por exemplo, eu costumava usar um hack que mudava os códigos criados pelas teclas F1-F12 quando a tecla F-Lock era inventada e tinha como padrão estragar meu teclado. Espero que haja uma maneira de inverter X e Y no registro; ou algum outro ajuste similar no nível do sistema.

Outra solução poderia ser reativar o recurso de orientação para ratos e trackballs. É muito frustrante que os drivers de dispositivo de entrada incluam a funcionalidade que precisamos desesperadamente para uma preocupação de acessibilidade, mas ela foi desativada em nome de tornar os drivers mais à prova de idiotas.

Scivitri
fonte
Meu tie-in pergunta sobre Electronics for uma solução de hardware de espírito: electronics.stackexchange.com/questions/29014/...
JYelton
1
Para sua informação, estou executando a versão mais recente do SetPoint (embora usando um mouse muito antigo que foi originalmente fornecido com a versão do SetPoint suportada pelo UberOptions por padrão), e o UberOptions ainda funciona. Você só precisa alterar manualmente a pasta do SetPoint para a pasta usada no SetPoint 6 ( setpointP). Veja aqui . Pessoalmente, gostaria que a Logitech contratasse os desenvolvedores do UberOptions já. O SetPoint é atroz e torna seus teclados / mouses quase inutilizáveis ​​sem uberOptions.
Lèse majesté
1
@ Lèsemajesté Concordo plenamente em desejar que a Logitech contrate os desenvolvedores do UberOptions. Embora ela tenha o mouse antigo funcionando como você descreve, o mouse substituto não é suportado pelo UberOptions. Aparentemente, existe um SetPoint totalmente diferente para os mouses para jogos, e ela se apegou a todos os botões extras desde que conseguiu virar o mouse e alcançá-los.
Scivitri 03/04/12

Respostas:

18

Não consegui encontrar nada on-line, e achei que isso não deveria ser muito difícil de fazer, então fui em frente e construí um. Requer o Microsoft .NET Framework 4.0 para executar.

Inversor de mouse da Polynomial (freeware, sob licença CC-BY-NC-SA) - ( Alt Link )

Deixe-me saber como funciona para você :)


Desculpe, isso levou tanto tempo, mas aqui está o código que realmente faz a inversão:

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;
}

Acabei de extrair isso do executável com o Telerik JustDecompile, porque não tenho o código original. Você pode extrair um projeto VS completo com o JD se precisar do código completo do aplicativo.

Polinomial
fonte
1
Obrigado! Isso foi muito mais esforço do que eu esperava! Vamos testá-lo e ver como isso funciona para ela.
Scivitri
Sem problemas. Realmente não foi tão difícil de criar. Depois de limpar um pouco e adicionar alguns recursos extras, lançarei como código-fonte aberto.
polinomial
Existe alguma chance de você liberar o código em breve? Ou você pode enviá-lo para mim? :)
Dirk
Acabei de cavar meu disco rígido antigo, mas parece que este código foi perdido :( Se eu tiver tempo, vou fazer engenharia reversa de volta do executável.
Polynomial
1
Código do @remyabel Core adicionado. O descanso pode ser retirado com JustDecompile, se você precisar.
Polinômio
10

Existe um programa chamado SakasaMouse que reverte os movimentos do mouse:

O SakasaMouse é um freeware para reverter a direção do movimento do cursor do mouse no eixo xe / ou eixo y.

Se você mover o mouse para a direita, o ponteiro do mouse se moverá para a esquerda.

Ele funciona para todos os mouse, incluindo um novo sem fio recém-comprado. O único problema é que é possível voltar sem aviso, o que pode ser um pouco desconcertante.

Fred Davis
fonte
Depois de entrar novamente em um computador bloqueado, o cursor do mouse ficou invisível. Foi um pouco complicado navegar até a bandeja de tarefas para fechar o aplicativo. Windows 8.1
user3071284
5

Eu sou o autor do MAFMouse e é verdade que a versão x64 ainda não funciona com mouses USB (a versão de 32 bits!). Atualmente, estou muito ocupado para trabalhar nisso.

Portanto, minha sugestão é usar um mouse PS2 - isso funciona muito bem e em todo o sistema, mesmo para jogos.

Eu tenho muitos usuários que tiveram que usar o mouse girado 180 graus antes (com o cabo apontando para o usuário) e estão muito felizes com esse driver. Curiosamente, todos, exceto um, são mulheres :)

A instalação no Windows 7 é um pouco complicada, entre em contato comigo para mais detalhes ...

Moritz
fonte
Se não for muito problema, seria tornar esta resposta mais útil para outros usuários se você pudesse postar instruções ou um link para eles para instalá-lo no Windows 7.
lesa majestade
1
Como não ofereço esta versão beta para download público, as instruções de instalação por si só não ajudarão :) É complicado, portanto, criar essas instruções será um pouco trabalhoso e primeiro desejo finalizar o driver. Se você quiser ajudar com as instruções, seja bem-vindo!
Moritz
1
@Moritz Obrigado por vir ao SE e participar da discussão! Infelizmente, acho que a placa-mãe ainda não possui uma porta PS2. Eles são meio obsoletos. Ela também está um pouco ligada aos mouses mais cheios de botões, que tendem a ser apenas USB.
Scivitri 03/04/12
como eles podem clicar nos botões com essa posição?
Phuclv
Atualização importante: eu sou o autor do MAFMouse e a restrição para 32 bits agora se foi. O x64 é suportado e o driver está assinado agora, portanto, a instalação é muito mais fácil. Está disponível mediante solicitação (atualmente sem download) e funciona muito bem e em todo o sistema, mesmo para jogos (ou seja, a inversão comum do eixo Y). -Moritz
maf-soft
3

Há um script AHK invertido interessante do mouse:

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

Eu peguei aqui: https://autohotkey.com/board/topic/17828-invert-mouse-axis/

No seu caso, eu até verificaria a possibilidade de fazer uma modificação rápida no HW para inverter o eixo dentro do mouse.

barraca
fonte
0

Eu também tenho a orientação do mouse invertida e costumava fazer isso no XP com o Intellipoint 4 e um mouse PS2.

Desde que comprei um PC Win 7, o Intellipoint 4 não funcionará, e agora uso o Setpoint 4.8 com um mouse USB da Logitech. Na página de uberoptions, fornece uma lista de dispositivos suportados. Parece que nenhum desenvolvimento foi feito desde 2009 para novos mouses, então você precisa encontrar um mouse mais antigo. O mouse M500 ainda está disponível gratuitamente.

Guy Graham
fonte