Encontramos a solução em Revisão de código :
setxkbmap -option numpad:mac
Até agora, não vejo nenhum enfraquecimento dos meus principais mapeamentos.
Situação: Eu tenho um script observando o status NumLock, bem, não assistindo, mas ligando a cada 1 segundo. O script está sendo executado em segundo plano.
Raciocínio: muitas vezes eu acidentalmente desativo o NumLock. E eu não tenho nenhum indicador do status NumLock no teclado.
SO, DE, DM, WM, xmodmap
:
$ lsb_release -a
No LSB modules are available.
Distributor ID: LinuxMint
Description: Linux Mint 18 Sarah
Release: 18
Codename: sarah
Ambiente da área de trabalho :
echo $DESKTOP_SESSION
cinnamon
cat /etc/X11/default-display-manager
/usr/sbin/mdm
wmctrl -m | head -n 1
Name: Mutter (Muffin)
xmodmap
:
xmodmap -pm
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Meu script original de Bash segue:
#!/bin/bash
while true
do
numlockx on
sleep 1s
done
Como você pode ver, o script não se importa com o status atual do NumLock. Apenas continua ligando.
Objetivo: Eu gostaria de tornar o script pelo menos um pouco eficiente CPU .
Pergunta: Qual é a maneira mais eficiente de CPU garantir que o NumLock esteja ativado no Linux (Mint 18)?
Encontramos a solução em Revisão de código :
setxkbmap -option numpad:mac
Até agora, não vejo nenhum enfraquecimento dos meus principais mapeamentos.
Não, não é eficiente. O problema é que o custo de consultar o estado NumLock é o mesmo que o custo de definir o estado NumLock. Então, você apenas dobra a carga se tentar consultar o estado antes de defini-lo.
Você poderia melhorar um pouco escrevendo código C compilado, já que evitaria os custos de fork / exec e de interpretação, mas ainda assim seria um hack horrível.
O que você poderia fazer em vez disso, é ativar o NumLock e, em seguida, desabilitar a tecla NumLock (ou até mesmo ignorar seu estado, se tudo o que você quiser é um teclado numérico sempre numérico).
Veja esta postagem do SuperUser para detalhes sobre como fazer isso com xmodmap (1) .
A maneira mais eficiente de usar a CPU é simplesmente desabilitar NumLock
usando xmodmap
, então você não precisa pesquisar o status NumLock
. Em outras palavras, o tempo gasto da CPU é zero. Isso pode ser feito com
xmodmap -e "remove mod2 = Num_Lock"
e se você quiser usá-lo novamente, ligue-o com
xmodmap -e "add mod2 = Num_Lock"
Como alternativa, crie um arquivo ~/.Xmodmap
com uma linha semelhante e certifique-se de que sua inicialização do X leia esse arquivo (alguns ambientes de desktop modernos não o fazem).
Veja man xmodmap
para detalhes.