Вопрос или проблема
Мне нужно использовать функцию Mouse Keys в Windows 10 по причинам доступности. Это полезный инструмент, который может управлять мышью с помощью клавиш NumPad. Но у него очень ограниченные возможности настройки. У него есть лишь два ползунка для “Скорости указателя” (от 10 до 358) и “Ускорения указателя” (от 100 до 500).
В Ubuntu и Debian есть аналогичный инструмент под названием xkbset, с помощью которого я могу задать параметры с помощью команды терминала xkbset mousekeysaccel <mk-delay> <mk_interval> <mk_time_to_max> <mk-max_speed> <mk_curve>
, например, я нашел эти значения пригодными: xkbset mousekeys; xkbset mousekeysaccel 20 10 500 120 10
. Здесь максимальная скорость равна 120, но “интервал” составляет 10 мс, поэтому повторяется чаще, что приводит к значительно большей скорости.
Версия для Windows, однако, невероятно медленная даже при самом быстром режиме, так что я хочу увеличить максимальную скорость. Я обнаружил, что значения двух ползунков хранятся в regedit по следующему пути: Computer\HKEY_CURRENT_USER\Control Panel\Accessibility\MouseKeys
, но ручное редактирование значения MaximumSpeed
не влияет ни на что, 358 остается жестким ограничением. Поэтому я ищу способ увеличить / отключить этот верхний предел для максимальной скорости.
Заметки
- Я знаю, что могу сделать это с помощью стороннего программного обеспечения, например, AutoHotkey, но я не хочу устанавливать что-то еще, если можно “исправить” то, что уже есть в Windows.
- Я нашел эту страницу документации API: MOUSEKEYS (winuser.h), но я не знаю, что с этим делать… Могу ли я вызвать эту структуру через cmd / PowerShell? Или написать программу на C# (напоминающую эту), чтобы редактировать эти значения?
- Существует ли исполняемый файл или служба, которая обрабатывает Mouse Keys, которую я могу декомпилировать / редактировать? Я готов редактировать dll Windows или что угодно, даже создать пользовательскую сборку .iso, я использую эту функцию каждый день и хочу иметь возможность настраивать ее, только максимальную скорость, ничего сложного, как значения интервала / кривой xkbset и т.д.
Ответ или решение
Увеличение максимальной скорости использования функции Mouse Keys в Windows 10 может стать вызовом, особенно если встроенные настройки не удовлетворяют ваши требования. Хоть Windows и предлагает некоторую настройку возможностей, таких как скорость указателя и ускорение, многие пользователи сталкиваются с ограничениями, которые затрудняют использование функции на высоком уровне. В этом ответе мы рассмотрим подробные способы и подходы для увеличения максимальной скорости Mouse Keys.
1. Понимание ограничений Mouse Keys в Windows
Mouse Keys позволяет управлять курсором с помощью клавиш на цифровой панели, но его настройки ограничиваются двумя ползунками: "Скорость указателя" и "Ускорение указателя". Несмотря на возможность регулировки, максимальная скорость указателя фиксирована на уровне 358, что не всегда соответствует потребностям пользователей.
2. Редактирование реестра
Вы уже указали, что параметры точки Mouse Keys хранятся в реестре Windows в следующем пути:
HKEY_CURRENT_USER\Control Panel\Accessibility\MouseKeys
Тем не менее, редактирование значения MaximumSpeed
в реестре может не дать ожидаемого результата, и максимальная скорость не изменится.
3. Использование API Windows
Вы упомянули API для MouseKeys. В Windows существует возможность программного доступа к функциям MouseKeys через использование библиотеки winuser.h
. Чтобы использовать данный API, вам потребуется создать небольшую программу на C# или любом другом языке программирования, который поддерживает вызовы WinAPI.
Пример на C# может выглядеть следующим образом:
using System;
using System.Runtime.InteropServices;
class Program
{
[DllImport("user32.dll")]
public static extern int SystemParametersInfo(int uAction, int uParam, ref MOUSEKEYS lpvParam, int fuWinIni);
[StructLayout(LayoutKind.Sequential)]
public struct MOUSEKEYS
{
public int cbSize;
public int iMaxSpeed;
public int iTimeToMaxSpeed;
public int iDelayBeforeAcceptance;
public int iInterval;
public int iRepeatDelay;
public int iRepeatRate;
public int fMouseKeys;
public int fActive;
public int fAlwaysOnTop;
}
static void Main()
{
MOUSEKEYS mk = new MOUSEKEYS();
mk.cbSize = Marshal.SizeOf(typeof(MOUSEKEYS));
// Установите желаемые параметры
mk.iMaxSpeed = 500; //пример увеличения максимальной скорости
mk.iTimeToMaxSpeed = 100;
SystemParametersInfo(0x00010E, 0, ref mk, 0); // SPI_SETMOUSEKEYS
}
}
Этот код просто задаёт некоторые параметры (например, максимальную скорость), однако для полноценного изменения значений может потребоваться дополнительная настройка.
4. Использование сторонних инструментов
Хотя вы выражали нежелание использовать сторонние приложения, такие как AutoHotkey, стоит отметить, что они значительно упрощают настройку. AutoHotkey позволяет создать скрипт, который может настроить параметры Mouse Keys более гибко и интуитивно, чем путем программирования собственного приложения.
5. Исследование исполняемых файлов Windows
Возможность изменения DLL или других исполняемых файлов Windows может быть ошибочной с точки зрения безопасности и стабильности операционной системы. Тем не менее, вы можете использовать инструменты для реверс-инжиниринга, чтобы изучить, какие параметры используются в Windows для Mouse Keys, и, возможно, изменить их. Однако этот процесс требует глубоких технических знаний и сознательного подхода к безопасности.
Заключение
Для улучшения скорости Mouse Keys в Windows 10 по-прежнему существует ограниченное количество решений, которые можно использовать. Создание программы на C# для изменения параметров через Windows API может быть наиболее безопасным и эффективным вариантом. Если это не приводит к желаемым результатам, использование сторонних программ, таких как AutoHotkey, может быть более прагматичным вариантом. Изучение и изменение системных файлов — это крайняя мера, которой стоит избегать, если есть более безопасные альтернативы.