如何在系统范围内反转鼠标移动(X 和 Y 轴)?(赢 7 x64)

Sci*_*tri 29 windows mouse windows-7

精简版

我正在寻找一种方法来反转 X 和 Y 鼠标轴的移动。计算机运行的是 Windows 7、x64 和 Logitech SetPoint 6.32。我想要一个系统级的永久修复;例如鼠标驱动程序修改或注册表调整。有谁知道实现这一点的可靠方法,或者如何找到注册表值来改变这一点?我会很高兴地解决如何在 SetPoint 6.32 中为鼠标和轨迹球启用方向功能。

长版 人们似乎永远不明白我为什么想要这个,我经常听到“只需将鼠标正面朝上使用!” 建议。阅读障碍不是通过“正确阅读”就可以治愈的。虽然我很欣赏提供帮助的尝试,但我希望一些背景知识可以帮助人们理解。

我有一个用户患有一种不寻常的阅读障碍,鼠标移动向后。如果她想向左移动光标,她将向右移动鼠标。如果她希望光标向上移动,她将向下移动鼠标。她过去常常将鼠标倒置,这使得复杂的点击变得困难,不符合人体工程学,并且使多键鼠标完全无用。

在过去,鼠标驱动程序包含一个方向功能(通常是您向上拖动以设置鼠标移动方向的热气球),可用于设置鼠标移动和光标移动之间的关系。几年前,鼠标驱动程序得到了“改进”,此后此功能仅限于轨迹球。

在失去方向功能后,她又回到了倒置鼠标一段时间,直到找到UberOptions,这是对Logitech SetPoint 的一个调整,它将启用所有指点设备的所有功能。这包括方向功能。有很多的欣喜。

现在她的鼠标已经死了,当前的 Logitech 鼠标需要更新版本的 SetPoint,而 UberOptions 尚未更新。我们还看到了MAF-Mouse(开发人员表示 64 位 Windows 的版本尚不支持 USB 鼠标)和Sakasa(虽然它可以工作,但网络上的评论表明它往往会随机损坏。它也只是一个正在运行的程序,所以不是系统范围的。)。

我见过一些非常复杂的注册表黑客。例如,当 F-Lock 键被发明并默认为拧紧我的键盘时,我曾经使用一种 hack 来更改由 F1-F12 键创建的代码。我希望有一种方法可以在注册表中翻转 X 和 Y;或其他一些类似的系统级调整。

另一种解决方案可能是重新启用鼠标和轨迹球的方向功能。非常令人沮丧的是,输入设备驱动程序包含我们迫切需要的可访问性问题的功能,但它以使驱动程序更加防白痴的名义被禁用。

Pol*_*ial 20

在网上找不到任何东西,我想这应该不会太难做,所以我继续自己做了一个。需要Microsoft .NET Framework 4.0才能运行。

Polynomial 的鼠标逆变器(免费软件,在 CC-BY-NC-SA 许可下) - ( Alt Link )

让我知道它对你有什么作用:)


对不起,这花了这么长时间,但这里是实际执行反转的代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

我刚刚使用 Telerik JustDecompile 从可执行文件中提取了它,因为我没有原始代码。如果需要完整的应用程序代码,可以使用 JD 提取整个 VS 项目。


小智 10

有一个名为SakasaMouse的程序可以反转鼠标移动:

SakasaMouse 是一个免费软件,用于在 x 轴和/或 y 轴上反转鼠标光标的移动方向。

如果将鼠标向右移动,鼠标指针将向左移动。

它适用于所有鼠标,包括刚购买的新无线鼠标。它的唯一问题是它可能会在没有警告的情况下切换回来,这可能有点令人不安。


maf*_*oft 5

我是 MAFMouse 的作者,x64 版本不适用于 USB 鼠标已不再是事实——它在系统范围内工作得非常好,即使对于游戏也是如此。

我有很多用户以前不得不使用旋转 180 度的鼠标(电缆指向用户),他们对这个驱动程序非常满意。有趣的是,除了一位之外,所有人都是女性:)

安装有点复杂,详细请联系我...


小智 5

有一个有趣的反转鼠标 AHK 脚本:

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
Run Code Online (Sandbox Code Playgroud)

我从这里得到它: https ://autohotkey.com/board/topic/17828-invert-mouse-axis/

在你的情况下,我什至会检查进行一些快速硬件修改以反转鼠标内部轴的可能性。