Gesty wielodotykowe na touchpadzie

11

Chciałem wiedzieć, jak mogę skonfigurować gesty wielodotykowe w Ubuntu. W systemie Windows mogę to zrobić za pomocą oprogramowania sterownika synaptics.

Użyłem już synclientkonfiguracji kranów, wykrywania dłoni, przewijania itp. Ale chciałbym również obsługiwać gesty. Czy to w ogóle możliwe?

Informacje o systemie: Ubuntu 12.10, panel dotykowy Synaptics

kapad
źródło
chciałem podać pewne szczegóły: Chciałem skonfigurować gest dla przycisków przeglądarki / nautilusa do tyłu / do przodu. W systemie Windows mogę to zrobić za pomocą przesunięcia 3 palcami. Podobnie, aby zminimalizować / otworzyć wszystkie okna. W Win7 można to zrobić przesuwając czterema palcami w górę lub w dół. Chcę rzeczy podobnych do Maca. czy to możliwe?
kapad

Odpowiedzi:

11

Aktualizacja 15.09.2016 Multitouch działa od razu po wyjęciu z pudełka, a wszystkie wymienione poniżej rozwiązania (mtrack, synclient, ginn, ...) zepsują wszystko, więc jeśli aktualizujesz ze starszego jądra, które ich wymaga, usuń wszystkie aplikacje pomocnicze i wypróbuj zachowanie jądra po wyjęciu z pudełka za pomocą interfejsu użytkownika touchpada dla menedżera pulpitu. Powinien robić to, czego potrzebujesz, a jeśli chcesz więcej gestów i innych rzeczy, dodaj easystroke, który działa dobrze. Jest on teraz sortowany w standardowych sterownikach wejściowych jądra i działa bez problemu, ponieważ przynajmniej jądro 4.1.32, chociaż niektóre wczesne jądra 4.0 nie działałyby. Obecne jądro LTS, 4.4, działa dobrze, podobnie jak 4.7.

aktualizacja 9/2015 ... jądra powyżej 3.14 mają wbudowaną większość multitouch, więc jeśli masz problemy, odinstaluj mtrack. tylko wbudowany sterownik wielodotykowy i easystroke działają dla mnie dobrze od jądra 3.14, chociaż wydaje się, że w wersji 4.0 i nowszej zastosowano regresję, która łamie gładzik Apple. Jądro 3.18 działa jednak świetnie.

Istnieje wiele rozwiązań, z których większość wciąż jest trochę na wpół upieczona. Wiele udokumentowanych jest nieaktualnych, więc upewnij się, że patrzysz na datę w Google.

Ubuntu ma wbudowaną obsługę podstawowych gestów (2 palce) w aplecie ustawień myszy / touchpada.
Odkryłem, że jest to przypadkowo rozkręcone, a przewijanie dwoma palcami byłoby w tajemniczy sposób wyszarzone, co spowodowało, że wyszedłem na długi łańcuch googlingów, by go odzyskać.
Potem próbowałem dotknąć, co czasem działało.
Jest najłatwiejszy do skonfigurowania i zawiera dobre instrukcje, ale jest oparty na starszym rozwiązaniu problemu demona.
Howto do ubuntu multitouch (będziesz musiał google, ponieważ mogę dołączyć tylko dwa linki) było bardzo nieaktualne, ale powoli się rozwija. W pewnym sensie oferuje inny zestaw niejednolitych rozwiązań, ale jest w trakcie aktualizacji.

Rozwiązaniem, którego obecnie używam, jest mtrack (w repozytoriach ) w połączeniu z easystroke (trzeba skompilować ze źródła).
Mtrack obsługuje wersję wielodotykową zamiast jądra, a nie rozwiązania ad hoc, takie jak touchegg i ginn, jeśli dobrze rozumiem, ale easyystroke to kolejne rozwiązanie demona, które wydaje się na razie działać dobrze na szczycie mtrack.

Podejście Mtracka wydaje się być kierunkiem rozwoju.

odinstaluj inne rzeczy (ginn, touchegg), jeśli go używasz, a następnie zainstaluj mtrack z repos, pełna nazwa to xserver-xorg-input-mtrack .

