Solução usando halevt
De acordo com as páginas de manual, halevt
é um manipulador genérico para eventos HAL. Ele foi descontinuado e substituído por udev
, mas como não sei o suficiente udev
, darei uma halevt
solução.
EDIT: depois de um suor grave, eu consegui fazer isso udev
. Veja minha outra resposta .
Usarei vim
para editar arquivos, mas se você não souber, vim
poderá substituí-lo por nano
ou gedit
.
Instalando o halevt
sudo apt-get update && sudo apt-get install halevt
Determinando quais eventos você deseja ligar a um script
Pare o halevt
daemon que já está em execução:
sudo /etc/init.d/halevt stop
Agora veja se halevt
consegue reconhecer os eventos das chaves que você deseja usar, inicie o ouvinte:
sudo -u halevt halevt -fig:plugdev
Agora pressione a tecla de função no teclado ao qual deseja vincular o script. Eu sei que o OP quer que suas teclas de brilho funcionem, então vamos com isso. A saída para as teclas de brilho deve ser algo como isto:
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-down)
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-up)
Você pode ver que os eventos brightness-down
e brightness-up
são transmitidos.
Vincular o evento a um script
Agora edite o arquivo /etc/halevt/halevt.xml
:
sudo vim /etc/halevt/halevt.xml
e adicione as seguintes linhas (eu fiz na parte inferior, logo antes </halevt:Configuration>
):
<halevt:Device match="hal.info.category = input">
<halevt:Condition name="ButtonPressed" value="brightness-up" exec="sudo /home/user/brightness-script.sh up"/>
<halevt:Condition name="ButtonPressed" value="brightness-down" exec="sudo /home/user/brightness-script.sh down"/>
</halevt:Device>
onde é claro que você deve mudar value
para o evento que recebeu do ouvinte e exec
pelo comando que deseja executar.
Conceda ao usuário halevt permissão para executar o comando ou script
Como o halevt
daemon é executado como o halevt
usuário, você deve conceder permissão para fazer o que especificou exec
.
Executar (lembre-se de substituir vim
por seu editor de escolha)
sudo EDITOR=vim visudo
e adicione as seguintes linhas na parte inferior
halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh
e salve e saia.
Verifique se o seu script é executável
sudo chmod +x /home/user/brightness-script.sh
Inicie o daemon halevt novamente
sudo /etc/init.d/halevt start
E deveria estar funcionando!
udev
. Mas sinta-se livre para ficar com a outra solução, o importante é que ele está trabalhando;)E: Unable to locate package halevt
em 14.04.Solução usando udev
Como o HAL está obsoleto e
udev
agora é usado, essa abordagem é preferida à minha outra resposta (embora eu ache que a solução usando o HAL é mais simples).No entanto, para muitas teclas de função, você pode simplesmente usar Configurações do Sistema> Teclado> Atalhos para vincular um script, tente isso primeiro! Isso economiza muitos problemas. Por exemplo, as teclas de brilho não funcionam (não faço idéia do por que não); portanto, se você quiser saber como alterar o comportamento das teclas de brilho, continue lendo.
NOTA : Se você estiver executando um notebook Samsung, poderá corrigir todas as teclas de função (dependendo do modelo) instalando o
samsung-tools
pacote em http://www.voria.org/forum/Este tutorial pressupõe que você saiba como usar um terminal e usa o
vim
editor. Se você não soubervim
, substitua-o nos comandos porgedit
ounano
.Determinando seu teclado
deve imprimir os teclados conectados ao computador, no meu caso
Agora, existem duas opções:
Teclados USB :
se você deseja remapear seu teclado USB, inspecione-os executando
onde você deve substituir o 9 na instrução awk pelo número correto. A saída deve ser semelhante a
que indica corretamente que meu teclado é manuseado por meio do meu Logitech USB Receiver (entrada / evento7 acabou por ser o mouse Logitech G9 que possui alguns botões programáveis).
Teclado do laptop :
se você deseja remapear o teclado do laptop, lembre-se do número
AT keyboard
4 no meu caso. Obtenha também as informações dmi do seu laptop:que é no meu caso
e
que é no meu caso
Determine seu mapeamento atual de suas teclas de função
Agora podemos determinar nosso mapeamento de teclas atual ouvindo o teclado (insira o número correto)
você pode sair desse comando usando Esco teclado ou Ctrl+ cem outro teclado.
Se sua tela começar a rolar para baixo com muita força, pressione Esce Ctrl+ calgumas vezes e tente novamente com
ou, se você ainda tiver o problema de rolagem
No último caso, você ainda terá a rolagem, mas se pressionar as teclas de funções, elas deverão entrar
~/keymap.log
onde você poderá lê-las mais tarde.Agora podemos verificar o mapeamento atual de suas teclas de função pressionando-as, o que deve fornecer uma lista como (este é meu Fn+ F1a Fn+ F12):
Agora, anote os códigos de verificação para os quais deseja alterar o comportamento.
Alterando os códigos de tecla dos códigos de digitalização
Se você ver o código da chave claramente não cobre o que você espera a chave para que você pode ter um olhar em
/usr/include/linux/input.h
sob Teclas e botões para ver se há um código-chave que melhor corresponde ao que você realmente quer que aconteça. Os códigos das teclas estão no formatoKEY_KEYCODE
e você deve anotar a peçaKEY_
em minúsculas. Às vezes, alterar isso é suficiente para resolver o problema.As teclas de brilho, no entanto, geralmente têm o código de tecla correto associado a elas, e é isso que não permite que elas sejam remapeadas. Então, precisamos alterá-los para outros códigos-chave. Usaremos
prog1
eprog2
para este exemplo, porque eles não estão em uso no meu computador; no entanto, você também pode usá-lof13
atravésf24
ouf20
através def24
um teclado Apple que possua teclas F1através F19.Crie um mapa de chaves customizado :
Crie um arquivo de mapa de chaves no diretório
/lib/udev/keymaps
com um nome adequado. Consulte a saída dels /lib/udev/keymaps
para ver nomes adequados. Eu vou comcustom-brightness
o propósito desta pergunta.e insira os códigos de verificação das teclas que você deseja alterar, seguidos pelos códigos de verificação que deseja que eles tenham. Minha
custom-brightness
aparência é assim:Crie um arquivo de liberação de chave personalizado. Somente se você estiver alterando o teclado do laptop :
Às vezes, o evento de liberação da tecla não é enviado corretamente, causando uma interrupção no computador. Para evitar isso, também escreveremos um arquivo de liberação de chave personalizado
esse arquivo deve conter os mesmos códigos de verificação, o meu parece
Certifique-se de que os novos mapeamentos sejam carregados nos arquivos de regras
Agora, precisamos garantir que seus mapeamentos sejam carregados. Podemos fazer isso editando
/lib/udev/rules.d/95-keymap.rules
, por isso é inteligente fazer um backupNovamente, temos duas opções:
Teclados USB :
como você possui um teclado USB, você deve adicionar sua entrada
LABEL="keyboard_usbcheck"
e ela deve passar das outras entradas do fabricante do teclado. Isso ocorre porque meu teclado comjá é correspondido por uma das regras e, caso contrário, é substituído.
Adicione a seguinte regra, onde você deve mudar o
ID_VENDOR_ID
eID_MODEL_ID
e o nome do seu mapa de teclado appropiatelyTeclado do laptop :
se você
/lib/udev/findkeyboards
informou que o teclado do laptopAT keyboard
deve estar abaixo da regraLABEL="keyboard_vendorcheck"
, caso contrário, coloque-o abaixoLABEL="keyboard_modulecheck"
. Mais uma vez, coloque-o nas outras entradas do fabricante do seu laptop. Adicione a regra a seguir (SAMSUNG ELECTRONICS CO., LTD.
é um pouco longo, usei um curinga)Agora também adicione uma regra para
/lib/udev/rules.d/95-keyboard-force-release.rules
depois de fazer o backupNovamente, sob as outras entradas do seu fabricante, adicione
Verifique se o udev carrega as novas regras
Para carregar as novas regras, execute
NOTA:
udevadm control --reload-rules
(ainda em instruções em muitos sites) não funciona.Agora verifique se as regras foram aplicadas com sucesso por
que agora deve reportar as teclas de brilho
Remapear as chaves nas Configurações do sistema
Se a última etapa relatou os códigos de chave corretos, as teclas começam a funcionar automaticamente (caso elas tenham os códigos de chave incorretos).
Para o brilho, você ainda precisa vincular as teclas a um script que agora é possível usando Configurações do sistema> Teclado> Atalhos .
Aproveitar
Notas :
Se suas chaves tinham o código de chave errado e foram corrigidas por essa abordagem, siga as instruções em
/usr/share/doc/udev/README.keymap.txt.gz
(você pode abrir isso sem extrair usandozless
) e envie aos seus resultados os endereços de email mencionados lá, as alterações poderão ser incluídas na próxima versão. Muitos usuários serão beneficiados!Muito obrigado a este post útil de Vaidas Jablonskis.
fonte
$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory
também$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory