Meu problema atual é que: no teclado do meu laptop Acer Nitro, há uma tecla Nitro - que é uma tecla especial que nenhuma outra marca de laptop possui. Você vê na imagem abaixo que há uma tecla N estranha ao lado da tecla de retrocesso - essa é a tecla Nitro.
Eu quero desenvolver um aplicativo GUI de forma que sempre que o botão Nitro for pressionado, meu aplicativo apareça. Estou usando o Ubuntu 22.04.
Pelo que descobri, acho que teria que escrever um LKM para capturar o evento de pressionamento de tecla Nitro e iniciar o aplicativo a partir daí. Estou seguindo a resposta aqui ( https://stackoverflow.com/questions/33836541/linux-kernel-how-to-capture-a-key-press-and-replace-it-with-another-key ) para capturar o evento de pressionamento de tecla.
Gostaria de saber se não há problema em iniciar um aplicativo GTK dentro do LKM - em outras palavras, colocando o código de exemplo aqui ( https://www.gtk.org/docs/getting-started/hello-world ) no meu código do módulo do kernel . Além disso, me pergunto se estou no caminho certo para alcançar meu objetivo.
Desde já, obrigado!
[UPD] Esclarecimento sobre o que eu quero: os laptops Acer Nitro geralmente têm um aplicativo chamado Nitrosense que fornece uma GUI para alterar a cor do teclado e a velocidade do ventilador. A tecla Nitro quando pressionada mostra aos usuários a GUI. No entanto, o aplicativo Nitrosense é apenas para Windows - quero escrever a mesma coisa para o Ubuntu. Até agora, encontrei vários repositórios sobre como alterar a cor do teclado e a velocidade do ventilador, mas não há repositório para um aplicativo que abre quando pressiono a tecla Nitro, então quero construir tal coisa. Estou usando o GNOME 42 no Ubuntu 22.04. O que eu quero é sempre que o usuário (já logado) pressionar a tecla Nitro, uma GUI mostra automaticamente para eu fazer coisas.
[UPD2] Também encontrei este repositório https://github.com/kphanipavan/PredatorNonSense que parece tentar fazer a mesma coisa que minha preocupação em outra marca Acer. Acho que pode ser útil, vamos ver.
[UPD3] Aqui está o evento que encontrei quando useievtest
No entanto, quando tentei xev
, não havia nada impresso, o que me faz pensar que o X Server não reconhece o evento de pressionamento de tecla Nitro. Acho que devo procurar documentação para escrever um módulo para enviar o evento de chave Nitro para o X Server?
Tentei acessar as configurações do teclado no GNOME Control Center para tentar adicionar um atalho de teclado, mas também não reconheceu a tecla Nitro - talvez porque o GNOME esteja sendo executado no X Server e o X Server não reconheça o evento da tecla Nitro?
Eu também olhei para o repositório que mencionei no UPD2, então o que o autor fez também foi pesquisar continuamente grep
o log de evtest
para ver se a tecla foi pressionada - confira este comando shell https://github.com/kphanipavan/PredatorNonSense/blob /master/PNS.sh .
O que eu acho que também posso fazer é escrever um serviço systemd simples para pesquisar o arquivo do dispositivo de teclado e verificar se o Nitro está pressionado. No entanto, menciona-se que isso pode desperdiçar muitos recursos. Alguma sugestão sobre isso?