Isso não é um problema com um teclado real, mas com eventos-chave falsos enviados por xfce4-power-manager
.
xfce4-power-manager
está fingindo dummy (código-chave 255, não atribuído) eventos de teclado (pressionamento de tecla seguido de liberação de tecla, a cada 20 segundos de acordo com a fonte) para garantir que a proteção de tela não entra em ação quando no modo de apresentação (normalmente, quando você está assistindo a um filme ou fazendo uma apresentação).
Esse comportamento foi adicionado na versão 1.5.2 (última versão de 2015-01-06) para corrigir este bug para desativar todos os tipos possíveis de proteções de tela no modo de apresentação.
Isso tem aquele efeito colateral pelo qual você é afetado, e que foi já observado nesse bug .
Então, você gostaria de deixar esse modo de apresentação para evitar o problema. Esse problema provavelmente deve ser levantado como um bug contra o xfce4-power-manager, para que essa mudança seja revertida, ou uma correção melhor para # 11083 seja encontrada.
Tão interessante quanto a explicação para o problema é como acabamos encontrando o culpado:
xinput test-xi2 --root
Relata todos os eventos de entrada X, informando sua origem e natureza. O que levou a:
EVENT type 13 (RawKeyPress)
device: 5 (5)
detail: 255
valuators:
EVENT type 14 (RawKeyRelease)
device: 5 (5)
detail: 255
valuators:
Essa é uma tecla pressionada seguida por um evento de lançamento de chave para o código de tecla 255 vindo do dispositivo 5.
xinput list
nos permite identificar o dispositivo de entrada:
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
Esse dispositivo id = 5 é um dispositivo virtual que atua como fonte de eventos gerados por software, como você pode gerar com:
xdotool key x
ou
xte 'key x'
Se você executar o comando xte
em ltrace
, perceberá que:
XStringToKeysym(0x7ffed76983e0, 0x7ffed76983e0, 0, 0x7f34e491deb0) = 120
XKeysymToKeycode(0x23abfe0, 120, 120, 0x7f34e4ce7139) = 53
XTestFakeKeyEvent(0x23abfe0, 53, 1, 0) = 1
Esse XTestFakeKeyEvent é a API X padrão para enviar esses eventos keypress.
Agora, queremos saber o que está enviando esses 255 eventos keypress. Podemos tentar descobrir quais dos aplicativos atualmente em execução usam essa API.
sudo lsof -Fn -nPd txt | sed -n '/proc/!s/^n//p' | sort -u | xargs grep -l XTestFakeKeyEvent
Ou seu equivalente mais robusto:
sudo lsof -Fn -nPd txt | sed -n '/^n\/proc/!s/^n//p' |
sort -u | xargs -d '\n' grep -l XTestFakeKeyEvent
Lista os arquivos que estão atualmente abertos e mapeados como executáveis ( txt
) para qualquer processo (que inclua bibliotecas e executáveis) e grep para XTestFakeKeyEvent neles.
Isso retornou o xfce4-power-manager.
Tudo o que resta a fazer é procurar na fonte por que esse processo faz aqueles XTestFakeKeyEvent.