Não foi possível encontrar nada on-line, e imaginei que isso não seria muito difícil de fazer, então fui em frente e construí um. Requer Microsoft .NET Framework 4.0 para ser executado .
Inverter do mouse do polinômio (freeware, sob CC-BY-NC- Licença SA) - ( Link Alt )
Deixe-me saber como isso funciona para você:)
Desculpe, demorou muito, mas aqui está o código que realmente faz a inversão:
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;
}
Acabei de retirar isso do executável com o Telerik JustDecompile, porque não tenho o código original. Você pode extrair um projeto VS inteiro com JD se precisar do código completo do aplicativo.