Ir al contenido

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

Cada vez que encendemos un equipo del aula con Debian y escritorio Plasma, el teclado numérico aparece apagado. El alumnado escribe la contraseña con los números de la derecha, no aparece nada y hay que pulsar Bloq Num antes de volver a intentarlo. Es un detalle pequeño, pero en veinte equipos y varias veces al día acaba siendo un fastidio. Veamos cómo dejarlo activado por defecto, tanto en la pantalla de inicio de sesión como dentro del escritorio.

Teclado numérico con el indicador NumLock encendido

Descarga los archivos

Por qué no basta con una sola opción

El NumLock hay que activarlo en dos momentos diferentes:

  • En la pantalla de inicio (SDDM), que es donde se escribe la contraseña.
  • En la sesión de Plasma, que al arrancar puede volver a dejar el teclado como estaba.

Además, Debian 13 inicia Plasma en Wayland por defecto, y ahí la herramienta clásica numlockx no funciona: solo sirve en las sesiones X11. Por eso el script hace cuatro cosas, para que funcione en cualquier caso.

Qué hace el script

  1. Instala numlockx, la pequeña utilidad que enciende el NumLock en X11.
  2. Configura SDDM creando /etc/sddm.conf.d/numlock.conf con la opción Numlock=on. Así el teclado numérico ya está encendido en la pantalla de inicio.
  3. Crea un inicio automático global en /etc/xdg/autostart/numlockx.desktop, que ejecuta numlockx on cuando cualquier usuario entra en una sesión X11.
  4. Fija el valor por defecto de Plasma en /etc/xdg/kcminputrc con el valor NumLock=0 en la sección [Keyboard]. Plasma interpreta 0 como «activado al iniciar» (1 es desactivado y 2 deja el estado como esté). Esta es la parte que funciona también en Wayland.

Como todo se guarda en /etc, la configuración se aplica a todos los usuarios del equipo, también a los que se creen más adelante.

El script

Descárgalo desde el enlace del principio (activar-numlock.sh) o copia su contenido en un archivo con el mismo nombre (los mensajes del script están en gallego):

#!/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."

Cómo ejecutarlo

Abre una terminal (Konsole) y ve a la carpeta donde guardaste el archivo. Por ejemplo, si lo dejaste en Descargas:

cd ~/Descargas

Primero dale permisos de ejecución, para que el sistema lo trate como un programa y no como un simple archivo de texto:

chmod +x activar-numlock.sh

Puedes comprobar que los tiene con ls -l activar-numlock.sh: al principio de la línea debe aparecer una x, por ejemplo -rwxr-xr-x.

Ahora ejecútalo como administrador con sudo, porque modifica archivos del sistema en /etc e instala un paquete:

sudo ./activar-numlock.sh

El ./ del principio indica que el script está en la carpeta actual. Te pedirá tu contraseña e irá mostrando los pasos del 1 al 4. Si lo ejecutas sin sudo, el propio script avisa de que debe ejecutarse como root y no hace nada.

Al terminar, cierra la sesión o reinicia el equipo. En la pantalla de inicio el teclado numérico ya debería estar encendido, y seguirá así al entrar en el escritorio.

Si un usuario sigue con el NumLock apagado

El archivo /etc/xdg/kcminputrc solo marca el valor por defecto. Si algún usuario cambió antes esta opción, su configuración personal (~/.config/kcminputrc) tiene prioridad. En ese caso basta con ir a Preferencias del sistema → Teclado y, en NumLock al iniciar Plasma, elegir Activado. También se puede borrar la línea NumLock= de ese archivo personal para que vuelva a tomar el valor del sistema.

¿Y si tienes muchos equipos? Con Ansible

Si gestionas el aula con Ansible, no hace falta ir equipo por equipo: el playbook numlock-aula.yaml aplica la configuración en todos a la vez desde el equipo del 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 usarlo necesitas un inventario con un grupo llamado aula y acceso por SSH como root a los equipos. Por ejemplo, un archivo inventario:

[aula]
pc01
pc02
pc03

Y se lanza así (el .yaml no necesita permisos de ejecución, porque lo lee Ansible):

ansible-playbook -i inventario numlock-aula.yaml

El playbook hace los mismos cuatro pasos que el script, también el de /etc/xdg/kcminputrc, así que funciona igual en sesiones X11 y Wayland. Usa el módulo ini_file, que viene incluido en la instalación habitual de Ansible (paquete ansible de Debian).

Scroll al inicio