Ir para o conteúdo

Ativar por omissão o teclado numérico no Debian com Plasma

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.

Teclado numérico com o indicador NumLock ligado

Descarrega os ficheiros

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

  1. Instala o numlockx, o pequeno utilitário que liga o NumLock em X11.
  2. Configura o SDDM criando /etc/sddm.conf.d/numlock.conf com a opção Numlock=on. Assim o teclado numérico já está ligado no ecrã de início de sessão.
  3. Cria um arranque automático global em /etc/xdg/autostart/numlockx.desktop, que executa numlockx on quando qualquer utilizador entra numa sessão X11.
  4. Define o valor por omissão do Plasma em /etc/xdg/kcminputrc com NumLock=0 na secção [Keyboard]. O Plasma interpreta 0 como «ligar no arranque» (1 é desligado e 2 deixa 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).

Scroll to Top