El teclado del ordenador es el periférico de entrada que más se usa, junto con el ratón. Es un elemento básico de todo equipo para introducir texto. Sin embargo, pese a que todos lo usamos a diario, ¿realmente sabrías decir cómo funciona a nivel interno? ¿qué sucede cuando pulsas una tecla? Pues bien, todo eso es lo que trataré de explicarte aquí.
Índice de contenidos
Controlador de teclado o keyboard controller
Antes de nada, hay que conocer las partes fundamentales de un teclado, principalmente una de ellas, como es el controlador. Así comprenderemos cómo funciona todo.
En el campo de la informática, un controlador de teclado es un dispositivo que establece la conexión entre un teclado y un ordenador. Su principal tarea es comunicar al ordenador cuando se presiona o se suelta una tecla. Cuando se reciben datos del teclado, el controlador genera una señal de interrupción (conocida como interrupción del teclado) para permitir que la unidad central de procesamiento (CPU) procese la entrada.
Si el teclado es un dispositivo separado del sistema (como ocurre en la mayoría de los PCs de escritorio modernos), la placa base no se conecta directamente a las teclas. En su lugar, recibe códigos de escaneo desde un microcontrolador integrado en el teclado a través de alguna forma de interfaz serial. En esta configuración, el controlador también se encarga de controlar los LED del teclado enviando datos a través del cable.
En la década de 1980, el IBM PC AT utilizaba un chip Intel 8042 para la conexión con el teclado. Este PC también controlaba el acceso a la línea A20 para solucionar un error de chip en el Intel 80286. El controlador de teclado también se usaba para iniciar un reinicio del software de la CPU, lo que permitía que la CPU cambiara del modo protegido al modo real. Esto se debía a que el procesador 80286 no permitía hacer esta transición sin reiniciar la CPU. Este problema se presentaba porque los servicios del BIOS y del sistema operativo solo podían ser invocados por programas en modo real. Estos comportamientos fueron aprovechados por una variedad de software que dependía de esta funcionalidad, por lo que los controladores de teclado continuaron controlando la línea A20 y generando interrupciones de software en la CPU, incluso cuando la necesidad de reiniciar a través del controlador de teclado se volvió obsoleta gracias a la capacidad del Intel 80386 para cambiar del modo protegido al modo real sin reiniciar la CPU.
Además, si hay un puerto de del ratón PS/2 presente, el controlador de teclado también gestiona la entrada PS/2. En la actualidad, el controlador de teclado está integrado en el propio teclado USB, que a su vez forma parte de un superdispositivo de entrada/salida (E/S). En este caso, la función de controlar la línea A20 es manejada por el conjunto de chips.
Historia del KBC
El papel de IBM en el desarrollo del controlador de teclado es limitado. En los ordenadores compatibles con IBM, ya sea el controlador de teclado Intel 8042 o el controlador de teclado microcontrolador 8742 en modelos más recientes, se encuentran en la placa base. Estos controladores se encargan de gestionar la entrada del teclado, las líneas A20, el reinicio y el descifrado de los códigos de escaneo, así como también el mouse PS/2.
Sin embargo, aquellos que intentan utilizar el controlador de teclado estilo clásico 8042 que se encuentra en el IBM PC/AT y en la mayoría de las PC posteriores a menudo se enfrentan a la falta de documentación precisa. Aunque el 8042 (o el 8742, u otros microcontroladores compatibles integrados en chips Super I/O más recientes) cuenta con una documentación bastante completa, el problema radica en que el 8042 es un microcontrolador programable que incluye su propio software de control almacenado en una memoria de solo lectura (ROM). Hasta hace poco, aparte de algunas empresas como IBM, AMI y Phoenix, nadie sabía exactamente qué hacía el software de control.
IBM ha documentado una serie de comandos que el sistema anfitrión puede enviar al controlador de teclado (KBC o KeyBoard Controller). Sin embargo, es importante tener en cuenta que todos estos comandos son construcciones puramente de software, sin ninguna restricción impuesta por el hardware 8042 que dicten un formato o una función específica, o incluso su existencia. Por lo tanto, para comprender exactamente qué son los comandos y qué hacen, es necesario comprender el código almacenado en la ROM del 8042. Es importante destacar que diferentes controladores pueden tener códigos ligeramente diferentes en su ROM.
También te puede interesar conocer cuáles son los mejores teclados de la actualidad
Controlador y driver: no son lo mismo
No debes confundir el término anterior con los drivers o controladores que se instalan para el funcionamiento de los periféricos. Las distinciones entre un driver (controlador) y un chip controlador son las siguientes:
Driver (software/firmware)
Un driver es un software que permite la interacción de un dispositivo con el sistema operativo y otros programas del ordenador. Los drivers actúan como intermediarios entre el hardware y el software, proporcionando una interfaz estándar para facilitar la comunicación y el funcionamiento del dispositivo. Los drivers son específicos para cada sistema operativo y dispositivo. Se requiere un driver distinto para cada sistema operativo, versión y también para diferentes modelos y marcas de dispositivos. Los drivers se instalan en el sistema operativo y se actualizan ocasionalmente para mejorar la compatibilidad, estabilidad y funcionalidad del dispositivo.
Controlador IC (chip)
Un chip controlador, también conocido como controlador de hardware, es un componente físico presente en el dispositivo y se encarga de controlar y gestionar su funcionamiento. El chip controlador es una parte integral del hardware del dispositivo y está diseñado específicamente para controlar y coordinar las funciones y características específicas del dispositivo. Los chips controladores están diseñados para ser compatibles con estándares y protocolos de hardware específicos, y se ocupan de tareas particulares como la conversión de señales analógicas a digitales, la gestión de energía, el control de las comunicaciones, entre otros. Los chips controladores se fabrican como componentes físicos e se integran directamente en los dispositivos durante el proceso de fabricación.
Ambos son muy importantes para el correcto funcionamiento del teclado. El controlador transformará las señales de pulsación de teclas en un código binario adecuado para ser interpretado por el ordenador, mientras que el controlador o driver de software permitirá que el kernel del sistema operativo pueda gestionar este recurso de hardware y recibir información de este periférico de entrada…
Pulsando una tecla: ¿qué sucede paso a paso?
Cada tecla del teclado está asociada a un código de escaneo, que es un número único que representa la posición de la tecla en el teclado. Este código de escaneo es especialmente útil cuando se utilizan teclados con diseños y símbolos diferentes. Cuando se presiona una tecla, se envía al ordenador un número binario que corresponde a ese código de escaneo. Esto establece una comunicación entre el teclado y el ordenador, permitiendo la interpretación de la tecla presionada y la ejecución de la acción correspondiente.
A nivel de hardware
La información en forma de datos binarios es enviada desde el controlador del teclado al ordenador. El medio por el cual se transmiten estos datos depende del tipo de conexión entre el teclado y el ordenador. Si el teclado está conectado mediante un cable USB, los datos se dirigen al puerto USB. En el caso de una conexión Bluetooth, los datos se transmiten al receptor Bluetooth.
Posteriormente, estos datos viajan hacia el núcleo de procesamiento de la CPU mediante el programa informático que se encuentra en ejecución en ese momento y que espera la llegada de estos datos del teclado para llevar a cabo alguna acción. En este punto, la CPU procesa e interpreta los datos recibidos, permitiendo que el ordenador reconozca las teclas que han sido presionadas en el teclado y tome las acciones correspondientes.
A nivel de driver / kernel del sistema operativo
Es fundamental tener en cuenta que la CPU tiene la responsabilidad de ejecutar el sistema operativo, especialmente el núcleo (kernel), el cual se encarga de gestionar los recursos de hardware en conjunto con los drivers instalados o módulos del kernel. El sistema operativo realiza una verificación continua de las pulsaciones de teclas. Aunque parezca que la CPU está inactiva en ciertos momentos, en realidad el sistema operativo debe estar siempre listo para responder de manera instantánea ante cada pulsación de tecla.
Esta capacidad de respuesta rápida es necesaria, ya que el sistema operativo debe estar constantemente preparado para procesar y atender las pulsaciones de teclas. Aunque a simple vista pueda parecer que no se está produciendo mucho, el sistema operativo trabaja en segundo plano para asegurar que cada pulsación de tecla sea detectada y procesada de manera adecuada.
Nivel de aplicación
El sistema operativo se encarga de realizar la conversión del código de escaneo en un carácter ASCII o Unicode, dependiendo de la tecla que se haya presionado. Por lo general, el sistema operativo configura el diseño del teclado para el PC y asigna el significado de cada carácter correspondiente al código de escaneo, según el idioma o diseño de teclado utilizado.
Una vez obtenido el carácter resultante, el sistema operativo genera un evento. En el ámbito de la informática, un evento se refiere a una acción reconocida y gestionada por el software, a menudo originada en el hardware. En este caso, puede tratarse de una llamada al sistema (syscall) que interrumpe la ejecución del programa o aplicación de usuario para atender una rutina de código específica que aprovecha el recurso de hardware, en este caso, la pulsación del teclado.
El siguiente paso consiste en que el sistema operativo envíe el evento a la aplicación correspondiente. En entornos donde se ejecutan múltiples aplicaciones simultáneamente, es crucial que la pulsación de tecla sea manejada por la aplicación adecuada. El sistema operativo tiene conocimiento sobre qué software estaba activo en el momento en que se presionó la tecla, y se encarga de enviar el evento a esa aplicación en particular.
En este ejemplo, la aplicación de software puede ser Microsoft Word, Bloc de notas, un terminal, entre otros, la cual captura el evento generado por el sistema operativo.
Resultado: presentación en pantalla
Tomemos como ejemplo una aplicación similar a un editor de texto que necesita mostrar la pulsación de una tecla como una letra en la pantalla. Supongamos que la tecla que se ha pulsado es la «A». En este caso, el programa transforma el carácter en una representación visual según las opciones de fuente establecidas.
Te recomendamos la lectura de marca de periféricos barata.
A continuación, esta representación visual se envía de regreso a la unidad central de procesamiento (CPU) en forma de datos binarios. La CPU, a su vez, transfiere estos datos a la unidad de procesamiento gráfico (GPU). La GPU se encarga de interpretar el código binario y generar la imagen correspondiente, que luego se muestra en el monitor. Todo este proceso puede involucrar también la colaboración de una interfaz de programación de aplicaciones gráficas (API) en caso de ser necesaria…