Wyłączanie przyspieszenia myszy w X.Org (Linux)

11

To jest wersja Linux mojego pytania o wyłączanie przyspieszenia myszy w Mac OS X. Mam nadzieję, że tym razem otrzymam odpowiedź.

Mam dość przyspieszania myszy i chcę mieć całkowicie liniową reakcję myszy. Można to łatwo osiągnąć dowolną z 5 metod (niektóre subtelnie implikowane) na stronie wiki X.Org dotyczących przyspieszenia wskaźnika . Jednak wyłączają również skalowanie prędkości .

Nie chcę mapowania 1: 1 między urządzeniem a współrzędnymi ekranu. Chcę mapowania 1: N, gdzie N jest stałą . Jakieś pomysły?

aib
źródło

Odpowiedzi:

15

Jedyny sposób, w jaki odkryłem, że działa (i próbowałem tylko na Ubuntu), to xinputpolecenie.

Najpierw musisz zidentyfikować numer urządzenia myszy, którą chcesz zmienić:

# 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)]

Teraz w tym przykładzie będę grał myszką Microsoft. id = 10

Zobaczmy teraz, jakie właściwości to urządzenie może obsłużyć:

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

Ta wartość określa sposób, w jaki kierowca obsługuje przyspieszenie:

-1: brak brak zależnego od prędkości przyspieszania lub zwalniania wskaźnika. Jeśli stałe spowolnienie również nie jest używane, przetwarzanie ruchu jest tłumione, co oszczędza niektóre cykle.

0: klasyczny (domyślny) podobny do starego zachowania, ale bardziej przewidywalny. Wybiera pomiędzy „wielomianem” a „prostym” na podstawie wartości progowej = /! = 0.

1: zależny od urządzenia dostępny, jeśli sterownik sprzętowy go zainstaluje. Może przyjść na synaptics.

2: wielomian Skale wielomian: prędkość służy jako współczynnik, a przyspieszenie jest wykładnikiem. Bardzo użyteczny, zalecany profil.

3: gładkie skale liniowe głównie liniowe, ale z płynnym (nieliniowym) początkiem.

4: proste Przejścia między przyspieszeniem / przyspieszeniem, ale z płynnym zakresem przejścia. Ma to zasadniczy problem przyspieszania w dwóch momentach, na których przyspieszenie pozostaje niezależne od prędkości. Tradycyjnie jednak domyślne.

5: moc przyspiesza przez funkcję mocy. prędkość jest tutaj wykładnikiem. Przestrzega progu. Łatwo będzie trudny do kontrolowania, dlatego ważne jest, aby właściwie dostroić oszacowanie prędkości.

6: liniowy tylko liniowy do prędkości i przyspieszenia. Prosty i czysty.

7: ograniczony płynnie wznosi się do przyspieszenia, osiągając maksimum na progu, gdzie staje się płaski (jest ograniczony).

Z tego wynika, że ​​ustawienie tej właściwości na -1 spowoduje całkowite wyłączenie przyspieszenia.

$ xinput set-prop 10 259 -1

Więc teraz nie mamy przyspieszenia, ale czy tego właśnie chcemy? Mysz jest teraz trochę wolna. Niestety tak to jest. Przy wyłączonym przyspieszeniu uzyskuje się stosunek 1: 1 między myszą a wyświetlaczem. Poruszasz myszą w lewo o jedną kropkę, a wskaźnik myszy przesuwa się o jeden piksel w lewo. Gdyby istniał sposób zwielokrotnienia ruchu wejściowego (powiedzmy przez 2), wówczas każdy inny piksel na każdej osi byłby niedostępny dla myszy. Utrudnia to dokładne pozycjonowanie myszy. Ustawienie „czułości” w niektórych panelach sterowania myszy GUI faktycznie robi coś przeciwnego niż można by się spodziewać - najbardziej czuły jest stosunek 1: 1 - to przyspieszenie sprawia, że ​​wydaje się o wiele szybszy.

Chcesz więc szybszego ruchu, ale nie chcesz przyspieszenia. Jedynym sposobem na to jest sprzęt. Zasadniczo będziesz musiał kupić bardziej czułą mysz. Poszukaj takiego z wyższym DPI (kropki na cal - tak, jak drukarka). Uważam, że mój stary Microsoft IntelliEye jest wystarczająco czuły z wyłączonym przyspieszeniem, aby można go było używać.

A może twoja mysz jest zbyt wrażliwa? Nawet przy wyłączonym przyspieszeniu jest to zbyt szybkie, jak ci się podoba? Cóż, właśnie tam

Device Accel Constant Deceleration (260):      1.0000

włącza się ustawienie. Jest to stały stosunek opóźnienia (lub dezynfekcji). Domyślnie jest to 1: 1, ale weźmie dowolną liczbę (nawet ułamki) powyżej. Aby uzyskać niewielkie spowolnienie myszy:

