Manter sempre o NumLock

27

Eu tenho teclado padrão com teclas numéricas no lado direito (eu acho que é chamado de teclado de 104 teclas). Eu quero usar as teclas numéricas apenas como teclas numéricas. Isso significa que eu não quero que o NumLock ligue e desligue as teclas numéricas.

No entanto, às vezes acontece (eu não sei como, talvez por eu acidentalmente acertar a tecla NumLock ) que o numlock está desligado, e eu tenho que pressioná-lo novamente. Isso é extremamente chato.

É possível desativar o desativação do numlock?

Em outras palavras: Eu quero que minhas teclas numéricas atuem sempre como teclas numéricas e desativem a opção numlock .

Estou usando o Debian e o LXDE (Openbox).

    
por Martin Vegter 29.10.2013 / 16:12

13 respostas

7

Depois de ler toda a resposta aqui, fiquei bastante surpreso ao ver que você pode fazer o seguinte.

<keybind key="Num_Lock">
  <action name="Execute">
    <command>numlockx on</command>
  </action>
</keybind>

Então toda vez que você pressionar Num , o que desativará o numlock. Ele executará numlockx on , que reativa o numlock.

O nome vem da minha saída de xev , que me deu o código de chave 77 e o nome Num_Lock

No caso @MartinVegters ele precisou esperar alguns segundos para que o numlockx on seja executado definitivamente após o evento de Num ser tratado. Já que existe uma condição de corrida entre o manuseio do numlock no kernel e a execução numlockx .

Para este caso, você pode escrever um pequeno script denumlock.sh like

#!/bin/sh

sleep "$1"
numlockx on

e use-o na ligação de chaves

<command>/bin/sh denumlock.sh 1</command>

Isso está sujo, mas funciona.

O que recomendo é o seguinte, que eu não pude testar. É melhor seguir as primeiras respostas que sugerem usar

xmodmap -e 'keycode 77 = Escape'

Mas para o LXDE você precisa usar o mecanismo de inicialização automática do LXDE, que é diferente da forma como o Openbox edita o ~/.config/openbox/autostart .

No LXDE, você aparentemente precisa editar ~/.config/lxsession/LXDE/autostart ou com Lubuntu ~/.config/lxsession/Lubuntu/autostart , que contém os comandos para a inicialização. (Veja Arch documentos e LXDE docs ) Você pode precisar criar esse arquivo e adicionar esta linha.

@xmodmap -e 'keycode 77 = Escape'

Infelizmente, como eu disse, não posso testar se isso funciona, pois só tenho uma máquina virtual rodando com o LXDE.

    
por 24.06.2014 / 13:42
13

perhaps by me accidentally hitting the NumLock key

Se o teclado for seu (em vez do do seu empregador, por exemplo), apenas remova-o do teclado fisicamente .

Você ainda pode pressioná-lo com uma coisa pontiaguda se realmente precisar.

    
por 24.06.2014 / 15:15
7

No teclado do meu laptop (Ubuntu 10.04), o bloqueio do teclado está atualmente ativado.

$ xmodmap -pke|grep 77
keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys
keycode 177 = XF86Phone NoSymbol XF86Phone
$ xmodmap -e "keycode 77 ="

Voila! numlock agora está desativado.

xmodmap -e "keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys"

Coloca de novo. (Talvez se interessar por Num_lock seria uma idéia melhor, mas você entende a essência).

Responder ao comentário de @Martin Vegter.

Ok , em resposta ao seu comentário xmodmap estraga suas ligações, entendido.

Acabei de verificar a Documentação do Openbox

Dê uma olhada em ~ / .config / openbox / lxde-rc.xml

ls -l lxde-rc.xml (você tem um rc.xml também?, por favor verifique).

faça uma cópia como backup

(use um editor) procure por numlock (talvez nmlk).

Você vê algo assim?

<keybind key="Numlock">
<action name="whatEverItSays"/>
</keybind>

Comente ou altere o valor-chave do keybind para uma alternativa, por exemplo, Alt-Numlock para alternar

key="A-Numlock"

Por exemplo

Para Comente

<!-Commented out from here
    <keybind key="Numlock">
    <action name="whatEverItSays"/>
    </keybind>
To Here -->

ou

Alterar para alternar Alt + Numlock

<keybind key="A-Numlock">
  <action name="whatEverItSays"/>
</keybind>

salve as alterações e faça logout / login ou reinicie.

    
por 09.11.2013 / 19:48
5

Encontre o seu código numlock com xev . Por exemplo, aqui, Num_Lock é 77.

Use o xmodmap para remapear o código de acesso:

  • Para as sessões atuais do X, dentro de um shell, use xmodmap -e 'keycode 77 = ' .
  • Para todas as futuras sessões do X, dentro de ~/.xprofile place xmodmap -e 'keycode 77 = ' .

    EDIT: Nota: Não funciona se um software estiver alterando o estado Num Lock.

por 07.11.2013 / 03:04
4

Apenas remova o mapeamento de teclas NumLock mapeando-o para nada: primeiro execute xev e pressione Num Lock (ele provavelmente imprimirá 77) e, em seguida, execute o comando:

xmodmap -e "keycode # = """

em que # é o código-chave do NumLock.

