Eu não entendo completamente a situação (não que você não tenha explicado bem), mas me deparei com o problema de mapeamento Naga e depois de não encontrar nenhuma solução na web, decidi experimentá-lo. .
O problema é que talvez a minha solução também funcione para você, mesmo que seu sistema marque o dispositivo como um ponteiro em vez de um teclado. Experimente e me avise!.
Minha solução provavelmente não é a melhor, mas certamente funcionou para mim. Eu escrevi um pequeno daemon em C ++ e o coloquei em um repositório do github que você pode baixar e instalar a partir aqui
A ideia é implementar estes três passos:
-
Silencie o dispositivo para que os botões "não façam nada" usando:
$xinput set-int-prop <id> "Device Enabled" 8 0
Onde está o id do teclado visto com xinput (talvez 13 no seu caso?)
-
Capture o evento acionado pelo botão pressionando. Eu fiz isso, pegando a entrada bruta do nó do dispositivo de evento. Usando C ++, algumas bibliotecas sys linux e input.h. Você pode olhar como fazer isso no google (eu não posso postar mais de dois links, mas no link reddit você tem o link com uma página explicando isso). A parte boa dessa abordagem é que você pode capturar os dados de qualquer dispositivo, desde que o xinput os veja (não importa se o xinput acha que é um ponteiro, contanto que ele tenha botões e o xinput tenha um id para ele, acredito que esta abordagem funcionará, mas não me cite sobre isso).
-
Use as chamadas C ++ system () e xdotool (que você pode instalar a partir dos repositórios oficiais do Ubuntu) para emular as principais pressões (note que as chamadas system () permitem que você execute qualquer tipo de utilitário ou script personalizado) . Veja a página do manual do xdotool para mais informações, mas a melhor parte é que usando xdotool com "--window getactivewindow", as pressões de teclas emuladas ocorrem na janela focada no momento!
Explica-se um pouco mais aqui: link
Eu recomendo que você verifique o repositório do github, pois ele tem informações sobre tudo o que eu fiz. E o código-fonte (que é apenas cerca de 100 linhas) é facilmente extrapolado para outros dispositivos ou situações. Se você tem um Naga e Ubuntu você provavelmente terá que usar o instalador e tudo será configurado automaticamente.
No caso da pessoa que faz a pergunta, com um pouco de sorte especificando manualmente no arquivo "nagastart.sh", o ID do dispositivo de teclado deve fazer o trabalho. Apenas mudando uma linha. (atualmente o script procura por um Naga em dispositivos de teclado).
Espero que isso seja informação suficiente, se não, eu ficarei feliz em explicar tudo o que puder sobre isso. (O que não é muito)
A propósito, não é muito infalível, então se você instalá-lo usando um ID de dispositivo errado você obterá um comportamento inesperado (como os cliques do mouse fazendo coisas engraçadas se o teclado for id = 13 e você colocar id = 14) , mas não se preocupe. Basta abrir um terminal e matar naga. Para remover todas as alterações, execute
$sudo rm /usr/local/bin/naga ~/.config/autostart/naga.desktop /usr/local/bin/nagastart.sh
Boa sorte!