시스템 전체에서 마우스 이동 (X 및 Y 축)을 어떻게 되돌릴 수 있습니까? (승 7 x64) 만듭니다. 옛날에는 마우스

짧은 버전

X 및 Y 마우스 축 이동을 반대로하는 방법을 찾고 있습니다. 컴퓨터에서 Windows 7, x64 및 Logitech SetPoint 6.32가 실행되고 있습니다. 시스템 수준의 영구적 인 수정을 원합니다. 마우스 드라이버 수정 또는 레지스트리 조정과 같은 누구든지 이것을 구현하는 견고한 방법이나 이것을 변경하기 위해 레지스트리 값을 찾는 방법을 알고 있습니까? 마우스와 트랙볼에 대해 SetPoint 6.32의 오리엔테이션 기능을 활성화하는 방법에 대해 매우 기쁘게 생각합니다.

Long Version
사람들은 내가 왜 이것을 원하는지 이해하지 못하는 것 같습니다. 나는 보통 “마우스를 오른쪽으로 사용하십시오!” 조언. 실독증은 “바로 물건을 올바르게 읽는 것”만으로 치료할 수있는 것이 아닙니다. 도와 주려는 노력에 감사하지만 일부 배경이 사람들이 이해하는 데 도움이되기를 바랍니다.

마우스 움직임이 거꾸로 발생하는 비정상적인 난독증을 가진 사용자가 있습니다. 커서를 왼쪽으로 움직이려면 마우스를 오른쪽으로 움직입니다. 커서를 위로 움직이려면 마우스를 아래로 내립니다. 그녀는 마우스를 거꾸로 세운 채 정교한 클릭이 어렵고 인체 공학적으로 끔찍하며 멀티 버튼 마우스를 완전히 쓸모 없게 만듭니다.

옛날에는 마우스 드라이버에 마우스 이동과 커서 이동 사이의 관계를 설정하는 데 사용할 수있는 방향 기능 (일반적으로 마우스 움직임 방향을 설정하기 위해 위로 끌어온 열기구)이 포함되었습니다. 몇 년 전, 마우스 드라이버는 “개선”되었으며이 기능은 트랙볼로 제한되었습니다.

오리엔테이션 기능을 잃은 후 Logitech SetPoint에 대한 조정 인 UberOptions를 찾을 때까지 거꾸로 마우스로 거꾸로 돌아가서 모든 포인팅 장치에 대한 모든 기능을 활성화합니다. 방향 기능이 포함되었습니다. 그리고 기뻐했습니다.

이제 그녀의 마우스가 죽었고 현재 Logitech 마우스에는 UberOptions가 업데이트되지 않은 최신 버전의 SetPoint가 필요합니다. 또한 MAF-Mouse (개발자는 64 비트 Windows 용 버전은 아직 USB 마우스를 지원하지 않음을 나타냄 )와 Sakasa (작동하는 동안 웹에 대한 논평은 무작위로 자주 끊어지는 경향이 있음 )을 보았습니다 . 시스템 전체가 아닌 실행중인 프로그램).

매우 정교한 레지스트리 해킹을 보았습니다. 예를 들어, F-Lock 키가 발명되었을 때 F1-F12 키로 만든 코드를 변경하고 기본적으로 키보드를 조이는 해킹을 사용했습니다. 레지스트리에서 X와 Y를 뒤집을 수있는 방법이 있기를 바랍니다. 또는 비슷한 다른 시스템 수준의 조정이 있습니다.

다른 솔루션은 트랙볼뿐만 아니라 마우스의 방향 기능을 다시 활성화 할 수 있습니다. 입력 장치 드라이버에 접근성 문제에 필연적으로 필요한 기능이 포함되어 있다는 것은 매우 실망 스럽지만, 드라이버를 더 멍청이 방지하기 위해 비활성화되었습니다.



답변

온라인에서 아무것도 찾을 수 없었고, 이것이 만들기가 너무 어려워서는 안된다고 생각했기 때문에 직접 만들어 보았습니다. 실행하려면 Microsoft .NET Framework 4.0이 필요 합니다.

다항식 마우스 인버터 (CC-BY-NC-SA 라이센스에 따라 프리웨어)-( Alt 링크 )

그것이 당신을 위해 어떻게 작동하는지 알려주세요 🙂


죄송합니다. 시간이 오래 걸리지 만 실제로 반전을 수행하는 코드는 다음과 같습니다.

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 프로젝트를 추출 할 수 있습니다.


답변

마우스 동작을 반대로하는 SakasaMouse 라는 프로그램이 있습니다 .

SakasaMouse는 x 축 및 / 또는 y 축에서 마우스 커서 이동 방향을 반전시키는 프리웨어입니다.

마우스를 오른쪽으로 움직이면 마우스 포인터가 왼쪽으로 움직입니다.

방금 구입 한 새로운 무선 장치를 포함하여 모든 마우스에서 작동합니다. 그것의 유일한 문제는 경고없이 다시 전환 할 수 있다는 것입니다.


답변

나는 MAFMouse의 저자이며 x64 버전이 아직 USB 마우스에서 작동하지 않는다는 것이 사실입니다 (32 비트 버전은 작동합니다!). 나는 현재이 일을하기에 너무 바쁩니다.

그래서 제 제안은 PS2 마우스를 사용하는 것입니다. 이것은 게임에서도 매우 훌륭하고 시스템 전체에서 작동합니다.

마우스를 180도 회전 한 다음 (케이블이 사용자를 가리킴) 많은 사용자가이 드라이버에 매우 만족합니다. 흥미롭게도 하나는 제외하고 모두 여성입니다 🙂

Windows 7에서의 설치는 약간 복잡합니다. 자세한 내용은 저에게 연락하십시오 …


답변

흥미로운 반전 마우스 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 수정을 수행 할 가능성도 확인합니다.


답변

나도 마우스 방향이 바뀌었고 XP에서 Intellipoint 4와 PS2 마우스를 사용하여 마우스를 사용했습니다.

Win 7 PC를 구입 한 이후 Intellipoint 4는 실행되지 않으므로 Logitech USB 마우스와 함께 Setpoint 4.8을 사용합니다. uberoptions 웹 페이지에서 지원되는 장치 목록을 제공합니다. 2009 년 이래로 새로운 마우스에 대한 개발은 이루어지지 않았으므로 더 오래된 마우스를 찾아야합니다. M500 마우스는 여전히 무료로 제공됩니다.