Отключение ускорения мыши в X.Org (Linux)

11

Это версия моего Отключения ускорения мыши в Mac OS X для Linux . Надеюсь, я получу ответ на этот раз.

Я устал от ускорения мыши и хочу иметь полностью линейный ответ мыши. Это легко достижимо с помощью любого из 5 или около того методов (некоторые подразумеваются) на вики-странице X.Org по ускорению указателя . Однако они также отключают масштабирование скорости .

Мне не нужно отображение 1: 1 между координатами устройства и экрана. Я хочу отображение 1: N, где N - константа . Есть идеи?

AIB
источник

Ответы:

15

Единственный способ, который я нашел, который работает (и я только попробовал на Ubuntu) , с помощью xinputкоманды.

Сначала вы должны определить номер устройства для мыши, которую вы хотите изменить:

# xinput list
â¡ Virtual core pointer                         id=2    [master pointer  (3)]
â   â³ Virtual core XTEST pointer               id=4    [slave  pointer  (2)]
â   â³ Microsoft Microsoft 5-Button Mouse with IntelliEye(TM)   id=10   [slave  pointer  (2)]
⣠Virtual core keyboard                        id=3    [master keyboard (2)]
    â³ Virtual core XTEST keyboard              id=5    [slave  keyboard (3)]
    â³ Power Button                             id=6    [slave  keyboard (3)]
    â³ Power Button                             id=7    [slave  keyboard (3)]
    â³ CHICONY USB Keyboard                     id=8    [slave  keyboard (3)]
    â³ CHICONY USB Keyboard                     id=9    [slave  keyboard (3)]
    â³ IR-receiver inside an USB DVB receiver   id=11   [slave  keyboard (3)]

Теперь в этом примере я буду играть с мышью Microsoft. ID = 10

Теперь посмотрим, с какими свойствами может работать это устройство:

# xinput list-props 10
Device 'Microsoft Microsoft 5-Button Mouse with IntelliEye(TM)':
    ... cruft cut ...
    Device Accel Profile (259):     3
    ... cruft cut ...

Это значение, как драйвер обрабатывает ускорение:

-1: нет никаких зависимых от скорости указателя ускорения или замедления. Если постоянное замедление также не используется, обработка движения подавляется, сохраняя некоторые циклы.

0: классический (по умолчанию) похож на старое поведение, но более предсказуем. Выбор между «полином» и «простой» на основе порога = /! = 0.

1: зависит от устройства, если его устанавливает аппаратный драйвер. Может быть, приходят на синаптики.

2: полином. Весы полином: скорость служит коэффициентом, ускорение является показателем степени. Очень полезный, рекомендуемый профиль.

3: гладкие линейные шкалы, в основном линейные, но с плавным (нелинейным) началом.

4: простые переходы между ускоренным / не ускоренным, но с плавным диапазоном перехода. Это имеет фундаментальную проблему ускорения на двух niveaus, на которых ускорение остается независимым от скорости. Традиционно по умолчанию однако.

5: мощность ускоряется функцией мощности. скорость является показателем здесь. Придерживается порога. Вам будет сложно управлять, поэтому важно, чтобы вы правильно настроили оценку скорости.

6: линейный, только линейный по скорости и ускорению. Просто и чисто.

7: ограничение плавно поднимается к ускорению, достигая максимума на пороге, где оно становится плоским (ограничено).

Итак, из этого мы можем видеть, что если мы установим это свойство в -1, оно полностью отключит ускорение.

$ xinput set-prop 10 259 -1

Так что теперь у нас нет ускорения, но мы этого хотим? Мышь сейчас немного медленная. К сожалению, так оно и есть. С отключенным ускорением вы получаете соотношение 1: 1 между мышью и дисплеем. Вы перемещаете мышь влево на одну точку, а указатель мыши перемещается на один пиксель влево. Если бы был способ умножить входное движение (скажем, на 2), то каждый второй пиксель на каждой оси был бы недоступен для мыши. Это затруднит точное позиционирование мыши. Настройка «чувствительности» в некоторых панелях управления мыши с графическим интерфейсом на самом деле противоположна ожидаемой - наиболее чувствительным является соотношение 1: 1 - это ускорение, которое заставляет его казаться намного быстрее.

Итак, вы хотите более быстрое движение, но не хотите ускорения. Единственный способ сделать это - аппаратно. По сути, вам нужно будет купить более чувствительную мышь. Ищите один с более высоким DPI (точек на дюйм - да, как принтер). Я считаю, что мой старый Microsoft IntelliEye достаточно чувствителен с отключенным ускорением, чтобы его можно было использовать.

Или, может быть, ваша мышь слишком чувствительна? Даже с отключенным ускорением это слишком быстро на ваш вкус? Ну, вот где

