LINUX.ORG.RU

Чувствительность мыши в X11

 , ,


0

2

Кажется, в X11 с чувствительностью мыши происходит какая-то неразбериха, каждый понимает под разными понятиями что-то своё.

Вот что я понимаю, надеюсь что правильно:

  • DPI - Количество опросов сенсора мыши за единицу времени
  • Чувствительность - насколько каждый опрос влияет на положение курсора
  • Ускорение - дополнительное движение курсора в зависимости от скорости движения мыши по всяким сложным моделям

Мне нужна очень высокая точность, поэтому «ускорение» (согласно вышеуказанной терминологии) было вырублено под корень, потому что нафиг не надо, мне нужна высокая точность, а не ощущение, что с моей мышкой что-то не так.

На моей мышке есть 4 режима DPI:

  • Очень мало опросов в секунду (сотня от силы)
  • Среднее количество опросов в секунду
  • Много опросов в секунду
  • Дофига опросов в секунду

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

Но это малое количество опросов сенсора мыши очень больно чувствуется: я могу двигать мышь на доли миллиметров (для меня вполне ощутимое расстояние), и курсор не двигается вообще.
Он двигается очень дёрганно.
Я прямо вижу, насколько «блочно» курсор двигается.
Я двигаю мышь, а курсор будто бы snap’ится к определённым точкам.
Это происходит из-за малого количества опросов сенсора мыши.

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

Очевидное решение - повысить частоту опроса сенсора мыши (DPI) до максимума, чтобы использовать свою мышь по-полной (деньги же не за 10 опросов в час уплачены) а чувствительность мыши в игре (напоминаю мою терминологию, чувствительность - это то, насколько сильно влияет движение сенсора на курсор) установить что-то типа 0.001. Ещё желательно включить «прямое подключение к мыши» если это игра на движке Source.

И да, в игре это чувствуется отлично, нужно лишь немного привыкнуть - как сразу появляется ощущение лёгкости, все движения очень плавные. Можно спокойно «охотиться за пикселями», «сопровождать» головы противников в пяти километрах от себя.

Но стоит открыть меню или свернуть игру - как мышь начинает нарушать законы физики и метаться от одного края экрана до другого за доли секунд.

Очевидное решение - уменьшить чувствительность мыши (не забываем терминологию) в X11.
А вот фиг.
На все поиски в интернете, поисковики предлагают абсолютно рандомные решения, зачастую это работа с «ускорением» (не забываем терминологию), которое просто не совместимо с понятием «точность», потому что делает скорость курсора нелинейной.

Решения по типу изменить параметр «Device Accel Constant Deceleration» неактуальны уже как много лет, либо с моей мышью что-то не так (Logitech G102). И звучит как-то очень сложно.

Уменьшить «чувствительность мыши» помогает только одно решение:

$ xinput set-prop "моя-мышь" "Coordinate Transformation Matrix"    $sensivity 0 0    0 $sensivity 0     0 0 1

И по-началу кажется, что вот оно - решение.
Вот только это напрочь ломает захват мыши в программах по-типу Blender или даже на сайте по проверке DPI: https://mousedpianalyzer.com

Захват мыши сначала работает, но стоит отпустить ПКМ - как курсор отправляется в левый верхний угол.
А если чувствительность мыши наоборот увеличена - то в правый нижний угол.

И тут я не знаю что делать. Хочу просто спросить вас, кто шарит, что можно сделать.

Мои мысли - всё-таки включить «ускорение», и как-то сделать его линейным, чтобы через ускорение мыши менять «чувствительность», хотя далеко не одно и то же.
Но заранее подозреваю, что вариант хрень полная.

Либо, это нерешаемая проблема, потому что когда программы пытаются захватить курсор - они считывают чуть ли не аппаратно информацию с сенсора, в обход установленного параметра «Coordinate Transformation Matrix». И я понять не могу - за это какая-то кривая библиотека отвечает, или все разработчики в мире разом забыли, что существует понятие «чувствительность мыши»?

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



