Monitoramento na sessão X11 (área de trabalho gráfica) somente
Em você está usando a camada XInput (você provavelmente está, se você está rodando um X moderno) então xinput test «keyboard-id»
(do pacote xinput
no Debian) dará eventos de press release e pey. Você pode obter o ID do teclado executando xinput list
. Você também pode usar o nome.
xinput test 'AT Translated Set 2 keyboard' | grep -c 'key press'
Observe que quando você canaliza xinput
, ele tem um buffer razoavelmente grande. Então você pode perder algumas teclas digitadas, infelizmente. Você poderia usar a API do XI2 diretamente para evitar isso, mas isso não é fácil do shell.
Você pode facilmente iniciar seu script como um dos scripts de login em seu ambiente de área de trabalho ou do seu arquivo .xsession
, dependendo. O xinput
deve sair quando você sair, porque perderá sua conexão X11. Por isso, é muito fácil rastrear quando sua sessão começa e termina.
Monitorando todo o sistema (todas as sessões, mesmo modo de texto)
Alternativamente, se você quiser monitorar as teclas all no sistema, não apenas aquelas na sua sessão X11, você pode usar o input-events
(parte do pacote input-utils no Debian, em menos). Isso deve ser executado como root. Use lsinputs
para encontrar o dispositivo de entrada correto (que é 0 no meu sistema) e, em seguida:
input-events 0 | grep -c 'EV_KEY.*pressed'
Se você seguir esse caminho, terá que descobrir quando suas sessões começam e terminam de alguma forma (por exemplo, a sugestão de dbus de peterph).