El Viaje de una Tecla: Qué sucede cuando presionas "a" en Linux
Estás frente a tu terminal Linux. Presionas la tecla “a”. En menos de un parpadeo, esa letra aparece en tu pantalla. Pero, ¿qué ocurrió en ese instante? Acompáñame en este viaje por las capas de tu sistema.
Capa 1: El Hardware Habla
Todo comienza en tu teclado. Al presionar “a”:
- Se cierra un circuito bajo la tecla
- El controlador del teclado detecta la posición y genera un scancode (un número que identifica la tecla física)
- Este código viaja por USB/PS2 hacia tu computadora
El scancode de “a” es
0x1E. No es la letra “a”, es solo “la tecla en esa posición fue presionada”.
Capa 2: La Interrupción
Tu CPU está ocupada ejecutando miles de tareas. ¿Cómo sabe que presionaste algo?
- El controlador de teclado envía una interrupción de hardware (IRQ)
- La CPU pausa lo que estaba haciendo
- Consulta la tabla de interrupciones para saber qué hacer
- Ejecuta el manejador de interrupciones del teclado
CPU trabajando → IRQ del teclado → Pausa → Maneja evento → Continúa
Capa 3: El Kernel Traduce
El kernel de Linux entra en acción:
- Lee el scancode del puerto del teclado
- Consulta el keymap (mapa de teclado) configurado
- Traduce
0x1E→'a'(o'A'si Shift estaba presionado) - Coloca el carácter en un buffer de entrada
Scancode 0x1E + Keymap ES → 'a'
Capa 4: El TTY Recibe
Linux usa el subsistema TTY (TeleTYpewriter, herencia de los años 60):
- El kernel envía
'a'al dispositivo TTY asociado a tu terminal (/dev/pts/0por ejemplo) - El line discipline del TTY procesa el carácter
- Por defecto, está en modo canónico: acumula caracteres hasta que presiones Enter
- También maneja el echo: mostrar lo que escribes
Kernel → TTY (/dev/pts/0) → Line Discipline → Buffer de línea
→ Echo activado ✓
Capa 5: El Emulador de Terminal
Si usas una terminal gráfica (GNOME Terminal, Konsole, Alacritty):
- El emulador lee del TTY esclavo
- Recibe la
'a'que el kernel puso ahí - Actualiza su buffer interno de pantalla
- Determina dónde dibujar (fila, columna del cursor)
- Busca el glifo de “a” en la fuente configurada
Capa 6: El Renderizado
Finalmente, ver la letra en pantalla:
- El emulador envía comandos al servidor gráfico (X11/Wayland)
- Este actualiza el framebuffer de tu GPU
- La GPU envía la señal a tu monitor
- Los píxeles se iluminan formando la letra “a”
Terminal → X11/Wayland → GPU → Monitor → Tus ojos 👁️
El Diagrama Completo
┌─────────────┐
│ Teclado │ ─── Scancode 0x1E ───┐
└─────────────┘ │
▼
┌─────────────────────────────────────────────────┐
│ KERNEL │
│ ┌───────────┐ ┌─────────┐ ┌───────────┐ │
│ │ IRQ Handler│ → │ Keymap │ → │ TTY │ │
│ │ │ │ 0x1E→'a'│ │ + Echo │ │
│ └───────────┘ └─────────┘ └───────────┘ │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ ESPACIO DE USUARIO │
│ ┌─────────────┐ ┌──────────┐ ┌────────┐ │
│ │ Emulador │ → │ X11/Way- │ → │ GPU │ │
│ │ Terminal │ │ land │ │ │ │
│ └─────────────┘ └──────────┘ └────────┘ │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────┐
│ Monitor │
│ "a" │
└─────────────┘
¿Cuánto tiempo toma?
Todo este proceso ocurre en 1-10 milisegundos típicamente. La mayor latencia suele estar en:
- El emulador de terminal (renderizado)
- La sincronización con el monitor (vsync)
Por eso terminales como Alacritty o Kitty (aceleradas por GPU) se sienten más “instantáneas”.
Conclusión
Una simple “a” atraviesa:
- Hardware → circuitos y scancodes
- Interrupciones → la CPU se entera
- Kernel → traducción y TTY
- Emulador → interpreta y dibuja
- GPU → píxeles en pantalla
La próxima vez que escribas en tu terminal, recuerda: hay décadas de ingeniería trabajando para que esa letra aparezca en menos de lo que dura un parpadeo.
Este post es parte de la serie “El Viaje de la Información”, donde exploramos qué sucede realmente cuando interactuamos con nuestros sistemas.