Como emular um botão direito do mouse, clique na tela sensível ao toque?

9

Meu novo laptop com tela sensível ao toque não possui o botão de menu (ou seja, o que se comporta como um clique com o botão direito do mouse) - aquele geralmente ao lado da tecla Ctrl direita.

como você não pode clicar com o toque esquerdo, estou tentando criar um atalho de teclado personalizado para Alt GR para esta função (em Sistema> Teclado> Atalhos> Atalhos Personalizados)

Ao usar o xevcomando com um teclado integrado (que possui o botão de menu), descobri que as informações do botão são:

KeyRelease event, serial 42, synthetic NO, window 0x4800001,
    root 0xab, subw 0x0, time 2544690, (1236,607), root:(1302,1050),
    state 0x0, keycode 135 (keysym 0xff67, Menu), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

No entanto, não tenho ideia do que fazer com essas informações ...

btw eu estou usando um Ubuntu 13.04.

Qualquer ajuda seria muito apreciada...

Ismail Moghul
fonte
Eu tenho exatamente o mesmo problema com o meu Aspire P3, ubuntu 14.04, as funções do botão direito não está trabalhando com touchscreen :(
user65390
@ user65390 você já tentou a resposta de Schiller freddi ...
Ismail Moghul
11
você deve editar esta pergunta para remover a nerdice. Basta dizer, como clicar com o botão direito do mouse em telas sensíveis ao toque? A pergunta, agora respondida, parece muito técnica para realmente corresponder às respostas
Bhikkhu Subhuti

Respostas:

12

Você precisa ativar o clique secundário (como AliNa ​​comentou) com gsettings set org.gnome.desktop.a11y.mouse secondary-click-enabled "true"ou com o editor dconf.

Então é possível que o Ubuntu lide com a tela sensível ao toque parcialmente como um touchpad, onde um toque não aciona o pressionar do mouse. Em vez disso, você precisa tocar rapidamente + tocar e segurar.

Freddi Schiller
fonte
Infelizmente, essa técnica é limitada a ambientes de desktop baseados no Gnome3, como o Ubuntu padrão. A pressão prolongada para clicar com o botão direito do mouse também funciona no Chrome / Chromium imediatamente, mas apenas porque ele realiza seu próprio tratamento de eventos de toque.
tanius
6

Apenas continue tocando na tela por 2 ou 3 segundos e o que é chamado "menu direito" deve aparecer. Essa é a maneira normal de emular um clique direito em qualquer tela sensível ao toque.

Radu Rădeanu
fonte
11
Você provavelmente deve ativar o clique secundário primeiro, apenas pelo gsettings set org.gnome.desktop.a11y.mouse secondary-click-enabled "true"ou através do Dconf Editor.
alin
Digitei o comando acima no terminal e, em seguida, fui até as configurações universais e reduzi o atraso de aceitação para o mínimo. no entanto, isso ainda não resolve o problema - quando eu usar um mouse, o menu não aparecer, mas quando se utiliza a tela sensível ao toque não funciona ...
Ismail Moghul
11
@IsmailM Então, eu acho que você deveria falar sobre isso com o seu vendedor / fabricante ...
Radu Rădeanu
@ RaduRădeanu Trouxe este laptop da john lewis com o Windows 8 (e a função touchscreen está funcionando corretamente no windows 8). Você ainda acha que eu deveria conversar com eles, porque eu instalei o ubuntu-me ...
Ismail Moghul
@IsmailM Sim, você deveria.
Radu Rădeanu
1

Se você possui uma tela sensível ao toque Wacom (usando o driver xf86-input-wacom) e é capaz de, pelo menos, vários toques com dois dedos, o seguinte produzirá um clique com o botão direito:

  1. Toque e segure com o primeiro dedo.
  2. Agora toque com o segundo dedo.

Se ainda não funcionar, encontre o nome do produto na tela de toque xinput --liste ative esse recurso com:

xsetwacom --set "[your touchscreen product id]" Gesture on

Para tornar essa alteração permanente, veja minha outra resposta para a técnica.

Ao contrário dos cliques com o botão direito do mouse no Gnome / Ubuntu Shell, isso funciona em todos os ambientes de desktop porque é um recurso (herdado) no nível do driver. Esteja ciente de que isso pode causar problemas com o clique esquerdo da tela sensível ao toque em alguns programas, e foi por isso que tive que desativá-lo no meu sistema.

tanius
fonte
0

Para quem tem a tecla Menu no teclado, a observação na pergunta sobre como usá-la para criar um clique com o botão direito do mouse é realmente uma ótima idéia. Como não é óbvio, eis como funciona:

  1. Toque e segure a tela com um dedo. Não solte o dedo, pois isso acionaria um clique esquerdo, o que pode ter efeitos indesejáveis ​​no seu aplicativo. Tocar e segurar, no entanto, é como pressionar e não soltar o botão esquerdo do mouse, e geralmente nenhuma ação em um aplicativo resulta disso. Mas, a posição do ponteiro do mouse já foi alterada para onde queremos clicar com o botão direito, e é por isso que fazemos essa etapa.

  2. Pressione e solte a tecla Menu. Já no evento de pressionamento de tecla, um clique com o botão direito do mouse é acionado.

Obviamente, essa técnica precisa de duas mãos e é completamente impossível em notebooks conversíveis no modo tablet. Portanto, é de uso prático limitado.

tanius
fonte
0

Das minhas respostas a esta pergunta, este é o meu favorito.

Se você tiver uma tela sensível ao toque que suporte pelo menos a entrada multitoque com dois dedos, poderá instalá-la touchegge configurá-la para interpretar (por exemplo) um toque com dois dedos como um clique com o botão direito. Eu tentei isso no Lubuntu 18.10 e funciona.

1. Instalação

touchegg está disponível nos repositórios Ubuntu 18.10, para que você possa instalá-lo da seguinte maneira:

sudo apt install touchegg

Para iniciá-lo, execute touchegg. Ao executá-lo em um terminal, você pode verificar a partir da saída se detectar corretamente seus gestos multitoque.

Para touchegginiciar automaticamente cada sessão do LXQt, basta adicioná-lo ao Início automático (menu LXQt → Preferências → Configurações do LXQt → Configurações da sessão → Início automático).

2. Maneiras de configurar touchegg

Você pode configurar toucheggde duas maneiras alternativas:

  • Configuração com um arquivo de configuração. Edite o arquivo ~/.config/touchegg/touchegg.conf. Para efetivar as alterações, execute o seguinte em um terminal ou na caixa de diálogo Alt+ F2execução:

    killall touchegg; touchegg
    
  • Configuração com uma GUI. toucheggtem uma boa interface gráfica de configuração chamada touchegg-gui, que é vista aqui . No entanto, não faz parte do toucheggpacote Ubuntu. Como alternativa, você pode instalar a GUI touchegg-gce conforme descrito aqui . touchegg-gcefunciona, mas você deve reiniciar manualmente toucheggapós salvar as alterações em seu arquivo de configuração, executando novamente:

    killall touchegg; touchegg
    

3. Configuração para emular um clique com o botão direito

Para configurar um clique com o botão direito do mouse com dois dedos, você pode usar este arquivo de configuração para ~/.config/touchegg/touchegg.conf:

<touchégg>
        <settings>
                <property name="composed_gestures_time">0</property>
        </settings>

        <application name="All">
                <gesture type="TAP" fingers="2" direction="">
                        <action type="MOUSE_CLICK">BUTTON=3</action>
                </gesture>
        </application>
</touchégg>

Comentários sobre a toucheggconfiguração:

  • O clique com o botão direito do mouse com dois dedos, como mostrado acima, atualmente já está contido no arquivo de configuração padrão que acompanha o produto touchegg. (Ubuntu 18.10 aqui.)

  • O programa aguardará composed_gestures_time(em milissegundos) que você conclua suas ações por gestos que consistem em várias partes (como toques duplos) e só depois as interprete. Portanto, ao usar toucheggapenas gestos de parte única, como clicar com o botão direito do mouse com dois dedos, podemos configurá-lo 0para evitar atrasos visíveis nas ações. Este também é o padrão no arquivo de configuração criado por touchegg.

  • Pelo menos com a minha tela sensível ao toque, o toque com dois dedos não é reconhecido ao tocar na tela com os dois dedos exatamente ao mesmo tempo. Mas quando há um intervalo de tempo muito pequeno (para que dois toques possam ser ouvidos, provavelmente ≥ 10 ms), ele funciona de maneira confiável. Então, apenas movo meu dedo indicador e o dedo médio com um pequeno espaço vertical em direção à tela, e ele funciona de maneira confiável.

  • O clique com o botão direito do mouse será acionado no local do dedo (dos dois neste gesto) que toca a tela primeiro.

  • toucheggpermite que todos os eventos que não foram configurados para bolha até o aplicativo sob o cursor sejam interpretados lá. Isso é bom porque o zoom pitada nativo etc. implementado no Chromium, Chrome, Evince, por exemplo, funciona muito mais suavemente do que via touchegg.

  • toucheggpode ser usado juntamente com o software de reconhecimento de gestos com um toque (altamente recomendável!) easystrokesem interferência. Obviamente, eles não devem ser configurados para serem acionados pelos mesmos eventos.

4. Solução de problemas

  • toucheggpode parar de funcionar após um ciclo de suspensão e retomada. Ainda preciso encontrar uma maneira de reiniciar automaticamente.

  • Pelo menos para mim e para outros , touchegginterpretaremos apenas os eventos de toque na tela sensível ao toque, não no touchpad. Nesse caso, isso é desejado. Pode ser porque meu touchpad usa um driver que não expõe eventos multitoque ao servidor X (em synapticsvez de libinput). Você pode verificar a que dispositivos toucheggse liga iniciando-o GEIS_DEBUG=3 touchegg.

  • Se toucheggcausar um tipo de "meio clique preso" em todos os programas, onde os toques moverão o ponteiro do mouse, mas não acionarão mais os cliques esquerdos: esse não é o seu comportamento normal. No Ubuntu 18.10 com LXQt, eu não tinha isso no começo, mas depois tive várias reinicializações touchegge até reinicializações de todo o computador. Ele desapareceu depois de iniciar a área de trabalho padrão do Ubuntu e retornar ao LXQt.

    Uma correção no toucheggarquivo de configuração, configurando um gesto adicional para tocar com um dedo, corrigirá o "meio clique preso", mas outro mau comportamento toucheggque acompanha esse bug permanece, portanto, não é uma correção real. Esse mau comportamento inclui que (1) toucheggagora também consumirá todos os eventos para os quais não está configurado, pelo menos para um dedo, e (2) alguns programas baseados em Java ( freemindpor exemplo) sofrerão agora um problema inverso com "metade presa" clicks ", onde a posição do cursor ficará parada, mas os cliques do botão esquerdo do mouse serão registrados. Isso é corrigido temporariamente executando uma ação de dois dedos no programa baseado em Java, para toucheggreconhecimento.

tanius
fonte
0

Você pode usar easystrokepara criar cliques com o botão direito do mouse com um modificador mais toque, como Ctrl+ Alt+ toque. Com configurações adicionais, isso pode ser acessado com apenas uma tela de toque, veja abaixo.

Isso é bastante interessante, já que "modificador mais toque" como um clique com o botão direito do mouse não pode ser configurado com nenhum dos touchegg(não reconhece modificadores), mouseemu(não reconhece toques por não terem scancodes) ou xsetwacom "…" set Button 1 …(não reconhece toques porque a entrada de dedo não é um evento de botão no driver).

1. Instalação

easystrokeO programa é mantido minimamente no momento, mas nas notas de versão eles apontam para um pacote recente do Ubuntu, construído no Ubuntu 18.04. Funcionou bem para mim (Ubuntu 18.10 aqui). Você pode instalá-lo da seguinte maneira:

wget http://openartisthq.org/easystroke/easystroke_0.6.0-0ubuntu8_amd64.deb
sudo apt install ./easystroke_0.6.0-0ubuntu8_amd64.deb

2. Configuração

  1. Inicie o programa com easystroke.

  2. Na segunda guia "Preferências", clique em "Botão de gestos" e Ctrl+ Alt+ toque no campo cinza. Ctrl+ Altparece ser a melhor escolha de modificador, pelo menos no LXQt, porque:

    • Tanto o Shift+ clique como o Ctrl+ clique já são usados ​​para a seleção múltipla e ficarão indisponíveis para isso se forem atribuídos easystroke.
    • Alt, Supere qualquer combinação que envolva Supernão será vista por easystroke. Provavelmente, esse é um problema de configuração do LXQt ou do Openbox, mas não consegui resolvê-lo até o momento.
  3. Na primeira guia "Ações", clique em "Adicionar ação".

  4. Configure sua ação com "Tipo: Comando" e "Detalhes: xdotool keyup ctrl alt; xdotool click 3". Adapte de acordo com os modificadores escolhidos.

    Dependendo dos modificadores, limpar os modificadores primeiro é importante para evitar efeitos colaterais. Por exemplo Shift, clicar com o botão direito do mouse no Chrome levaria à seleção de texto. Além disso, é necessário limpar explicitamente os modificadores para evitar modificadores bloqueados ao acionar essas teclas pressionadas com o software (consulte a seção 3 abaixo). Não limpar os modificadores por conta própria antes de executar o comando pode ser considerado um erro easystroke.

  5. Clique em "Record Stroke" e grave um único toque.

  6. Você pode desativar os pop-ups (aqui bastante inúteis) em "Preferências → Aparência → Mostrar pop-ups".

  7. Você pode limitar esse reconhecimento de gesto apenas à sua tela sensível ao toque e talvez ao dispositivo de entrada com caneta em "Avançado → Dispositivos".

Agora, Ctrl+ Alt+ toque cria um clique com o botão direito.

Observe que easystrokepossui um ótimo reconhecimento de gestos para gestos com um toque ("desenhando formas na tela") que você pode usar para automatizar muitas tarefas enquanto usa a tela sensível ao toque. Esse é o seu principal objetivo, enquanto a emulação com o botão direito é apenas um efeito colateral.

3. Melhoria: cliques com o botão direito do mouse

Agora, vamos melhorar essa configuração para que você possa acionar os cliques do botão direito com apenas uma mão e uma tela sensível ao toque (1) tocando em um botão especial na tela que significa "o próximo toque é clique direito" e (2) tocando na tela normalmente.

Aqui está uma receita para o Lubuntu (LXQt) e usando o modificador Ctrl+ Altescolhido acima, mas o princípio é o mesmo em todos os ambientes de área de trabalho e com todos os modificadores: uma entrada de inicialização rápida personalizada no painel.

  1. Crie um ícone personalizado para sua entrada do quicklaunch e salve-a como ~/.icons/default/rightclick.png.

  2. Crie um .desktoparquivo personalizado e salve-o como .local/share/applications/rightclick.desktop, com o seguinte conteúdo. Observe que você precisa fornecer usernameo caminho absoluto.

    [Desktop Entry]
    Name=Rightclick
    Comment=Next tap is a rightclick via Ctrl + Alt + easystroke gesture.
    Icon=/home/matthias/.icons/default/rightclick.png
    Exec=xdotool keydown ctrl alt
    Type=Application
    Categories=System;Utility;
    StartupWMClass=localdomain.rightclick
    
  3. Adicione outro widget de quicklaunch ao seu painel LXQt. Embora, em princípio, você também possa modificar o já existente, descobri que aquele colocado no canto inferior direito da tela é o mais natural para a operação com a mão direita e também os cliques acidentais mostrarão apenas a data (se é isso que está ao lado do esquerda, como no meu caso) em vez de iniciar um aplicativo grande.

  4. Abra ~/.config/lxqt/panel.confe ajuste a nova [quicklaunch2]seção para se referir ao seu .desktoparquivo personalizado . Mais uma vez, você precisa fornecer username. Exemplo de como pode parecer:

    [quicklaunch2]
    alignment=Left
    apps\1\desktop=/home/username/.local/share/applications/rightclick.desktop
    apps\size=1
    type=quicklaunch
    
  5. Reinicie o painel LXQt para efetivar as alterações. Por isso:

    1. Vá para "menu LXQt → Preferências → Configurações LXQt → Configurações da sessão".
    2. Selecione "Configurações básicas → Módulos LXQt → Painel".
    3. Clique em "Stop".
    4. Clique em "Iniciar".

     

    (Você também pode executar killall lxqt-panel && lxqt-panelna caixa de diálogo Alt+ F2iniciar, mas isso interferirá no status do painel reconhecido na caixa de diálogo mencionada acima e, se você misturar as duas técnicas, terá dois painéis em execução, um deles faltando algum painel ícones. Então, melhor não. Isso ainda é buggy.)

Além disso, se você tiver botões especiais de hardware ao lado da tela sensível ao toque, poderá atribuir o xdotool keydown ctrl altcomando a um deles.

4. Outras melhorias e solução de problemas

  • Como um bom efeito colateral, a técnica acima para cliques com o botão direito do mouse também permite o acesso com uma mão a todos os outros gestos nos quais você pode ter configurado easystroke. Esse é um recurso bastante poderoso para a automação do uso da tela sensível ao toque.

  • Ao configurar outros gestos easystroke, lembre-se do seguinte erro: easystrokenão limpa os modificadores escolhidos antes de executar a ação configurada. Os tipos de ação "Chave" e "Texto" resultam em combinações de teclas juntamente com Ctrl+ Altno caso acima, o que as torna inutilizáveis. Como solução alternativa, escolha o tipo de ação "Comando" e limpe os modificadores da mesma maneira que acima. Então, para acionar Ctrl+ V, o comando seria:

    xdotool keyup ctrl alt; xdotool key "ctrl+v"
    

    (A xdotoolopção --clearmodifiersnão ajuda aqui, pois apenas desativa os modificadores durante a combinação de teclas para executá-los e reaplicá-los posteriormente. O que nesse caso faria o próximo toque com o botão direito do mouse, conforme a técnica acima, mas não gostaríamos nesse caso.)

  • Se você tiver travado modificadores durante o teste, pressionar e soltar as teclas modificadoras no teclado físico corrigirá a condição.

  • Às vezes, durante o teste dessas coisas, meu LXQt meus eventos de teclado e mouse ficavam muito confusos. Nesse caso, somente o logoff do ambiente gráfico e o logon novamente ajudaram.

  • A maneira mais limpa de implementar a operação com apenas um toque easystroke, incluindo os casos de cliques com o botão direito, conforme necessário aqui, seria o toque no easystrokeícone do painel para o mesmo estado interno que o ícone do painel personalizado configurado acima, mas sem realmente alterar o estado do modificador do teclado, porque isso pode levar a modificadores bloqueados etc. Para mostrar a easystrokejanela, seria necessário usar o menu de contexto do ícone do painel. Obviamente, isso requer algumas alterações no easystrokecódigo.

tanius
fonte