Konfiguracja jest uciążliwa i nie mam trzech palców do przesunięcia. Zobacz link na końcu wątku, aby uzyskać różne pliki konfiguracyjne osób. Używam magicznego gładzika jabłkowego i jest do tego całkiem dobry, chociaż ma jedną irytującą usterkę w tym podwójnym stuknięciu i przeciągnięciu, na przykład, aby przesunąć okno jest nieregularne. obejściem tego problemu jest albo użycie rzeczywistego kliknięcia przycisku, aby przenieść okno, lub wahanie się w ułamku sekundy po dwukrotnym dotknięciu i przytrzymaniu przed przesunięciem okna.

Właśnie znalazłem easyystroke i dopóki mtrack nie otrzyma GUI, możesz spróbować, jeśli jesteś wystarczająco ryzykowny, aby spróbować skompilować program.

po skompilowaniu przez uruchomienie make -j2i instalację przez sudo make install, zacznij od, easystroke -gaby uzyskać GUI i przejdź do strony wiki po instrukcje.

Innym problemem, który może wymagać rozwiązania, są sterowniki.

Jeśli używasz mtrack , może być konieczna ponowna numeracja plików, aby sterownik mtrack został odczytany jako ostatni lub ustawienia synaptics przechwycą wszystko.

Te sterowniki są przechowywane w /usr/share/X11/xorg.conf.d .

skopiuj sterownik mtrack do /etc/X11/xorg.conf.d , edytuj ustawienia w tym folderze (zobacz połączony wątek i plik README, aby dowiedzieć się, jak), aby uzyskać dobroć trzech palców, jeśli możesz (lub użyj easystroke ), i zmień nazwę plik do większej liczby, więc 50-mtrack.conf zmienia się na 60-mtrack.conf , w przeciwnym razie zauważyłem, że sterownik synaptyczny złapie touchpad o połowę krócej .

Umieszczenie pliku w / etc oznacza, że ​​nie zostanie on zastąpiony aktualizacjami, takimi jak pliki / usr , i że jest odczytywany jako ostatni, a zatem ma pierwszeństwo przed domyślnymi sterownikami w / usr .

Mam nadzieję że to pomoże. Jest to obszar dość aktywnego rozwoju, więc cokolwiek piszę, prawdopodobnie stanie się nieaktualne w ciągu roku, mam nadzieję, że na lepsze.

Richard Rath
źródło
Hej dzięki za tę wspaniałą odpowiedź. Przepraszamy, ale zajęło to trochę czasu :)
kapad
Jakieś wieści o właściwym rozwiązaniu tej kwestii? Nadal nie można go
zaakceptować
Wygląda na to, że obecnie istnieje pakiet easystroke, a opcja -g nie jest mu znana. Jednak bez argumentu uruchamia GUI. :) PS: Prowadzę mennicę 16.
Herbert
2

Chciałem tylko zasugerować użycie mojej kontynuacji mtracka dostępnej na github: https://github.com/p2rkw/xf86-input-mtrack , ponieważ obsługuje przeciąganie 3 palcami (instrukcje na dole pliku readme).

Używam go również w połączeniu z easystroke, ale musiałem zmodyfikować easyystroke, aby usunąć pewne ograniczenia dotyczące urządzeń absolutnych, z tą prostą zmianą (nie pamiętam dokładnego powodu, aby to zrobić, przepraszam):

diff --git a/handler.cc b/handler.cc
index 8830ea2..c9e3f91 100644
--- a/handler.cc
+++ b/handler.cc
@@ -563,7 +563,7 @@ protected:
        }
 protected:
        void move_back() {
-               if (!prefs.move_back.get() || (xstate->current_dev && xstate->current_dev->absolute))
+               if (!prefs.move_back.get())
                        return;
                XTestFakeMotionEvent(dpy, DefaultScreen(dpy), orig_x, orig_y, 0);
        }

Zmniejszyłem również margines błędu dla gestów:

diff --git a/gesture.cc b/gesture.cc
index 8531c08..0df990e 100644
--- a/gesture.cc
+++ b/gesture.cc
@@ -104,9 +104,9 @@ int Stroke::compare(RStroke a, RStroke b, double &score) {
                return -1;
        score = MAX(1.0 - 2.5*cost, 0.0);
        if (a->timeout)
-               return score > 0.85;
+               return score > 0.95;
        else
-               return score > 0.7;
+               return score > 0.92;
 }

... i działa świetnie.

Dodatkowa uwaga na temat bolesnej konfiguracji: możesz użyć xinput, aby skonfigurować go w locie, a następnie odpowiednio edytować xorg.conf lub utworzyć skrypt startowy z wywołaniami xinput.

p2rkw
źródło