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

システム全体でマウスの動き(X&Y軸)を逆にするにはどうすればいいですか?(Win 7 x64)

ショートバージョン

マウスのX軸とY軸の動きを逆にする方法を探しています。コンピュータはWindows 7, x64とLogitech SetPoint 6.32を実行しています。マウスドライバの変更やレジストリの調整など、システムレベルでの恒久的な修正を希望しています。誰かこれを実装するための確かな方法を知っていますか、またはこれを変更するためのレジストリ値を見つける方法を知っていますか?私は、SetPoint 6.32 のマウスとトラックボールのためのオリエンテーション機能を有効にする方法で満足しています。

ロングバージョン _人々は私がなぜこの機能を必要とするのか理解していないようで、「マウスを右上にして使えばいいじゃないか!」というアドバイスをよく耳にします。ディスレクシアは、「物事を正しく読むだけ」で治るものではありません。

私には、マウスの動きが後ろ向きになっている失読症の珍しい形のユーザーがいます。彼女がカーソルを左に動かしたい場合、マウスを右に動かします。カーソルを上に移動させたい場合は、マウスを下に移動させます。彼女は以前はマウスを上下逆さまにしていましたが、これでは洗練されたクリックが難しくなり、人間工学的にも酷く、多ボタンマウスは全く役に立たなくなってしまいました。

昔のマウスドライバには、マウスの動きとカーソルの動きの関係を設定するためのオリエンテーション機能(一般的には、マウスの動きの向きを設定するために上にドラッグした熱気球)が搭載されていました。数年前にマウスドライバが「改良」され、この機能はその後トラックボールに限定されました。

オリエンテーション機能を失った後、彼女は少しの間、逆さマウスに戻っていましたが、 UberOptions を見つけるまでは、 Logitech SetPoint の微調整を行いました。これはすべてのポインティングデバイスのすべての機能を有効にするものでした。そして、多くの喜びがありました。

今、彼女のマウスは死んでしまい、現在のロジクールのマウスは、UberOptionsが更新されていないSetPointの新しいバージョンを必要としています。また、 MAF-Mouse (開発元は64ビットWindows用のバージョンはまだUSBマウスをサポートしていないと指摘している)や Sakasa (動作はするが、ウェブ上のコメントによるとランダムに頻繁に壊れる傾向があるとのこと)も見てきました。また、実行中のプログラムなので、システム全体ではありません)。

非常に巧妙なレジストリハックを見たことがあります。例えば、F-Lockキーが発明された時にF1-F12キーで作成されたコードを変更して、デフォルトでキーボードをめちゃくちゃにしてしまうハックを使っていました。レジストリでXとYを反転させる方法があることを期待しています。

もう一つの解決策は、トラックボールだけでなく、マウスの向き機能を再度有効にすることです。入力デバイスドライバには、アクセス性の問題で私たちが必死に必要としている機能が含まれているのに、ドライバをよりバカになりにくいものにするという名目で無効化されているのは、非常にイライラします。

回答 (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 ](http://hp.vector.co.jp/authors/VA026826/)というマウスの動きを反転させるプログラムがあります。

SakasaMouseは、マウスのカーソルの動きをx軸やy軸で反転させるフリーウェアです。

マウスを右に動かすとマウスポインタが左に移動します。

買ったばかりのワイヤレスマウスを含め、全てのマウスで動作します。唯一の問題点は、警告なしに切り替わることがあることで、それが少し不穏な感じを与えることがあります。

5
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/

あなたの場合、私はマウスの内側の軸を反転させるためにいくつかの簡単なハードウェアの修正を行う可能性を確認します。

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

私もマウスの向きが逆になってしまい、以前はXPでIntellipoint 4とPS2のマウスを使っていました。

Win 7 の PC を購入してから Intellipoint 4 が動かなくなったので、今は Setpoint 4.8 と Logitech の USB マウスを使っています。uberoptionsのページには対応デバイスの一覧が載っています。どうやら2009年頃から新しいマウスの開発はされていないようなので、古いマウスを探すしかありません。M500マウスはまだ自由に使えるようです。