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

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

Advertisement

简版

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

长版 人们似乎从来没有理解过我为什么要这样做,我经常听到的建议是 “只要使用鼠标右面朝上就行了!"。阅读障碍不是 "把东西读对了 "就能治愈的。虽然我很感谢大家试图提供帮助,但我希望一些背景资料能帮助大家理解

我有一个用户有一种不寻常的阅读障碍,对她来说,鼠标移动是向后的。如果她想把光标向左移动,她会把鼠标向右移动。如果她想让光标向上移动,她就会把鼠标向下移动。她以前是倒着拿鼠标的,这让复杂的点击变得困难,对人体工程学来说很糟糕,而且让多键鼠标完全没用。

在旧时代,鼠标驱动中包含了一个定向功能(一般是一个热气球,你向上拖动就可以设置鼠标移动的方向),可以用来设置鼠标移动和光标移动的关系。几年前,鼠标驱动进行了 "改进",此后这一功能仅限于轨迹球。

在失去方向功能后,她又回到了倒立鼠标的状态,直到找到 UberOptions ,这是一个针对 罗技SetPoint 的调整,可以启用所有指向设备的所有功能。这包括方向功能。有很多人欢欣鼓舞。

现在她的鼠标已经死了,而目前的罗技鼠标需要一个较新版本的SetPoint,而UberOptions还没有更新。我们还看到了 MAF-Mouse (开发者表示64位Windows的版本还不支持USB鼠标)和 Sakasa (虽然它能用,但网络上的评论表明它往往会随机地经常坏掉。它也只是一个运行中的程序,所以不是全系统的)。)

我见过一些非常复杂的注册表黑客。例如,我曾经使用过一个黑客,它可以改变F1-F12键所创建的代码,当F-Lock键被发明出来后,就默认把我的键盘搞坏了。我希望有办法在注册表中翻转X和Y;或者有其他类似的系统级调整。

另一个解决方案可能是重新启用鼠标以及轨迹球的方向功能。非常令人沮丧的是,输入设备驱动程序包含了我们迫切需要的功能,以满足无障碍性的需求,但它却被以使驱动程序更容易被忽略的名义被禁用。

Advertisement

答案 (5)

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

在网上找不到任何东西,我想这个应该不会太难做,所以我就自己动手做了一个。需要 Microsoft .NET Framework 4.0 才能运行。 Polynomial’s Mouse Inverter (免费软件,在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;
}

我只是用Telerik JustDecompile从可执行文件中提取出来,因为我没有原始代码。如果你需要完整的应用代码,可以用JD提取整个VS项目。

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

有一个程序叫做 SakasaMouse ,它可以扭转鼠标的移动方向。

SakasaMouse是一个免费的软件,可以扭转鼠标指针在X轴和/或Y轴上的移动方向。

如果你向右移动鼠标,鼠标指针就会向左移动。

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

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

我是MAFMouse的作者,x64版本确实还不能用USB鼠标(32位版本可以!)。我目前太忙了,没有时间去研究这个问题。

所以我的建议是使用PS2鼠标–这非常好用,而且是全系统的,即使是游戏。

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

在Windows 7中安装有点复杂,详情请联系我……

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

有一个有趣的反转鼠标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

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

在你的情况下,我甚至会检查是否可以做一些快速的HW修改来反转鼠标内部的轴。

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

我也是鼠标方向反了,以前在XP上用Intellipoint 4和PS2鼠标就能做到。

自从买了一台Win 7电脑后,Intellipoint 4就不能在上面运行了,所以我现在使用Setpoint 4.8和罗技USB鼠标。在uberoptions网页上,它给了你一个支持设备的列表。似乎从2009年左右开始就没有开发过新的鼠标,所以你必须找一个老的鼠标。M500鼠标仍然可以免费使用。

Advertisement