gestos multitoque

11

Eu queria saber como configurar gestos multi-touch no Ubuntu. No Windows, posso fazer isso usando o software do driver synaptics.

Eu já usei o synclient para configurar os toques, o palmdetect, o scroll, etc. Agora eu quero suporte a gestos. É possível mesmo?

Informações do sistema: Ubuntu 12.10, Synaptics clickpad

    
por kapad 16.11.2012 / 05:23

2 respostas

11

Atualização 15/09/2016 O Multitouch funciona imediatamente, e todas as soluções listadas abaixo (mtrack, synclient, ginn, ...) irão atrapalhar as coisas, então se você estiver atualizando a partir de um kernel antigo que requer , exclua todos os aplicativos auxiliares e tente o comportamento do kernel pronto para uso com o touchpad ui para o seu gerenciador de desktop. Ele deve fazer o que você precisa, e se você quiser mais gestos e outras coisas, adicione o easystroke que funciona bem. Ele é classificado nos drivers de entrada do kernel padrão agora e funciona sem problemas desde pelo menos o kernel 4.1.32, embora alguns dos primeiros kernels 4.0 não funcionem. O atual kernel LTS, 4.4 funciona bem, assim como o 4.7.

update 9/2015 ... os kernels acima de 3.14 ou mais têm a maioria dos multitouch embutidos agora, então tente desinstalar o mtrack se você tiver problemas. apenas o driver multitouch embutido e o easystroke estão funcionando bem para mim desde o kernel 3.14, embora o 4.0 e acima pareçam ter uma regressão que quebra o trackpad da apple. 3.18 kernel funciona muito bem.

Existem inúmeras soluções, a maioria das quais ainda é um pouco incompleta. Muitos dos documentados estão desatualizados, por isso certifique-se de verificar a data em que você está no google.

O Ubuntu criou suporte a gestos rudimentares (2 dedos) no applet de configurações do mouse / touchpad.
Eu o encontrei aleatoriamente preso e a rolagem de dois dedos seria misteriosamente cinza, me colocando em uma longa corrente de google para talvez recuperá-lo.
Então eu tentei touchegg, que meio que funcionava às vezes. É o mais fácil de configurar e há boas instruções, mas é baseado em uma solução de daemon mais antiga para o problema.
O howto multitouch do ubuntu (você terá que usar o google como só posso incluir dois links) estava muito desatualizado, mas está sendo trabalhado lentamente. Isso meio que oferece outro conjunto de soluções irregulares, mas está em processo de atualização.

A solução que estou usando atualmente é mtrack (nos repos) combinada com easystroke (tem que compilar a partir do código-fonte).
O Mtrack suporta a versão do kernel do multitouch em vez de uma solução ad hoc como o touchegg e o ginn, se bem entendi, mas o easystroke é outra solução de daemon que parece funcionar bem por enquanto no mtrack.

A abordagem de Mtrack parece ser a direção que o desenvolvimento está tomando.

desinstale as outras coisas (ginn, touchegg) se você usá-lo e, em seguida, instale o mtrack no nome completo dos repositórios xserver-xorg-input-mtrack .

É difícil configurar e não consegui deslizar três dedos. Veja o link no final do tópico para os vários arquivos de configuração das pessoas. Eu uso um trackpad mágico de maçã e é muito bom para isso, embora tenha uma falha irritante em que toque duas vezes e arraste, por exemplo, para mover uma janela é irregular. solução alternativa é usar um clique no botão real para mover as janelas ou hesitar uma fração de segundo após o toque duplo e segure antes de mover a janela.

Acabei de encontrar o easystroke , e até que o mtrack obtenha um gui, você pode tentar isso se for suficientemente aventureiro para tentar compilar um programa.

depois de compilado executando make -j2 e instalado por sudo make install , inicie-o com easystroke -g para obter a GUI e vá para a página wiki para obter instruções.

Um outro problema que você pode precisar resolver é os drivers.

Se você usar mtrack , pode ser necessário renumerar os arquivos para que o seu driver mtrack seja lido por último ou as configurações synaptics capturem tudo .

Esses drivers são armazenados em /usr/share/X11/xorg.conf.d .

copie o driver mtrack para /etc/X11/xorg.conf.d , edite as configurações nessa pasta (consulte o encadeamento vinculado e o README para saber como) para obter a bondade de três dedos, se puder (ou use easystroke ), e renomeie o arquivo para um número maior, de forma que 50-mtrack.conf se torne 60-mtrack .conf , caso contrário eu encontrei o driver synaptic vai pegar o seu touchpad na metade do tempo.

Colocar o arquivo em / etc significa que ele não será sobrescrito em atualizações como os arquivos / usr , e que é lido por último e, portanto, tem prioridade sobre o arquivo. drivers padrão em / usr .

Espero que isso ajude. Esta é uma área de desenvolvimento bastante ativo, então o que quer que eu escreva provavelmente estará obsoleto dentro de um ano, esperançosamente para melhor.

    
por Richard Rath 02.12.2012 / 22:47
2

Eu só queria sugerir usar minha continuação do mtrack disponível no github: link , pois ele suporta três dedos arrastar (instruções na parte inferior do readme).

Eu também estou usando isso com conjunção com o easystroke, mas eu tive que modificar o easystroke para remover algumas restrições sobre dispositivos absolutos, com essa simples mudança (não lembro o motivo exato para fazer isso, desculpe):

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);
        }

Também reduzi a margem de erro para gestos:

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;
 }

... e funciona muito bem.

Nota sobre configuração dolorosa: você pode usar o xinput para configurá-lo rapidamente, editar o xorg.conf de acordo ou criar um script de inicialização com invocações de xinput.

    
por p2rkw 30.10.2016 / 18:08