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

Hoe kan ik muisbewegingen (X & Y as) systeembreed omkeren? (Win 7 x64)

Korte versie

Ik zoek een manier om de X en Y muisas bewegingen om te keren. Op de computer draait Windows 7, x64 en Logitech SetPoint 6.32. Ik wil graag een permanente oplossing op systeemniveau, zoals een wijziging in het muisstuurprogramma of een aanpassing in het register. Weet iemand een degelijke manier om dit te implementeren, of hoe ik de registerwaarden kan vinden om dit te wijzigen? Ik neem genoegen met een manier om de oriëntatie-functie in SetPoint 6.32 in te schakelen voor zowel muizen als trackballs.

Lange Versie _Mensen lijken nooit te begrijpen waarom ik dit zou willen, en ik hoor vaak het advies “gebruik de muis gewoon met de goede kant naar boven!”. Dyslexie is niet iets dat kan worden genezen door “gewoon dingen goed te lezen”. Hoewel ik de pogingen om te helpen waardeer, hoop ik dat wat achtergrondinformatie mensen zal helpen het te begrijpen. Ik heb een gebruiker met een ongebruikelijke vorm van dyslexie, voor wie muisbewegingen achterwaarts zijn. Als ze haar cursor naar links wil verplaatsen, beweegt ze de muis naar rechts. Als ze de cursor omhoog wil bewegen, beweegt ze de muis omlaag. Vroeger hield ze haar muis ondersteboven, wat geavanceerd klikken moeilijk maakt, vreselijk is voor de ergonomie, en muizen met meerdere knoppen volkomen nutteloos maakt.

Vroeger hadden muisstuurprogramma’s een oriëntatiefunctie (meestal een luchtballonnetje dat je omhoog sleepte om de oriëntatie van de muisbeweging in te stellen) waarmee de verhouding tussen muisbeweging en cursorbeweging kon worden ingesteld. Enkele jaren geleden werden muisstuurprogramma’s “verbeterd” en sindsdien is deze functie beperkt tot trackballs.

Nadat ze de oriëntatiefunctie kwijt was, ging ze weer een tijdje omgekeerd muizen, totdat ze UberOptions vond, een tweak voor Logitech SetPoint , waarmee alle functies voor alle aanwijsapparaten konden worden ingeschakeld. Dit omvatte ook de oriëntatiefunctie. En er was veel vreugde.

Nu is haar muis overleden, en de huidige Logitech-muizen vereisen een nieuwere versie van SetPoint waarvoor UberOptions niet is bijgewerkt. We hebben ook MAF-Mouse gezien (de ontwikkelaar gaf aan dat de versie voor 64-bit Windows nog geen USB muizen ondersteunt) en Sakasa (hoewel het werkt, geven commentaren op het web aan dat het de neiging heeft om willekeurig en vaak kapot te gaan. Het is ook slechts een draaiend programma, dus niet systeembreed.).

Ik heb enkele zeer geraffineerde register hacks gezien. Ik gebruikte bijvoorbeeld een hack die de codes van de F1-F12 toetsen veranderde toen de F-Lock toets werd uitgevonden en standaard mijn toetsenbord verpestte. Ik hoop dat er een manier is om X en Y om te draaien in het register; of een andere, vergelijkbare, tweak op systeemniveau.

Een andere oplossing zou kunnen zijn om de oriëntatie-functie voor muizen en trackballs weer in te schakelen. Het is erg frustrerend dat stuurprogramma’s voor invoerapparaten de functionaliteit bevatten die we zo hard nodig hebben voor de toegankelijkheid, maar dat die is uitgeschakeld in de naam van het idioter maken van de stuurprogramma’s.

Antwoorden (5)

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

Ik kon online niets vinden, en ik dacht dat dit niet al te moeilijk te maken moest zijn, dus heb ik er zelf maar een gebouwd. Vereist Microsoft .NET Framework 4.0 om te kunnen draaien. Polynomial’s Mouse Inverter (freeware, onder CC-BY-NC-SA licentie) - Alt Link )

Laat me weten hoe het werkt voor jou :)


Sorry dat het zo lang duurde, maar hier is de code die eigenlijk de inversie doet:

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

Ik heb dit net uit de executable gehaald met Telerik JustDecompile, omdat ik de originele code niet heb. Je kunt een heel VS project uitpakken met JD als je de volledige applicatiecode nodig hebt.

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

Er is een programma genaamd SakasaMouse dat de muisbewegingen omkeert:

SakasaMouse is een freeware om de richting van de muiscursorbeweging in x-as en/of y-as om te keren.

Als je de muis naar rechts beweegt, beweegt de muisaanwijzer naar links.

Het werkt voor elke muis, inclusief een nieuwe draadloze die net is gekocht. Het enige probleem is dat het zonder waarschuwing terug kan schakelen, wat een beetje verontrustend kan zijn.

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

Ik ben de auteur van MAFMouse en het is waar dat de x64 versie nog niet werkt met USB muizen (de 32 bits versie wel!). Ik heb het momenteel te druk om hieraan te werken.

Dus mijn suggestie is om een PS2 muis te gebruiken - dit werkt erg goed en systeembreed, zelfs voor spelletjes.

Ik heb veel gebruikers die de muis voorheen 180 graden gedraaid moesten gebruiken (met de kabel naar de gebruiker gericht) en zij zijn erg blij met deze driver. Interessant genoeg zijn het op een na allemaal vrouwen :)

Installatie in Windows 7 is een beetje ingewikkeld, neem contact met me op voor details…

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

Er is een interessant invert muis AHK script:

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

Ik heb het van hier https://autohotkey.com/board/topic/17828-invert-mouse-axis/

In uw geval zou ik zelfs de mogelijkheid controleren van het doen van een snelle HW wijziging om de as binnenin de muis om te keren…

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

Ook ik heb mijn muis oriëntatie omgedraaid en ik deed het vroeger op XP met Intellipoint 4 en een PS2 muis.

Sinds ik een Win 7 PC heb gekocht, wil Intellipoint 4 er niet op draaien, en dus gebruik ik nu Setpoint 4.8 met een Logitech USB muis. Op de uberoptions webpagina staat een lijst van ondersteunde apparaten. Het blijkt dat er sinds ongeveer 2009 geen ontwikkeling meer is gedaan voor nieuwe muizen, dus je moet op zoek naar een oudere muis. De M500 muis is nog steeds vrij verkrijgbaar.