11

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

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

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

3 ответа3

16

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

Итак, вы хотите более быстрое движение, но не хотите ускорения. Единственный способ сделать это - аппаратно. По сути, вам нужно будет купить более чувствительную мышь. Ищите один с более высоким разрешением (точек на дюйм - да, как принтер). Я считаю, что мой старый 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 (отключено).

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
0

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

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

мышь

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

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

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

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