Como capturar um atalho de teclado

2

Eu preciso de um script, que será executado no terminal (em X11), e espere por um atalho de teclado (acontecendo em qualquer lugar no ambiente de desktop), uma vez que o atalho (ou sequência de teclas pressionada) acontece, terminará com código de retorno = 0.

PS: Eu preciso disso para dizer o zumbido quando parar de gravar minha área de trabalho.

Possíveis candidatos a usar nesse script são xev e xinput , mas não consigo descobrir como juntar as coisas. Ie. xinput parece promissor, mas está me fazendo especificar o dispositivo, o que quero que aconteça automaticamente, e não sei como usá-lo em um script que terminará quando uma sequência na saída for encontrada.

    
por skrat 19.01.2015 / 16:26

1 resposta

0

xinput test-xi2 --root captura eventos de todas as fontes. Você receberá 4 eventos - RawKeyPress , KeyPress , RawKeyRelease e KeyRelease , todos contendo o código de acesso na seção detail: . Não tenho certeza se você deve usar eventos brutos ou não, mas quando você ouve eventos de mouse, é necessário confiar em eventos brutos no caso de outro programa pegar o dispositivo com owner_events = 1 (XGrabPointer ou XIGrabDevice ), a menos que você precise do Xserver para rastrear modificadores para você, eu recomendaria usar eventos brutos.

Uma vez eu escrevi um programa que capturava eventos de teclado e mouse - link

EDIT: pelo que testei, os eventos brutos se comportam de maneira oposta em eventos de teclado. Portanto, para obter a maior taxa de sucesso, capture eventos de mouse não processados, mas eventos de teclado não processados.

    
por 14.08.2018 / 23:54