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

27

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

Я ищу способ обратить вспять движения оси мыши 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 в реестре; или какой-то другой, похожий, системный твик там.

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

Scivitri
источник
Мой вопрос по электронике для аппаратно-ориентированного решения: electronics.stackexchange.com/questions/29014/…
JYelton
1
К вашему сведению, я использую последнюю версию SetPoint (хотя и использую очень старую мышь, изначально поставляемую с версией SetPoint, которую UberOptions поддерживает по умолчанию), и UberOptions все еще работает. Вам просто нужно вручную изменить папку SetPoint на ту, которая используется в SetPoint 6 ( setpointP). Смотрите здесь . Лично я бы хотел, чтобы Logitech уже нанял разработчиков UberOptions. SetPoint ужасен и делает их клавиатуры / мыши практически непригодными для использования без uberOptions.
Lèse Majesté
1
@ Lèsemajesté Я полностью согласен с желанием, чтобы Logitech наняла разработчиков UberOptions. Хотя ее старая мышь работала, как вы ее описали, замена мыши не поддерживается UberOptions. Очевидно, существует совершенно другое значение SetPoint для игровых мышей, и она стала очень привязана ко всем дополнительным кнопкам, так как смогла перевернуть мышь и дотянуться до них.
Scivitri

Ответы:

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, если вам нужен полный код приложения.

многочлен
источник
1
Спасибо! Это было гораздо больше усилий, чем я ожидал! Мы проверим это и посмотрим, как это работает для нее.
Scivitri
Нет проблем. Это действительно было не так сложно создать. После того, как я немного почищу его и добавлю несколько дополнительных функций, я выпущу его как открытый исходный код.
Полином
Есть ли шанс, что вы выпустите код в ближайшее время? Или вы можете отправить это мне? :)
Дирк
Просто копался в моем старом жестком диске, но, похоже, этот код был утерян :( Если у меня будет время, я верну его обратно из исполняемого файла.
Полином
1
@remyabel Базовый код добавлен. Отдых может быть вытащен с помощью JustDecompile, если вам это нужно.
Полином
10

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

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

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

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

Фред Дэвис
источник
После входа в систему на заблокированном компьютере курсор мыши был невидим. Было немного сложно перейти на панель задач, чтобы закрыть приложение. Windows 8.1
user3071284,
5

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

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

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

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

Moritz
источник
Если проблем не будет, то этот ответ будет более полезен для других пользователей, если вы сможете опубликовать инструкции или ссылку на них для его установки в Windows 7.
Lèse majesté
1
Поскольку я не предлагаю эту бета-версию для публичной загрузки, одни инструкции по установке не помогут :) Это сложно, поэтому создание этих инструкций будет некоторой работой, и я сначала хочу закончить драйвер. Если вы хотите помочь с инструкциями, пожалуйста!
Мориц
1
@ Мориц Спасибо, что пришли в SE и присоединились к обсуждению! К сожалению, я не думаю, что ее материнская плата даже имеет порт PS2, больше. Они вроде устарели. Она также немного привязана к мышам с большим количеством кнопок, которые, как правило, только USB.
Scivitri
как они могут нажимать кнопки с таким положением?
phuclv
Важное обновление: я являюсь автором MAFMouse, и теперь ограничение на 32 бита больше не используется. x64 поддерживается, а драйвер подписан, поэтому установка намного проще. Он доступен по запросу (в настоящее время не загружается) и работает очень хорошо и в масштабе всей системы, даже для игр (т.е. обычная инверсия оси Y). -Мориц
-soft
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 по-прежнему находится в свободном доступе.

Гай Грэм
источник