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

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

简洁版本

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

长版本 人们似乎永远无法理解我为什么要这样做,我经常听到“只要鼠标朝上就行!”的建议。阅读障碍不是“只要正确阅读”就能治愈的。虽然我很感激大家的帮助,但我希望一些背景知识可以帮助人们理解。

我有一个患有阅读障碍症的用户,她的鼠标移动方式很不寻常。如果她想将光标向左移动,她会将鼠标向右移动。如果她想将光标向上移动,她会将鼠标向下移动。她过去常常将鼠标倒着拿,这让复杂的点击变得困难,对人体工程学来说很糟糕,并且让多键鼠标完全没用。

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

在失去定位功能后,她又回到了倒置鼠标模式,直到发现Uber选项,调整为罗技 SetPoint,这将启用所有指点设备的所有功能。其中包括方向功能。这让人欣喜若狂。

现在她的鼠标坏了,目前的 Logitech 鼠标需要较新版本的 SetPoint,而 UberOptions 尚未更新。我们还看到MAF-小鼠(开发人员指出 64 位 Windows 版本尚不支持 USB 鼠标)和坂佐(虽然它可以工作,但网络上的评论表明它往往会随机且频繁地中断。它也只是一个正在运行的程序,因此不是系统范围的。)

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

另一个解决方案可能是重新启用鼠标和轨迹球的方向功能。令人沮丧的是,输入设备驱动程序包含了我们迫切需要的可访问性功能,但却以让驱动程序更安全为由将其禁用。

答案1

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

Polynomial 的鼠标逆变器(免费软件,根据 CC-BY-NC-SA 许可)-(替代链接

请让我知道你的效果如何:)


抱歉,这花了这么长时间,但是这是实际执行反转的代码:

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

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

答案2

有一个项目叫萨卡萨鼠反转鼠标的移动:

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

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

它适用于所有鼠标,包括刚买的无线鼠标。唯一的问题是它可能会毫无预警地切换回来,这可能有点令人不安。

答案3

我是 MAFMouse 的作者,x64 版本不再不支持 USB 鼠标 - 它运行良好,并且适用于全系统,甚至适用于游戏。

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

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

答案4

我的鼠标方向也反转了,我以前在 XP 上使用 Intellipoint 4 和 PS2 鼠标做过同样的事。

自从购买了 Win 7 PC 后,Intellipoint 4 就无法在其上运行,因此我现在使用 Setpoint 4.8 和 Logitech USB 鼠标。在 uberoptions 网页上,它为您提供了受支持设备的列表。似乎自 2009 年左右以来就没有开发过新鼠标,因此您必须找到旧鼠标。M500 鼠标仍可免费获得。

相关内容