Propagar eventos multi touch para aplicativos

2

Meu objetivo é usar bibliotecas padrão para reconhecer gestos e usar esses eventos com o Java 8. Eu sei que há uma pilha de reconhecimento de gestos para o Ubuntu (grail, geis), mas ainda não entendi como trazer tudo isso juntos.

Estou usando uma folha de toque eGalaxTouch (série PCAP7200) com um driver EETI eGTouch (versão eGTouchD: 2.5). Meu Linux Mint 17 reconhece este dispositivo como mouse.

Eu li os eventos do dispositivo em /dev/input/eventX e descobri que eles colocam eventos multi-touch ( ABS_MT_SLOT, ABS_MT_TRACKING_ID, ABS_MT_POSITION_X, ABS_MT_POSITION_Y ).

Existe a possibilidade de detectar gestos com funcionalidades padrão do Linux e propagar esses eventos para uma aplicação (no meu caso uma aplicação JavaFX2)? Ou eu tenho que reconhecer gestos dentro da minha aplicação - o que significa que eu não posso fazer uso de nenhuma biblioteca Linux?

Existe um tipo de dispositivo especial para dispositivos multitoque, além do mouse padrão?

    
por Embewee 06.10.2014 / 15:54

1 resposta

2

As bibliotecas padrão do Linux não possuem a tecnologia integrada para programação gestual; De qualquer forma, você pode ler a partir de dispositivos de xinput, e eu mostrarei como, mas primeiro eu ligarei você a alguns artigos sobre a história da programação xInput, programação gestual para X, e finalmente os comandos e biblioteca externa que eu acredito ser útil para você.

Histórico de multitoque XInput da LWN.Net

Esta é a história da extensão xorg-multitouch. Ele toca na programação gestual e faz referência ao projeto de programação gestual do uTouch .

Esses dois artigos informativos são um bom material de origem e devem lhe dar a compreensão de onde a tecnologia está hoje.

XInput Manual

$> xinput --list

O comando acima de legenda listará seus dispositivos xInput.

A funcionalidade gestual que você precisa pode ser feita dentro do seu aplicativo, mas há opções, como o projeto de programação gestual do uTouch, que também podem preencher a lacuna.

No que diz respeito à leitura de entrada do dispositivo, posso recomendar um de dois pacotes.

Eventos XEV lidos a partir de xInput

$> xev --display :0 -id $WINDOW_ID >> to.file
  • [- display] é a tela xserver # (a minha é: 0)
  • [id] é o seu id de janela # (isso pode ser obtido de um comando como $ > wmctrl -lG)

Eventos de leitura de tecla-chave de xInput

A legenda acima é um script Python que faz a mesma coisa, mas imprime eventos de entrada. Acredito que o XEV será a solução para você, porque o XEV registra a geometria dos eventos de entrada.

Espero que isso ajude!

    
por 06.10.2014 / 16:57