26

Укороченная версия

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

Длинная версия Люди, кажется, никогда не понимают, почему я хочу этого, и я часто слышу «просто используйте мышь правой стороной вверх!" совет. Дислексия - это не то, что можно вылечить, «просто правильно прочитав». Хотя я ценю попытки помочь, я надеюсь, что некоторые знания могут помочь людям понять.

У меня есть пользователь с необычной формой дислексии, для которого движения мыши назад. Если она хочет переместить курсор влево, она переместит мышь вправо. Если она хочет, чтобы курсор двигался вверх, она будет двигать мышь вниз. Раньше она держала свою мышь вверх ногами, что затрудняет сложные нажатия, ужасно для эргономики и делает многокнопочные мыши совершенно бесполезными.

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

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

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

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

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

5 ответов5

18

Ничего не нашел в Интернете, и я подумал, что это не должно быть слишком сложно сделать, поэтому я решил сделать это сам. Требуется Microsoft .NET Framework 4.0 для запуска.

Полиномиальный Мышиный Инвертор (бесплатная, под лицензией 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, если вам нужен полный код приложения.

9

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

SakasaMouse - это бесплатная программа для изменения направления движения курсора мыши по оси X и / или Y.

Если вы перемещаете мышь вправо, указатель мыши перемещается влево.

Это работает для каждой мыши, включая новую беспроводную, только что купленную. Единственная проблема с ним заключается в том, что он может переключиться обратно без предупреждения, что может немного смущать.

5

Я являюсь автором MAFMouse, и правда, что версия x64 еще не работает с мышами USB (32-битная версия работает!). Я сейчас слишком занят, чтобы работать над этим.

Поэтому я предлагаю использовать мышь PS2 - она работает очень хорошо и для всей системы, даже для игр.

У меня есть много пользователей, которым раньше приходилось использовать мышь, повернутую на 180 градусов (с кабелем, указывающим на пользователя), и они очень довольны этим драйвером. Интересно, что все кроме одной женщины :)

Установка в Windows 7 немного сложна, пожалуйста, свяжитесь со мной для деталей ...

3

Есть интересный инверсионный мышиный скрипт 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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .