Junto con el ratón mecánico tradicional (no los actuales modelos ópticos), el teclado es el dispositivo más sencillo que puede conectarse al ordenador. Sin embargo, alberga una electrónica relativamente compleja y sofisticada que, en los modelos AT y siguientes, incluye un procesador relativamente potente; cierta cantidad de memoria EEPROM para guardar la configuración; cierta cantidad de memoria ROM que actúa como una mini-BIOS del dispositivo, y capacidad de chequeo y auto diagnóstico, además de otras funciones.
La razón de esta complejidad es que, aparte de enviar las señales adecuadas a la placa-base, la tarea de recoger la señal de interruptores mecánicos no es tan trivial como pudiera parecer a primera vista. Los que hayan intentado diseñar interfaces para introducir simples señales ON/OF en un PC, saben que la tarea puede ser extraordinariamente compleja. Incluso con los pequeños niveles de tensión que manejan en los circuitos TTL, los interruptores mecánicos producen microchispas y rebotes ("Bouncing") que duplican la señal y complican el diseño de estos dispositivos; hasta el extremo que no es infrecuente que se recurra a "chapucear" la electrónica del teclado para estos menesteres.
Después de haber lidiado con este tipo de dificultades, y haber comprobado que el único problema de un teclado medianamente bueno es derramar encima el café, me atrevería de decir que el diseño de los señores de la IBM, es una obra maestra de fiabilidad y simplicidad.
Aunque los teclados USB comienzan a verse al poco de definirse el estándar USB, es con la aparición del Apple iMac, que trae tanto teclado como mouse USB de serie cuando se estandariza el soporte de este tipo de teclado. Además tiene la ventaja de hacerlo independiente del hardware al que se conecta. El estándar define scancodes de 16 bits que se transmiten por la interfaz. Del 0 al 3 son códigos de error del protocolo, llamados NoEvent, ErrorRollOver, POSTFail, ErrorUndefined, respectivamente. Del 224 al 231 se reservan para las teclas modificadoras (LCtrl, LShift, LAlt, LGUI, RCtrl, RShift, RAlt, RGUI)
Hubo y hay muchos teclados diferentes, dependiendo del idioma, fabricante… IBM ha soportado tres tipos de teclado: el XT, el AT y el MF-II.
El primero (1981) de éstos tenía 83 teclas, usaban es Scan Code set1, unidireccionales y no eran muy ergonómicos, ahora está obsoleto.
Más tarde (1984) apareció el teclado PC/AT con 84 teclas (una más al lado de SHIFT IZQ), ya es bidireccional, usa el Scan Code set 2 y al igual que el anterior cuenta con un conector DIN de 5 pines.
En 1987 IBM desarrolló el MF-II (Multifunción II o teclado extendido) a partir del AT. Sus características son que usa el mismo interfaz que el AT, añade muchas teclas más, se ponen leds y soporta el Scan Code set 3, aunque usa por defecto el 2. De este tipo hay dos versiones, la americana con 101 teclas y la europea con 102.
Los teclados PS/2 son básicamente iguales a los MF-II. Las únicas diferencias son el conector mini-DIN de 6 pines (más pequeño que el AT) y más comandos, pero la comunicación es la misma, usan el protocolo AT. Incluso los ratones PS/2 usan el mismo protocolo.
Hoy en día existen también los teclados en pantalla, también llamados teclados virtuales, que son (como su mismo nombre indica) teclados representados en la pantalla, que se utilizan con el ratón o con un dispositivo especial (podría ser un joystick). Estos teclados lo utilizan personas con discapacidades que les impiden utilizar adecuadamente un teclado fisico.
Actualmente la denominación AT ó PS/2 sólo se refiere al conector porque hay una gran diversidad de ellos.
Estructura
Un teclado realiza sus funciones mediante un microcontrolador. Estos microcontroladores tienen un programa instalado para su funcionamiento, estos mismos programas son ejecutados y realizan la exploración matricial de las teclas cuando se presiona alguna, y así determinar cuales están pulsadas.
Para lograr un sistema flexible los microcontroladores no identifican cada tecla con su carácter serigrafiado en la misma sino que se adjudica un valor numérico a cada una de ellas que sólo tiene que ver con su posición física.El teclado latinoamericano sólo da soporte con teclas directas a los caracteres específicos del castellano, que incluyen dos tipos de acento, la letra eñe y los signos de exclamación e interrogación. El resto de combinaciones de acentos se obtienen usando una tecla de extensión de grafismos.Por lo demás el teclado latinoamericano está orientado hacia la programación, con fácil acceso al juego de símbolos de la norma ASCII.
Por cada pulsación o liberación de una tecla el microcontrolador envía un código identificativo que se llama Scan Code. Para permitir que varias teclas sean pulsadas simultáneamente, el teclado genera un código diferente cuando una tecla se pulsa y cuando dicha tecla se libera. Si el microcontrolador nota que ha cesado la pulsación de la tecla, el nuevo código generado (Break Code) tendrá un valor de pulsación incrementado en 128. Estos códigos son enviados al circuito microcontrolador donde serán tratados gracias al administrador de teclado, que no es más que un programa de la BIOS y que determina qué carácter le corresponde a la tecla pulsada comparándolo con una tabla de caracteres que hay en el kernel, generando una interrupción por hardware y enviando los datos al procesador. El microcontrolador también posee cierto espacio de memoria RAM que hace que sea capaz de almacenar las últimas pulsaciones en caso de que no se puedan leer a causa de la velocidad de tecleo del usuario. Hay que tener en cuenta, que cuando realizamos una pulsación se pueden producir rebotes que duplican la señal. Con el fin de eliminarlos, el teclado también dispone de un circuito que limpia la señal.
En los teclados AT los códigos generados son diferentes, por lo que por razones de compatibilidad es necesario traducirlos. De esta función se encarga el controlador de teclado que es otro microcontrolador (normalmente el 8042), éste ya situado en el PC. Este controlador recibe el Código de Búsqueda del Teclado (Kscan Code) y genera el propiamente dicho Código de Búsqueda. La comunicación del teclado es vía serie. El protocolo de comunicación es bidireccional, por lo que el servidor puede enviarle comandos al teclado para configurarlo, reiniciarlo, diagnósticos, etc.