Ir ao contido

Activar por defecto o teclado numérico en Debian con Plasma

Cada vez que acendemos un equipo da aula con Debian e escritorio Plasma, o teclado numérico aparece apagado. O alumnado escribe o contrasinal cos números da dereita, non aparece nada e toca premer Bloq Num antes de volver tentalo. É un detalle pequeno, pero en vinte equipos e varias veces ao día acaba sendo un fastío. Vexamos como deixalo activado por defecto, tanto na pantalla de inicio de sesión como dentro do escritorio.

Teclado numérico co indicador NumLock acendido

Descarga os ficheiros

Por que non abonda cunha soa opción

O NumLock hai que activalo en dous momentos diferentes:

  • Na pantalla de inicio (SDDM), que é onde se escribe o contrasinal.
  • Na sesión de Plasma, que ao arrincar pode volver deixar o teclado como estaba.

Ademais, Debian 13 inicia Plasma en Wayland por defecto, e alí a ferramenta clásica numlockx non funciona: só serve nas sesións X11. Por iso o script fai catro cousas, para que funcione en calquera caso.

Que fai o script

  1. Instala numlockx, a pequena utilidade que acende o NumLock en X11.
  2. Configura SDDM creando /etc/sddm.conf.d/numlock.conf coa opción Numlock=on. Así o teclado numérico xa está acendido na pantalla de inicio.
  3. Crea un inicio automático global en /etc/xdg/autostart/numlockx.desktop, que executa numlockx on ao entrar calquera usuario nunha sesión X11.
  4. Fixa o valor por defecto de Plasma en /etc/xdg/kcminputrc co valor NumLock=0 na sección [Keyboard]. Plasma interpreta 0 como «activado ao iniciar» (1 é desactivado e 2 deixa o estado como estea). Esta é a parte que funciona tamén en Wayland.

Como todo se garda en /etc, a configuración aplícase a todos os usuarios do equipo, tamén aos que se creen máis adiante.

O script

Descárgao desde a ligazón do principio (activar-numlock.sh) ou copia o seu contido nun ficheiro co mesmo nome:

#!/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 executalo

Abre un terminal (Konsole) e vai ao cartafol onde gardaches o ficheiro. Por exemplo, se o deixaches en Descargas:

cd ~/Descargas

Primeiro dálle permisos de execución, para que o sistema o trate como un programa e non como un simple ficheiro de texto:

chmod +x activar-numlock.sh

Podes comprobar que os ten con ls -l activar-numlock.sh: ao principio da liña debe aparecer unha x, por exemplo -rwxr-xr-x.

Agora execútao como administrador con sudo, porque modifica ficheiros do sistema en /etc e instala un paquete:

sudo ./activar-numlock.sh

O ./ do principio indica que o script está no cartafol actual. Pedirache o teu contrasinal e irá mostrando os pasos do 1 ao 4. Se o executas sen sudo, el mesmo avisa de que debe executarse como root e non fai nada.

Ao rematar, pecha a sesión ou reinicia o equipo. Na pantalla de inicio o teclado numérico xa debería estar acendido, e seguirá así ao entrar no escritorio.

Se un usuario segue co NumLock apagado

O ficheiro /etc/xdg/kcminputrc só marca o valor por defecto. Se algún usuario cambiou antes esta opción, a súa configuración persoal (~/.config/kcminputrc) ten prioridade. Nese caso abonda con ir a Configuración do sistema → Teclado e, en NumLock ao iniciar Plasma, escoller Activado. Tamén se pode borrar a liña NumLock= dese ficheiro persoal para que volva coller o valor do sistema.

E se tes moitos equipos? Con Ansible

Se xestionas a aula con Ansible, non fai falta ir equipo por equipo: o playbook numlock-aula.yaml aplica a configuración en todos dunha vez desde o equipo do profesorado.

---
- 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 usalo necesitas un inventario cun grupo chamado aula e acceso por SSH como root aos equipos. Por exemplo, un ficheiro inventario:

[aula]
pc01
pc02
pc03

E lánzase así (o .yaml non precisa permisos de execución, porque o le Ansible):

ansible-playbook -i inventario numlock-aula.yaml

O playbook fai os mesmos catro pasos que o script, tamén o de /etc/xdg/kcminputrc, así que funciona igual en sesións X11 e Wayland. Usa o módulo ini_file, que vén incluído na instalación habitual de Ansible (paquete ansible de Debian).

Scroll ao inicio