Como configurar o Ubuntu para ativar automaticamente o NumLock quando um teclado externo está conectado e desligado quando não está?

12

Ter o NumLock ativado é conveniente ao usar um teclado externo de tamanho normal (com um teclado) e muito inconveniente ao usar o teclado interno do laptop (que coloca dígitos em vez de letras no lado direito do teclado, a menos que Fn seja pressionado).

Portanto, tenho que ativar o NumLock toda vez que conectar um teclado externo (ou inicializar com ele conectado) e desligar toda vez que desanexar um teclado externo (ou inicializar com ele desconectado). E faço isso com frequência porque prefiro usar um teclado externo de tamanho normal, mas não tenho (apenas 3) portas USB suficientes para conectá-lo ao lado de um mouse, um modem 3G e uma unidade de disco rígido / flash externa.

Posso automatizar isso? Parece uma tarefa logicamente simples e muito formalizável: se houver um teclado USB conectado (algum dispositivo em / dev está presente?) - o NumLock está ativado, se não - o NumLock está desativado. O teclado interno do meu laptop está conectado ao PS / 2, e externo ao USB.

Talvez eu devesse codificar sozinho, mas onde colocá-lo neste caso?

Eu uso o Ubuntu 10.10.

Ivan
fonte

Respostas:

14

Primeiro, instale o numlockx ( clique aqui para instalar o numlockx ). Basicamente, isso permite que você escreva scripts para definir o estado do Num Lock - consulte a página de manual do numlockx para obter detalhes.

Em seguida, precisamos começar a explorar a diversão das regras do udev. Primeiro, precisamos descobrir como o teclado é identificado. Você pode fazer isso

ls /dev/input/by-id/

Isso deve fornecer alguns nomes de arquivos legíveis por humanos (que são links flexíveis para o nome verdadeiro não particularmente legível). Meu teclado era

/dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd

Então, precisamos descobrir todas as informações sobre o teclado. eu fiz

udevadm info -a -p $(udevadm info -q path -n /dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd)

Mas insira seu próprio caminho lá, é claro. Você obterá muitas informações, mas deseja observar o primeiro bloco que nomeia o teclado e possui SUBSYSTEMS=="usb". (Em vez do controlador USB ou o que for). No meu caso, isso foi:

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.3':
    KERNELS=="3-2.3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}==" 50mA"
    ATTRS{urbnum}=="6284"
    ATTRS{idVendor}=="058f"
    ATTRS{idProduct}=="9410"
    ATTRS{bcdDevice}=="0122"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="1.5"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="3"
    ATTRS{devpath}=="2.3"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="KINESIS FREESTYLE KB700"
    ATTRS{product}=="KB700 Kinesis Freestyle"

Então agora temos informações suficientes para escrever algumas regras. Use seu editor favorito para criar /etc/udev/rules.d/10-local.rulese inserir:

BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="add",RUN+="/usr/bin/numlockx on"
BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="remove",RUN+="/usr/bin/numlockx off"

Novamente, coloque o nome do seu teclado aqui e o ATTRS, se for diferente. Então deve funcionar :)

Observe que não pude testar isso, embora tenha executado todos os comandos até a criação do arquivo de regras. E as fontes para o caso de você precisar fazer mais investigações são:

Hamish Downer
fonte
Muito obrigado, excelente. Para ser sincero, não esperava uma resposta tão próxima dessa informação. Eu gostaria de poder conceder mais do que apenas corrigir e +1. Espero que todos aqueles que estrelaram e votaram na minha pergunta também o premiem.
Ivan
1

Se você estiver usando o shell do Gnome3.

Instalar numlockx

em seguida, inicie as preferências do aplicativo de inicialização gnome-session-properties

Imagem (novos usuários não podem postar imagens :))

Clique em Adicionar

Escreva qualquer coisa no campo de nome e no campo de comando copie isso:numlockx on

Imagem

Lukas Ignatavičius
fonte
0

Não sei ao certo o que estou fazendo de maneira diferente, porque meu numlock neste teclado está ativado por padrão (este é um teclado Mac Pro Aluminium). Existem algumas instruções aqui que devem fazer o truque.

Espero que isto ajude!

Craig Maloney
fonte
0

Se você estiver usando o gnome-shell, poderá instalar o status do Numlock e Capslock na extensão "Lock Keys" do painel. Por favor, encontrei aqui

Tatui1969
fonte