Przesuwaj ruchy myszy, gdy środkowy przycisk jest wciśnięty

29

W systemie Windows jestem przyzwyczajony do klikania środkowego przycisku, który oferuje opcję „szybkiego przewijania” w górę lub w dół. Jak mogę uzyskać takie zachowanie w systemie Linux? Obecnie wydaje się, że zamiast tego używa przycisku Wstecz po środkowym kliknięciu.

Używam Gnome pod CentOS.

some1
źródło
Co konkretnie nie działa? Myszy uniksowe miały trzy przyciski od pierwszego dnia, więc środkowy przycisk myszy zwykle działa po wyjęciu z pudełka.
Gilles „SO- przestań być zły”
Przyzwyczaiłem się do klikania środkowego przycisku, który oferuje opcję „szybkiego przewijania” w górę lub w dół. Obecnie wydaje się, że zamiast tego używa przycisku Wstecz po środkowym kliknięciu.
some1
2
Ach, więc chcesz zachowanie Windows środkowego przycisku (lub raczej naciskania kółka), zamiast zachowania uniksowego (gdzie środkowy przycisk zwykle wkleja zawartość schowka). Naprawdę musisz to powiedzieć w swoim pytaniu, nie możemy czytać w twoich myślach! Wymaga to wsparcia ze strony aplikacji; z jakich aplikacji korzystasz? Jakie środowisko pulpitu (np. Gnome, KDE, XFCE,…)?
Gilles „SO- przestań być zły”
Pomyślałem, że gdzieś mógłbym ustawić panel konfiguracji, ale nie mogłem nawet dojść tak daleko. Zakładam, że pulpitem jest Gnome, czy to domyślne? Problem dotyczy Firefoxa.
some1
1
W przypadku przeglądarki Firefox istnieje rozwiązanie w prawie zduplikowanym pytaniu .
Gilles „SO- przestań być zły”

Odpowiedzi:

26

Ta funkcja systemu Windows nigdy tak naprawdę nie trafiła do świata Unix. W świecie uniksowym głównym celem środkowego przycisku myszy jest wklejenie zawartości schowka (a ściślej tekstu zaznaczonego myszą, który jest automatycznie kopiowany). Kilka aplikacji wieloplatformowych, takich jak Firefox i Chrome, które obsługują środkowy przycisk myszy w stylu Linuxa pod Windows i odwrotnie, ale poza tym większość aplikacji nie obsługuje tego rodzaju precyzyjnego przewijania.

Niemniej jednak możesz dość zbliżyć się na poziomie systemu. Możliwe jest takie ustawienie przycisku myszy, aby po jego naciśnięciu ruchy myszy były przekształcane w zdarzenia kółka. Jest to ta sama funkcja, do której jesteś przyzwyczajony, ale prawdopodobnie zauważysz, że ruch jest przerywany, ponieważ aplikacje odbierają zdarzenia koła, które zwykle są interpretowane jako przewijanie o jedną linię lub kolumnę.

Aby zagrać w tę konfigurację, użyj programu xinput (nie wiem, czy jest dla niej nakładka GUI). Najpierw uruchom następujące polecenie, aby zobaczyć nazwę urządzenia wskazującego:

$ xinput --list       
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Generic USB Mouse                         id=8    [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation          id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳   USB Keyboard                            id=9    [slave  keyboard (3)]

Na przykład w powyższym wyniku urządzenie wskazujące to Generic USB mouse. Możesz uruchomić następujące polecenie, aby wyświetlić właściwości, które można dostroić:

xinput --list-props 'Generic USB Mouse'

Zestaw właściwości, których szukasz, to „Emulacja koła Evdev”. Przy następujących ustawieniach, po naciśnięciu środkowego przycisku myszy (przycisk 2), poruszanie myszą wysyła zdarzenia koła (4 = góra, 5 = dół, 6 = lewy, 7 = prawy).

xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation' 1
xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Button' 2
xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Axes' 6 7 4 5

Możesz dostosować inne parametry (bezwładność, limit czasu).

Możesz umieścić te polecenia w skrypcie. Dodaj #!/bin/shjako pierwszy wiersz i spraw, aby plik skryptu był wykonywalny (np chmod +x ~/bin/activate-wheel-emulation.sh.). Następnie dodaj ten skrypt do listy poleceń, które mają być uruchamiane, gdy rozpocznie się sesja ( gnome-session-propertiespozwala to skonfigurować).

Jeśli masz dostęp do konta root i chcesz wprowadzić zmiany dla wszystkich użytkowników (dopuszczalne na komputerze domowym), łatwiej jest to zrobić za pomocą pliku konfiguracyjnego serwera X.org . Jako root utwórz plik o nazwie /etc/X11/xorg.conf.d/wheel-emulation.confzawierający ustawienia sterownika myszy . Ustawienia są takie same, ale są nieco inaczej zorganizowane.

Section "InputClass"
    Identifier "Wheel Emulation"
    MatchProduct "Generic USB Mouse"
    Option "EmulateWheel" "on"
    Option "EmulateWheelButton" "2"
    Option "XAxisMapping" "6 7"
    Option "YAxisMapping" "4 5"
EndSection
Gilles „SO- przestań być zły”
źródło
Będziesz chciał zachować ostrożność podczas dostosowywania innych parametrów. Jeśli Evdev Wheel Emulation Timeoutzbyt mocno zmniejszysz parametr, możesz całkowicie utracić funkcję środkowego przycisku myszy (kliknięcia). Na przykład, jeśli zmniejszysz Evdev Wheel Emulation Timeoutsię poniżej wartości, Evdev Middle Button Timeoutnie będzie już generować zdarzeń kliknięcia środkowym przyciskiem. Z własnego doświadczenia
wynika
xinput --set-prop 'Generic USB Mouse' 'Evdev Middle Button Emulation' 1. xinput --set-prop 'Generic USB Mouse' 'Evdev Middle Button Timeout' 50. xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Timeout' 100. Zapewnia to dość szybkie funkcje klikania i przewijania, chociaż jeśli okaże się, że uruchamia się zbyt szybko, spróbuj zwiększyć Evdev Wheel Emulation Timeout(myślę, że 200 to domyślna)
agnussmcferguss
Gilles, myślę, że coś jest nie tak z sugerowanym plikiem konfiguracyjnym xorg.conf.d. Kiedy go użyłem, mój X.Org uruchomił się na czarnym ekranie. Wyprowadziłem wersję, która działa, dodając Device "evdev"i umieszczając cudzysłowy wokół "EmulateWheelButton"wartości "2". (Przepraszam, nie mam czasu na sprawdzenie, czy jedna lub obie z tych zmian rozwiązują problem.)
Arkanon
@Arkanon Brakujące podwójne cudzysłowy są zdecydowanie błędem składni. Nie sądzę, żeby Device "evdev"to miało sens, miałeś na myśli Driver "evdev"? Myślę, że byłaby to alternatywa dla MatchProductdyrektywy, która ustala opcje dla wszystkich urządzeń wejściowych zamiast zwykłych myszy USB.
Gilles „SO- przestań być zły”
1
@Wallacoloo Nie wiem, czy możesz uzyskać dokładnie ten efekt, ale możesz sprawić, by klawiatura numeryczna poruszała myszą, pisząc Pointer_EnableKeys(google lub zadaj nowe pytanie tutaj), a także możesz skonfigurować bardziej wyszukane zachowanie za pomocą XKB (klawiatura wyszukiwania) : klawisze myszy lub zadaj nowe pytanie opisujące dokładnie to, czego chcesz i z czym się załatwisz, jeśli nie będziesz w stanie dokładnie tego zrobić).
Gilles „SO- przestań być zły”
25

Okazuje się, że można to zrobić za pomocą preferencji Firefoksa.

  1. Z menu rozwijanego: Edytuj -> Preferencje
  2. Następnie wybierz zakładki: Zaawansowane -> ogólne
  3. Następnie zaznacz „Użyj automatycznego przewijania”

Zrzut ekranu

   ss

some1
źródło
0

ponieważ chromemożesz użyć tego rozszerzenia do automatycznego przewijania

Auto Scroll

nie zapomnij ponownie uruchomić Chrome po zainstalowaniu rozszerzenia

gry kodowe
źródło