De caracteres que viajan y su origen en el teclado
El teclado sigue siendo, a pesar de la gran cantidad de dispositivos a los que tenemos acceso, el método de entrada de datos más usado en el mundo. Dentro de todos los tipos que hay, el teclado QWERTY (el que tiene las letras Q, W, E, R, T, Y en su primera fila de caracteres) diseñado en 1868 por Christopher Latham Sholes, es el dominante. Sin embargo, más allá de su diseño ergonómico, cada pulsación que hacemos con el teclado desencadena una cascada de eventos técnicos que culminan en muchos casos (no siempre) en la CPU. En este artículo de blog aprenderás cómo los caracteres y símbolos viajan desde el teclado hasta el ordenador, se procesan y se muestran en pantalla.
El interior de un teclado QWERTY
Lo primero es lo primero. Antes de saber cómo viajan los caracteres en forma de bits desde el teclado hasta el ordenador, tenemos que entender qué tiene un teclado en su interior.
Un teclado está formado por varios componentes como un circuito impreso, interruptores, contactos de membrana, cableado y conectores, un controlador además de resistencias, diodos, capacitores, … etcétera. Como ves, está formado por muchas partes diferentes que forman un todo. Para nuestro propósito de hoy nos quedaremos con los interruptores y el controlador.
En su interior, un teclado tiene una matriz de interruptores. Esto significa que, debajo de cada una de las teclas del teclado existe un interruptor (interruptor Cherry MX, Gateron o Kailh en teclados mecánicos o capa de goma conductora en teclados de membrana o tijera) que, al comprimirse (es decir, cuando tecleamos), provocan una señal eléctrica.
![teclado mecánico](https://i0.wp.com/naukabits.com/wp-content/uploads/2024/06/pexels-fox-58267-3829226.jpg?w=1200&ssl=1)
El controlador es la parte del teclado capaz de interpretar la señal eléctrica proveniente de la tecla pulsada. Es un microcontrolador (hardware) 8051 o ARM Cortex-M0, que ejecutará el firmware del teclado y es capaz de detectar cambios de estado en las teclas (es decir, si se ha pulsado o no) generando un código de escaneo que será enviado al ordenador, como veremos posteriormente.
El viaje de los caracteres
Dentro del teclado
Para explicar cómo un carácter puede ser introducido en el ordenador desde el teclado vamos a poner un ejemplo. Imagina que te encuentras usando un editor de texto (Microsoft Word, LibreOffice, Google Docs, … o cualquier otro). Presionas la tecla A [quieres escribir la A mayúscula por lo que utilizas el atajo Shift + A]. Cuando realizas esta pulsación, presionas también el interruptor que hay debajo de la tecla A y se cierra el circuito provocando una señal eléctrica que es enviada hasta el controlador, que se encuentra en la placa base del ordenador en sí, no en el teclado.
Por lo tanto, la señal eléctrica proveniente del teclado tiene que llegar a la placa base, donde se encuentra el controlador. Para ello, se utilizan interfaces físicas como el Universal Serial Bus (USB) o Bluetooth.
- En teclados USB, los datos se transmiten mediante señalización diferencial a 12 Mbps (Megabits por segundo) en los USB 2.0 y a 480 Mbps en los USB 3.0.
- Los teclados Bluetooth operan sobre la banda de 2.4 GHz y alcanzan tasas de 1-2 Mbps en BT 4.0 y hasta 50 Mbps en BT 5.0
Una vez los códigos llegan al ordenador, el controlador de host USB o el módulo Bluetooth (dependiendo de cómo haya sido la transmisión), decodifican los paquetes de datos.
En el ordenador
El controlador (o el módulo BT), detecta el cambio de estado, es decir, detecta la señal binaria proveniente del teclado y genera un código de escaneo (scancode en inglés) que se representa como un número hexadecimal, empezando por el par de caracteres 0x. Por ejemplo, el scancode del carácter A es 0x1C pero cómo has pulsado la tecla Shift se genera también el scancode 0x42. Cabe decir que estos scancodes sólo representan a las teclas pulsadas en el teclado y no a los caracteres que se quieren escribir en el ordenador. Por lo tanto, el scancode y el código ASCII del carácter son dos cosas distintas y no poseen relación. Estos scancodes se quedan almacenados en la memoria buffer del controlador, una pequeña memoria que almacena de forma temporal estos códigos hasta que la CPU esté lista para procesarlos.
Más tarde, el controlador del teclado genera una señal de interrupción [una interrupción es una señal que se envía a la CPU para indicar que se requiere su atención] para el manejo del scancode. La CPU, al recibir la señal, detiene temporalmente lo que está haciendo (básicamente ejecutar instrucciones de programas) y ejecuta el controlador de interrupciones del sistema operativo.*
Posteriormente, el controlador de interrupciones lee los scancodes del buffer del controlador del teclado. El sistema operativo detecta los nuevos códigos y los lee. Para ello, el sistema operativo consulta una tabla llamada keyboard layout (mapa de teclado) para convertir el grupo de scancodes 0x42 0x1C en el correspondiente código ASCII (o Unicode, según la configuración regional del teclado).
Ejemplos
- Por ejemplo, para un teclado inglés (o español) estándar, éstos códigos se corresponden (se mapean) con el valor decimal 65 (o el hexadecimal 41), el cual se interpreta como el carácter A y aparecerá en la pantalla del ordenador.
- En el caso de Unicode, la tecla A se mapea al código Unicode U+0041 (como puedes ver, el valor hexadecimal de ASCII y Unicode es el mismo para letras).
- En Windows este proceso involucra el uso de la biblioteca user32.dll y las funciones
MapVirtualKey
yToUnicode
.
Una vez el sistema operativo ha leído y ha mapeado el scancode al código del carácter, el carácter se renderiza en pantalla para que lo puedas ver en tu editor de texto.
Conclusión
Como has podido comprobar, el recorrido que realiza una pulsación en un teclado QWERTY hasta llegar a la CPU es un proceso técnico sumamente complejo. Este abarca múltiples áreas como la electrónica de estado sólido, los protocolos de comunicación, la teoría de sistemas operativos, los gráficos por computadora y la arquitectura de CPU. Esta intrincada red de procesos, escondida tras la sencillez de pulsar una tecla, es el reflejo de la estructura de capas que caracteriza a la informática moderna. Cada correo electrónico, cada línea de código y cada búsqueda web se inicia con este viaje que dura milisegundos, una perfecta coordinación de hardware y software que valida la frase de Alan Kay: «Las personas simples hacen las cosas simples, pero las personas complejas hacen las cosas simples.»
Espero que os haya gustado el artículo. Si es así, dejadme un comentario abajo.
Nos vemos en la próxima!
* Este mecanismo de interrupción permite que el teclado pueda enviar señales a la CPU de manera asíncrona, es decir, en cualquier momento, sin necesidad de que la CPU esté continuamente verificando el estado del teclado. Esto optimiza el uso de los recursos del sistema y asegura una respuesta rápida a las entradas del usuario.
Referencias
- Imagen de capa de goma conductora https://www.jan-huei.com/es/product/conductive-silicone-rubber.html
- Imagen de interruptor Cherry MX https://www.cherry.es/mechanical-switches/mx-switches
- https://www.picmania.garcia-cuervo.net/recursos/teclado_at-ps2_interfaz_y_funciones_v1.2.pdf
- https://www.fdi.ucm.es/profesor/jjruz/web2/temas/Curso05_06/EC9.pdf