Como faço para contar os cliques dos botões do mouse?

6

Como faço para contar os cliques dos botões do mouse desde o início do Ubuntu?

Eu gostaria de usar estatísticas de cliques do botão do mouse, então eu preciso disso.

Obrigado

    
por lukasz 30.12.2010 / 01:11

4 respostas

4

xinput pode fazer o que você precisa, Lukasz. Você pode ter um one-liner (bem, não exatamente um one-liner, mas você pressionará ENTER apenas uma vez :-D) para isso, mas primeiro você deve fazer algum trabalho. Eu juro que é muito fácil, vou explicar a maioria das coisas aqui por uma questão de clareza.

Abra um terminal e digite:

xinput list

Você terá uma boa lista de ponteiros, botões do teclado, etc., como este trecho do meu:

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ USB+PS/2 Optical Mouse                    id=10   [slave  pointer  (2)]
⎜   ↳ PS/2 Mouse                                id=13   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS GlidePoint                  id=14   [slave  pointer  (2)]

Meu mouse USB está bem na segunda linha e você vê que seu ID é 10 . Localize o mouse na lista e anote seu ID, você precisará dele para o comando principal para o que você deseja.

Se você quiser verificar se recebeu o ID correto, execute xinput test <id> . Se você mover o mouse, clicar nos botões, etc., deverá ver muitas linhas de informação no seu Terminal. Está listando tudo o que você faz com o mouse. Se nada acontecer, tente outro id da sua lista de ponteiros que faça sentido para você, você provavelmente escolheu o errado no início (isso realmente não deveria ser tão difícil).

Quando você finalmente encontrar o ID correto, execute este comando:

xinput test <id>|sed -une '/release/ {      x
     /^$/ s/^.*$/1/
     G
     h
     s/^/      /
     s/^ *\(......\)\n/  /p
     x
     s/\n.*$//
     /^9*$/ s/^/0/
     s/.9*$/x&/
     h
     s/^.*x//
     y/0123456789/1234567890/
     x
     s/x.*$//
     G
     s/\n//
     h
}'

Copie o acima como está e cole-o. Antes de você pressionar ENTER, substitua por & com o ID que você encontrou. Quando você o executa, você o deixa lá enquanto continua a usar o sistema. Sempre que você quiser verificar quantos cliques foram registrados, basta dar uma olhada no terminal.

Alguns comentários importantes:

  • Infelizmente, não sou muito bom console, shell, comandos, etc. certeza que alguém pode melhorar isso ou fornecer uma solução melhor. Há um inconveniente com minha solução: você realmente não tem resultados em real Tempo. Por alguma razão, parece estar em buffer, e você tem que gerar mais eventos do mouse para ler os mais velhos. Então, se você clicar e não é mostrado, mova o mouse bit e logo o último clique vai exposição. Desculpe por isso, mas eu tenho tentei algumas coisas, mas não sei como para resolver isso ainda. Espero que não seja isso ruim para você.
  • Como você vê, qualquer o clique está sendo contado. No caso de você quer contar os cliques para apenas um dos botões, substitua 'release' por 'release 1', 'release 2', 'release 3 ', bem, você entendeu a ideia. Se vocês quer contar todos eles, mas com estatísticas separadas, execute o comando (com indicação correta do botão) em um terminal separado.

A abordagem que usei: xinput list <id> faz o trabalho sujo, mostrando tudo o que acontece com o mouse. Então eu redireciono essa saída para sed , que irá analisar apenas as linhas com eventos 'release'. Eu acho que não há problema em considerar que um evento 'release' encerra o 'processo de cliques' (botão para baixo e depois para cima). O script sed não apenas mostra as linhas com 'release', mas também as numera. Esse script foi copiado diretamente de info sed (seção 4.7) e certamente poderia ser melhorado.

    
por Charles Roberto Canato 31.12.2010 / 04:58
1

OK, eu escrevi um programa em Python para contar cliques. Ele é executado como um daemon e salva dados no banco de dados sqlite3. Este é o meu primeiro programa em Python, então ele pode conter bugs.

link

    
por lukasz 24.03.2011 / 10:58
0

Você pode usar o evtest fornecido pelo projeto de entrada do linux .

Mas você deve ter certeza de ter CONFIG_INPUT_EVBUG = y no kernel (provavelmente o padrão se você instalar a versão de depuração) e definir o nível de depuração para 8

echo 8 > /proc/sys/kernel/printk

Neste ponto, no console, você verá várias mensagens que podem ser analisadas.

evbug.c: Event. Dev: gpio-keys/input0, Type: 0, Code: 0, Value: 0
evbug.c: Event. Dev: gpio-keys/input0, Type: 1, Code: 103, Value: 1

Você pode então instalar os pacotes bitbake e evtest

sudo apt-get install bitbake evtest

Então você pode usar o evtest no seu dispositivo, você precisará de alguns testes para descobrir o evento certo que você precisa e você pode contar a ocorrência desse evento.

evtest /dev/input/eventXX

Caso contrário, se quiser contar apenas o clique desde que você efetuou login no GDM / XDM, é possível desenvolver ou pedir a alguém para fazer isso, um aplicativo usando GTK ou Qt ou wxWidgets, Enlightenment ou o que desejar, para monitorar eventos de mouse e inicie este aplicativo assim que o desktop surgir.

    
por tmow 30.12.2010 / 14:44
0

Embora não seja totalmente o que você quer, WhatPulse é algo interessante para acompanhar vários petiscos como esse + um ranking online com equipes, países, ...

    
por Ward Muylaert 24.01.2011 / 20:52