Device Accel Constant Deceleration (260):      1.0000

настройка вступает в силу. Это постоянный коэффициент замедления (или рассасывания). По умолчанию это 1: 1, но будет больше любого числа (даже дроби). Чтобы получить небольшое замедление мыши:

$ xinput set-prop 10 260 1.2

Или серьезное замедление для действительно деликатной работы:

$ xinput set-prop 10 260 10

Или верните его в нормальное состояние:

$ xinput set-prop 10 260 1

Это работает, даже если для профиля ускорения установлено значение -1 (отключено).

Majenko
источник
Что произойдет, если я хочу меньше чувствительности с мышью с высоким разрешением? Нет, извините, отображение 1: 1 просто не работает. И следующее значение не 1: 2, вы можете сделать, скажем, 1: 1.2. На самом деле, я почти уверен, что в текущем коде ускорения есть миллион различных способов точной настройки скорости и достижения субпиксельного разрешения. Если бы существовал профиль «без ускорения», а не «полностью отключить подпрограммы ускорения».
AIB
@aib Проверьте мои правки
Majenko
Извините, мне нужно не замедление указателя. (Ну, может быть , это и есть, но после того, как я масштабируется мышь движение вверх, а не покупать новую мышь, спасибо.)
AIB
Это должно быть принято. Я не знал, что замедление может быть плавающим, а не просто целым числом. Благодарность! Нет профиля действительно отключает ускорение (в отличие от Windows).
inf3rno
В Debian Stretch они больше не работают: после обновления свойство Device Accel Constant Deleleration пропало, и то, что у меня есть для этой мыши (xinput --list-props), похоже, больше не влияет на него (оставляя меня с ночная бесполезная мышь).
Джубатян
2

Просматривая исходники X.org, играя с пользовательским сервером и проводя навязчивое тестирование с помощью моей мыши, я могу с уверенностью сказать, что текущий ограниченный профиль (7) достигает этого, когда thresholdзначение установлено в 0. Затем accelerationзначение становится скоростью скалер (скаляр?).

Так:

xinput set-prop <device> "Device Accel Profile" 7
xset m <velocity> 0

Вторая часть также может быть установлена ​​с помощью панели настроек мыши вашего рабочего стола. Не забывайте, что он должен быть в x/yформе для нецелых значений, например, 16/10для 1.6.

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

Редактировать: для постоянства, вы можете добавить это к вашему xorg.xconf:

Section "InputClass"
        Identifier "Mouse with No Acceleration"
        MatchIsPointer "yes"
        MatchProduct "Mouse"
        Option "AccelerationProfile" "7"
EndSection

С этого момента вы можете использовать настройки мыши вашего рабочего стола, как я уже упоминал. Однако, если вы хотите законченное xorg.confрешение:

Section "InputClass"
        Identifier "Mouse With No Acceleration"
        MatchIsPointer "yes"
        MatchProduct "Mouse"
        Option "AccelerationProfile"     "7" # "limited" profile
        Option "AccelerationNumerator"   "2" # these adjust the sensitivity
        Option "AccelerationDenominator" "1" # these adjust the sensitivity
        Option "AccelerationThreshold"   "0" # this disables acceleration
                                             # in the "limited" profile
EndSection
AIB
источник
<3 Спасибо. Даже работает в спящем режиме.
Саймон Эугстер
0

Я знаю, что это старо, но я думаю, что стоит добавить ответ на уже заданный вопрос. XSET сделает работу за вас, скорее всего. Команда, которую я запускал, была xset m 1 1...

Содержимое справочной страницы для xset, которое я здесь курировал из xset (1) для параметров мыши:

мышь

Опция m управляет параметрами мыши; оно может быть сокращено до «м». Параметры для мыши являются acceleration' andпороговыми. Ускорение может быть задано как целое число или как простая дробь. Мышь или любой другой указатель, к которому подключен аппарат, acceleration' times as fast when it travels more thanза короткое время перейдет к пороговым значениям пикселей. Таким образом, мышь можно использовать для точного выравнивания при медленном перемещении, но при желании ее можно перемещать по экрану одним движением руки. Один или оба параметра для опции m могут быть опущены, но если указан только один, он будет интерпретирован как ускорение. Если параметры не используются или флаг «default» используется, будут установлены системные значения по умолчанию.

Если параметр threshold' parameter is provided and 0, theускорения> будет использоваться в показателе более естественной и непрерывной формулы, предоставляя точный контроль для медленного движения, но большой охват для быстрого> движения и прогрессивный переход для движений между ними. Рекомендуемое значение «ускорения» в этом случае составляет от 3/2 до 2, но не ограничивается этим диапазоном.

Отказ от ответственности: это не переживает relogin / reboot без некоторого дополнительного обмана ...

N_mag
источник