简洁版本
我正在寻找一种方法来反转鼠标 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 鼠标仍可免费获得。