Последнее исправление: Linux-Music-Girl (всего исправлений: 1)
Ответ на: комментарий от Bass

и что он мне выдаст кроме как связь обрывков какой-то невнятной информации, которая с реальными вещами не имеет никакой связи? Мне например он выдал рекомендации поменять параметры, которых просто не существует. Я знатоков Линукса спрашиваю, которые могут помочь и объяснить что и как

Linux-Music-Girl
() автор топика
Ответ на: комментарий от Linux-Music-Girl

Если не работает xset m, то стоит попробовать xinput set-props. По ссылкам — подробные инструкции:

Bass ★★★★★
()

Включить профиль «flat», скорость 0. Дальше всё зависит только от настроек мыши. Xorg не использовать, там в любом случае будет какая-то дичь с мышью.

Поток сознания не читал.

anonymous
()
Ответ на: комментарий от anonymous

Конфиг /etc/X11/xorg.conf.d/50-mouse-acceleration.conf:

Section "InputClass"
	Identifier "Disable mouse acceleration"
	MatchIsPointer "yes"
	Option "AccelerationProfile" "-1"
	Option "AccelerationScheme" "none"
	Option "AccelSpeed" "-1"
EndSection
Section "InputClass"
	Identifier "Disable mouse acceleration libinput"
	Driver "libinput"
	MatchIsPointer "yes"
	Option "AccelProfile" "flat"
	Option "AccelSpeed" "0"
EndSection

Все возможные параметры моей мыши ($ xinput list-props <мышь>):

Coordinate Transformation Matrix
libinput Natural Scrolling Enabled
libinput Natural Scrolling Enabled Default
libinput Scroll Methods Available
libinput Scroll Method Enabled
libinput Scroll Method Enabled Default
libinput Button Scrolling Button
libinput Button Scrolling Button Default
libinput Button Scrolling Button Lock Enabled
libinput Button Scrolling Button Lock Enabled Default
libinput Middle Emulation Enabled
libinput Middle Emulation Enabled Default
libinput Rotation Angle (267)
libinput Rotation Angle Default (268)
libinput Accel Speed
libinput Accel Speed Default
libinput Accel Profiles Available
libinput Accel Profile Enabled
libinput Accel Profile Enabled Default
libinput Accel Custom Fallback Points
libinput Accel Custom Fallback Step
libinput Accel Custom Motion Points
libinput Accel Custom Motion Step
libinput Accel Custom Scroll Points
libinput Accel Custom Scroll Step
libinput Left Handed Enabled
libinput Left Handed Enabled Default
libinput Send Events Modes Available
libinput Send Events Mode Enabled
libinput Send Events Mode Enabled Default
Device Node
Device Product ID
libinput Drag Lock Buttons
libinput Horizontal Scroll Enabled
libinput Scrolling Pixel Distance
libinput Scrolling Pixel Distance Default
libinput High Resolution Wheel Scroll Enabled

Изменение параметра «libinput Accel Speed» ни на что не влияет

Linux-Music-Girl
() автор топика

Что пока что помогает:
Внести такое изменение в /etc/X11/xorg.conf.d/50-mouse-acceleration.conf, в параметр AccelSpeed:

Section "InputClass"
	Identifier "Mouse acceleration libinput"
	Driver "libinput"
	MatchIsPointer "yes"
	Option "AccelProfile" "flat"
	Option "AccelSpeed" "-0.85"
EndSection

Значения 0..1, кажется, ни на что не влияют. А -1 делает курсор мега-медленным. При этом -0.5 тоже не особо влияет. Значит нужно установить что-то между -0.9 и -0.6

Linux-Music-Girl
() автор топика

DPI это количество пикселей на которое сдвинется курсор при перемещении мыши по столу на дюйм. Чувствительность это тоже самое но для гуманитариев и измеренное в не пойми каких единицах. Никакие частоты тут ни при чём.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)