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

Как я могу изменить направление движения мыши (ось X и Y) в масштабе всей системы? (Win 7 x64)

Короткая версия 0x2 и 0x2 и я ищу способ обратить вспять движение по оси X и Y мыши. Компьютер работает под управлением Windows 7, x64 и Logitech SetPoint 6.32. Мне бы хотелось постоянное системное исправление; например, изменение драйвера мыши или подстройка реестра. Кто-нибудь знает о надежном способе реализации этого, или о том, как найти значения реестра, чтобы изменить это? Я с удовольствием остановлюсь на том, как включить функцию ориентации в SetPoint 6.32 для мышей, а также для трекболлов. 0x2 и 0x2 и Длинная версия люди, кажется, никогда не понимают, почему я хотел бы это, и я обычно слышу “просто используйте мышь правой стороны вверх” совет. Дислексия - это не то, что можно вылечить, “просто читая вещи правильно”. Хотя я ценю попытки помочь, я надеюсь, что некоторый фон может помочь людям понять. 0x2 и 0x2 и у меня есть пользователь с необычной формой дислексии, для которого движения мыши в обратном направлении. Если она хочет переместить курсор влево, она будет двигать мышь вправо. Если она хочет, чтобы курсор двигался вверх, она будет двигать мышь вниз. Раньше она держала мышь в перевернутом положении, что затрудняет сложное нажатие, ужасно сказывается на эргономике и делает многокнопочные мыши совершенно бесполезными.

В старые времена драйверы мыши включали функцию ориентации (обычно шарик с горячим воздухом, который вы перетаскивали вверх, чтобы установить ориентацию движения мыши), которую можно было использовать для установки связи между движением мыши и перемещением курсора. Несколько лет назад драйверы мыши были “улучшены”, и с тех пор эта функция была ограничена трекболом.

После потери функции ориентации она ненадолго вернулась к перевернутому мышке, пока не нашла UberOptions , подстройку для Logitech SetPoint , которая бы включала все функции для всех указывающих устройств. Это включало в себя функцию ориентации. И было много радости.

Теперь ее мышь умерла, а текущие мыши Logitech требуют более новую версию SetPoint, для которой не была обновлена функция UberOptions. Мы также видели MAF-Mouse (разработчик указал версию для 64-битной Windows, которая пока не поддерживает USB-мыши) и Sakasa (в то время как она работает, комментарии в Интернете говорят о том, что она имеет тенденцию ломаться случайно и часто. Кроме того, это просто работающая программа, так что она не является общесистемной).

я видел очень сложные взломы реестра. Например, я использовал взлом, который изменял коды, созданные клавишами F1-F12, когда была изобретена клавиша F-Lock, и по умолчанию портил мою клавиатуру. Я надеюсь, что есть способ перевернуть X и Y в реестре; или какая-нибудь другая, похожая, настройка на системном уровне.

Другим решением может быть повторное включение функции ориентации для мышей, а также трекболлов. Очень обидно, что драйверы устройств ввода включают в себя функциональность, которая нам крайне необходима для обеспечения доступности, но она была отключена во имя того, чтобы сделать драйверы более идиотскими.

Odpowiedzi (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, потому что у меня нет исходного кода. Вы можете извлечь весь VS проект с помощью JD, если вам нужен полный код приложения.

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

Есть программа под названием SakasaMouse , которая меняет направление движений мыши:

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/

В вашем случае я бы даже проверил возможность выполнения быстрой HW модификации для инвертирования оси внутри мыши…

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

У меня тоже изменилась ориентация мыши, и я делал это на XP с помощью Intellipoint 4 и мыши PS2.

С тех пор как я купил ПК Win 7, Intellipoint 4 на нем не работает, поэтому теперь я использую Setpoint 4.8 с мышью Logitech USB. На веб-странице uberoptions вы найдете список поддерживаемых устройств. Похоже, что разработка новых мышей не велась с 2009 года, поэтому вам придется искать старую мышь. Мышь M500 по-прежнему находится в свободном доступе.