Você também colocaria isso em ~/.xprofile para desabilitar o NumLock em x sessões.

    
por 06.11.2013 / 10:11
3

comoLinuxMint17.2eimaginooutrasversõesdoUbuntuvocêpodeirparaaconfiguraçãodoseutecladoe,emseguida,LAYOUTSnessapágina,vocêencontraráumpequenobotãode"opções".

De lá, vá para "várias opções de compatibilidade" e verifique "chaves numéricas sempre digitam dígitos"

Este é um salva-vidas para mim. Isso me incomoda para digitar um número e ser movido para outro lugar na página. Felicidades! ;)

    
por 26.10.2015 / 22:57
1

Outra maneira, se você quiser desabilitar a chave numlock , desabilite permanentemente. Você pode fazer isso modificando seu arquivo de mapa de chaves atual modificando o código de tecla 77.

Defina este valor para "none", de modo que pressione acidentalmente a tecla não fará nada.

Use numlockx na inicialização para iniciá-lo e use o arquivo de keymap modificado em um dos scripts de início, por exemplo. ~/.bashrc ou em /etc/profile .

NOTA: eu não testei isso, mas deve funcionar.

    
por 24.06.2014 / 12:18
1

No OpenSuse 13.x com o KDE, isso funcionou para mim:

  • instale o numlockx
  • Adicionar atalho personalizado:
    • Atalhos personalizados - > Editar - > Novo - > Atalho Global - > Comando / URL:
    • Nome da ação: NumLockOn
    • Comentário: mantenha o numlock em
    • Trigger: definido para NumLockk
    • Ação- > Comando / URL: sh -c 'sleep 0.5; numlockx em'
    • Clique em aplicar
    • (feito)

Se o NumLock precisar ser ativado porque está desativado, use apenas % numlockx on .

    
por 10.08.2015 / 23:04
1

Outras respostas aqui sugeriram usar numlockx on com xmodmap -e 'keycode 77 =' , mas numlockx on não funcionaria no meu sistema junto com o comando xmodmap , mostrando uma mensagem de erro:

$ numlockx on
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  132 (XTEST)
  Minor opcode of failed request:  2 (X_XTestFakeInput)
  Value in failed request:  0x0
  Serial number of failed request:  17
  Current serial number in output stream:  20

E também definir xmodmap -e 'keycode 77 =' por algum motivo removeria todos os meus atalhos de teclado feitos com xbindkeys .

Essa resposta a uma pergunta semelhante me ajudou, no entanto. Parte do meu ~/.xinitrc :

numlockx on
xmodmap -e 'keycode 77 = NoSymbol Num_Lock'

Desta forma, o NumLock não faz nada por si só, mas se pressionado com Shift, ele serve a sua finalidade original (principalmente inútil) e, o mais importante, não impede que numlockx on trabalhe em meu sistema ou atrapalhe meu xbindkeys de atalhos de teclado.

    
por 27.07.2017 / 01:49
0

Uma solução alternativa é adicionar um trabalho cron que executa o seguinte comando

setleds +num

a cada 30 segundos ou mais para ativar o NumLock.

Veja também

por 07.11.2013 / 13:56
0

Pode não ser a melhor solução, mas isso funcionou para mim:

stdbuf -oL xinput test 11 | mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}' | bash

Onde 11 é o id do seu teclado. Faça uma lista de xinput para determinar seu ID de teclado (no meu caso é 11):

user@host:~$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ DualPoint Stick                           id=12   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS DualPoint TouchPad          id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ USB 2.0 Camera                            id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]

Obviamente, numlockx deve ser instalado para que isso funcione.

Explicação:

  • stdbuf -oL modifica as operações de buffering do fluxo de saída para a linha de buffer
  • xinput test 11 imprime as teclas pressionadas para stdout
  • mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}' para cada linha impressa e contém 77 (a tecla numlock), crie um comando /usr/bin/numlockx on ...
  • | bash ... e canaliza para bash para executá-lo.

Você pode inserir este oneliner em um dos scripts iniciais dos ambientes de desktop ou executá-lo em segundo plano.

    
por 24.06.2014 / 13:21
0

Eu também quero que as teclas numéricas do teclado numérico sejam sempre números, nenhuma das coisas do KP _...

Minha solução é parte do meu repositório Remapping Apple Keyboard para uso com o Linux .

Basicamente, ele apenas remava Num_Lock como F20 e os números como eles próprios.

Esta solução sempre fornece o resultado desejado e uma tecla de função extra como benefício adicional.

    
por 05.03.2016 / 19:37
-1

Crie o seguinte script e torne-o executável com chmod +x <filename>

#!/bin/bash
if [ -x /usr/bin/numlockx ];then
/usr/bin/numlockx on
fi

Coloque o caminho do arquivo em .config/openbox/autostart

Ou coloque-o como um cron job que verifica a cada dois minutos e executa o script se os numlocks estiverem desativados.

crontab -e 
*/1 * * * * <path-to-file>

Ou apenas execute o script em um loop.

#!/bin/bash
  x=0
  while [ x -eq 0 ];do
    if [ -x /usr/bin/numlockx ];then
    /usr/bin/numlockx on
    fi
  done

Se você não tiver um numlockx, poderá obtê-lo com sudo apt-get install numlockx

    
por 08.11.2013 / 15:24