Sempre que ligamos um computador da sala de aula com Debian e ambiente de trabalho Plasma, o teclado numérico aparece desligado. Os alunos escrevem a palavra-passe com os números da direita, não aparece nada e é preciso carregar em Num Lock antes de tentar outra vez. É um pormenor, mas em vinte computadores e várias vezes por dia acaba por ser um incómodo. Vejamos como deixá-lo ativado por omissão, tanto no ecrã de início de sessão como dentro do ambiente de trabalho.

Descarrega os ficheiros
- activar-numlock.sh: script para executar num só computador.
- numlock-aula.yaml: playbook de Ansible para configurar toda a sala de uma vez.
Porque não basta uma só opção
O NumLock tem de ser ativado em dois momentos diferentes:
- No ecrã de início de sessão (SDDM), que é onde se escreve a palavra-passe.
- Na sessão do Plasma, que ao arrancar pode voltar a deixar o teclado como estava.
Além disso, o Debian 13 inicia o Plasma em Wayland por omissão, e aí a ferramenta clássica numlockx não funciona: só serve nas sessões X11. Por isso o script faz quatro coisas, para funcionar em qualquer caso.
O que faz o script
- Instala o
numlockx, o pequeno utilitário que liga o NumLock em X11. - Configura o SDDM criando
/etc/sddm.conf.d/numlock.confcom a opçãoNumlock=on. Assim o teclado numérico já está ligado no ecrã de início de sessão. - Cria um arranque automático global em
/etc/xdg/autostart/numlockx.desktop, que executanumlockx onquando qualquer utilizador entra numa sessão X11. - Define o valor por omissão do Plasma em
/etc/xdg/kcminputrccomNumLock=0na secção[Keyboard]. O Plasma interpreta0como «ligar no arranque» (1é desligado e2deixa o estado como estiver). Esta é a parte que funciona também em Wayland.
Como tudo fica guardado em /etc, a configuração aplica-se a todos os utilizadores do computador, incluindo os que forem criados mais tarde.
O script
Descarrega-o a partir da ligação do início (activar-numlock.sh) ou copia o seu conteúdo para um ficheiro com o mesmo nome (as mensagens do script estão em galego):
#!/bin/bash
# Activa o NumLock por defecto (pantalla de inicio SDDM + sesión KDE/X11)
# Equivalente local do playbook de Ansible da aula.
# Uso: sudo bash activar-numlock.sh
set -e
if [ "$(id -u)" -ne 0 ]; then
echo "Este script debe executarse como root: sudo bash $0" >&2
exit 1
fi
echo "[1/4] Instalando numlockx..."
apt-get update -qq
apt-get install -y numlockx
echo "[2/4] Configurando SDDM (pantalla de inicio)..."
install -d -m 0755 /etc/sddm.conf.d
cat > /etc/sddm.conf.d/numlock.conf <<'EOF'
[General]
Numlock=on
EOF
chmod 0644 /etc/sddm.conf.d/numlock.conf
echo "[3/4] Creando autostart global (numlockx on ao iniciar sesión)..."
cat > /etc/xdg/autostart/numlockx.desktop <<'EOF'
[Desktop Entry]
Type=Application
Name=Activar NumLock Aula
Exec=numlockx on
Icon=keyboard
NoDisplay=true
X-GNOME-Autostart-enabled=true
X-KDE-autostart-after=panel
EOF
chmod 0644 /etc/xdg/autostart/numlockx.desktop
echo "[4/4] Valor por defecto de KDE Plasma (tamén funciona en Wayland)..."
# NumLock=0 -> activado ao iniciar Plasma (1 = desactivado, 2 = sen cambios)
if [ -f /etc/xdg/kcminputrc ] && grep -q '^\[Keyboard\]' /etc/xdg/kcminputrc; then
sed -i '/^\[Keyboard\]/,/^\[/{/^NumLock=/d}' /etc/xdg/kcminputrc
sed -i '/^\[Keyboard\]/a NumLock=0' /etc/xdg/kcminputrc
else
printf '\n[Keyboard]\nNumLock=0\n' >> /etc/xdg/kcminputrc
fi
# Activalo xa na sesión actual, se hai unha sesión X aberta
if [ -n "$SUDO_USER" ] && [ -n "$DISPLAY" ]; then
sudo -u "$SUDO_USER" DISPLAY="$DISPLAY" numlockx on 2>/dev/null || true
fi
echo "Feito: NumLock configurado en $(hostname). Pecha sesión ou reinicia para comprobalo."
Como executá-lo
Abre um terminal (Konsole) e vai à pasta onde guardaste o ficheiro. Por exemplo, se o deixaste em Transferências:
cd ~/Transferências
Primeiro dá-lhe permissões de execução, para que o sistema o trate como um programa e não como um simples ficheiro de texto:
chmod +x activar-numlock.sh
Podes confirmar que as tem com ls -l activar-numlock.sh: no início da linha deve aparecer um x, por exemplo -rwxr-xr-x.
Agora executa-o como administrador com sudo, porque altera ficheiros do sistema em /etc e instala um pacote:
sudo ./activar-numlock.sh
O ./ do início indica que o script está na pasta atual. Vai pedir a tua palavra-passe e mostrar os passos de 1 a 4. Se o executares sem sudo, o próprio script avisa que tem de ser executado como root e não faz nada.
No fim, termina a sessão ou reinicia o computador. No ecrã de início de sessão o teclado numérico já deve estar ligado, e continuará assim ao entrar no ambiente de trabalho.
Se um utilizador continuar com o NumLock desligado
O ficheiro /etc/xdg/kcminputrc só define o valor por omissão. Se algum utilizador alterou esta opção antes, a sua configuração pessoal (~/.config/kcminputrc) tem prioridade. Nesse caso basta ir a Definições do sistema → Teclado e, em NumLock no arranque do Plasma, escolher Ligar. Também se pode apagar a linha NumLock= desse ficheiro pessoal para que volte a usar o valor do sistema.
E se tiveres muitos computadores? Com Ansible
Se geres a sala com Ansible, não é preciso ir computador a computador: o playbook numlock-aula.yaml aplica a configuração em todos de uma vez a partir do computador do professor.
---
- name: Configurar e activar NumLock permanente na aula
hosts: aula
remote_user: root
gather_facts: no # Non necesitamos recoller facts, así vai máis rápido
tasks:
- name: Instalar numlockx para asegurar o control do teclado
apt:
name: numlockx
state: present
update_cache: yes
- name: Asegurar que o directorio de configuración de SDDM existe
file:
path: /etc/sddm.conf.d
state: directory
mode: '0755'
- name: Configurar SDDM para activar NumLock na pantalla de inicio
copy:
dest: /etc/sddm.conf.d/numlock.conf
content: |
[General]
Numlock=on
mode: '0644'
- name: Crear activación forzada no Autostart global do sistema
copy:
dest: /etc/xdg/autostart/numlockx.desktop
content: |
[Desktop Entry]
Type=Application
Name=Activar NumLock Aula
Exec=numlockx on
Icon=keyboard
NoDisplay=true
X-GNOME-Autostart-enabled=true
X-KDE-autostart-after=panel
mode: '0644'
- name: Valor por defecto de KDE Plasma (NumLock activado, tamén en Wayland)
ini_file:
path: /etc/xdg/kcminputrc
section: Keyboard
option: NumLock
value: '0' # 0 = activado, 1 = desactivado, 2 = sen cambios
no_extra_spaces: yes
mode: '0644'
- name: Notificar fin do proceso
debug:
msg: "Configuración do NumLock aplicada e persistente en {{ inventory_hostname }}"
Para o usares precisas de um inventário com um grupo chamado aula e acesso por SSH como root aos computadores. Por exemplo, um ficheiro inventario:
[aula] pc01 pc02 pc03
E executa-se assim (o .yaml não precisa de permissões de execução, porque é o Ansible que o lê):
ansible-playbook -i inventario numlock-aula.yaml
O playbook faz os mesmos quatro passos que o script, incluindo o de /etc/xdg/kcminputrc, por isso funciona da mesma forma em sessões X11 e Wayland. Usa o módulo ini_file, que vem incluído na instalação habitual do Ansible (pacote ansible do Debian).