$ xinput set-prop 10 260 1.2

Lub ogromne spowolnienie naprawdę delikatnej pracy:

$ xinput set-prop 10 260 10

Lub przywróć to do normy:

$ xinput set-prop 10 260 1

Działa to nawet wtedy, gdy profil przyspieszenia jest ustawiony na -1 (wyłączone).

Majenko
źródło
Co się stanie, jeśli chcę mieć mniejszą czułość dzięki myszy o wysokiej rozdzielczości? Nie, przykro nam, mapowanie 1: 1 po prostu nie działa. Następna wartość to nie 1: 2, możesz zrobić, powiedzmy, 1: 1.2. W rzeczywistości jestem prawie pewien, że obecny kod przyspieszenia ma milion różnych sposobów na dostrojenie prędkości i uzyskanie rozdzielczości subpikseli. Gdyby tylko istniał profil „bez przyspieszenia” - w przeciwieństwie do „całkowitego wyłączenia podprogramów przyspieszenia”.
aib
@aib Sprawdź moją edycję
Majenko
Przepraszam, nie potrzebuję opóźnienia wskaźnika. (Cóż, może tak jest, ale po zwiększeniu ruchu myszy do góry i bez kupowania nowej myszy, dziękuję.)
aib
To powinno zostać zaakceptowane. Nie wiedziałem, że spowolnienie może być zmienne, a nie tylko liczbą całkowitą. Dzięki! Brak profilu naprawdę wyłącza przyspieszenie (w przeciwieństwie do systemu Windows).
inf3rno
W Debian Stretch nie wydają się już działać: po aktualizacji zaginęła właściwość Stałe zwalnianie urządzenia, a to, co mam dla tej myszy (xinput --list-props), nie wydaje się już na nią wpływać (pozostawiając mi nocna bezużyteczna mysz).
Jubatian
2

Przeglądając źródła X.org, bawiąc się niestandardowym serwerem i wykonując obsesyjne testy za pomocą myszy, mogę śmiało powiedzieć, że obecny profil ograniczony (7) osiąga to, gdy thresholdwartość jest ustawiona na 0. accelerationWartość staje się wtedy prędkością skaler (skalar?).

Więc:

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

Drugą część można również ustawić za pomocą panelu ustawień myszy w środowisku pulpitu. Nie zapominaj, że musi być w x/yformie dla wartości niecałkowitych, np. 16/10Dla 1.6.

Istnieje również kilka innych ustawień (opóźnienie itp.) Do dostosowania, ale to rozwiązuje najgorszą część problemu. Niektóre pliki konfiguracyjne powinny być edytowane na stałe, ale ważne jest to, że jest to możliwe.

Edycja: Aby uzyskać trwałość, możesz dodać to do xorg.xconf:

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

Odtąd możesz używać ustawień myszy w środowisku pulpitu, jak już wspomniałem. Jeśli jednak chcesz mieć kompletne xorg.confrozwiązanie:

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
źródło
<3 Dziękuję. Działa nawet w trybie uśpienia.
Simon A. Eugster,
0

Wiem, że to stare, ale myślę, że warto dodać odpowiedź na zadane pytanie. XSET najprawdopodobniej wykona pracę za Ciebie. Polecenie, które wykonałem, to xset m 1 1...

Zawartość strony podręcznika dla xset, którą tutaj wyreżyserowałem z xset (1) dla opcji myszy:

mysz

Opcja m kontroluje parametry myszy; może być skrócony do „m”. Parametry myszy to acceleration' andpróg ”. Przyspieszenie może być określone jako liczba całkowita lub jako zwykły ułamek. Mysz lub dowolny wskaźnik, do którego podłączona jest maszyna, acceleration' times as fast when it travels more thanw krótkim czasie osiągnie próg pikseli. W ten sposób mysz może być używana do precyzyjnego wyrównywania, gdy porusza się powoli, ale w razie potrzeby można ją ustawić tak, aby poruszała się po ekranie ruchem nadgarstka. Jeden lub oba parametry dla opcji m można pominąć, ale jeśli podano tylko jeden, będzie interpretowany jako przyspieszenie. Jeśli nie zostaną użyte żadne parametry ani flaga „default”, zostaną ustawione wartości domyślne systemu.

Jeśli parametr threshold' parameter is provided and 0, theprzyspieszenia zostanie użyty w wykładniku bardziej naturalnej i ciągłej> formuły, dając precyzyjną kontrolę dla zwolnionego tempa, ale duży zasięg dla szybkiego> ruchu i progresywne przejście dla ruchów pomiędzy nimi. Zalecana wartość „przyspieszenia” w tym przypadku wynosi od 3/2 do 2, ale nie ogranicza się do tego zakresu.

Uwaga: to nie przetrwa ponownego logowania / restartu bez dodatkowej sztuczki ...

N_mag
źródło