Un código de escaneo (o scan code ) es el dato que la mayoría de los teclados de computadora envían a una computadora para informar qué teclas se han presionado. A cada tecla del teclado se le asigna un número o una secuencia de números.
La asignación de posiciones de teclas por fila y columna requiere un hardware informático menos complejo ; por lo tanto, en el pasado, utilizar software o firmware para traducir los códigos de escaneo a caracteres de texto era menos costoso que cablear el teclado por carácter de texto. [1] Esta diferencia de costo no es tan profunda como solía ser. Sin embargo, muchos tipos de computadoras aún utilizan sus códigos de escaneo tradicionales para mantener la compatibilidad con versiones anteriores .
Algunos estándares de teclado incluyen un código de escaneo para cada tecla que se presiona y uno diferente para cada tecla que se suelta. Además, muchos estándares de teclado (por ejemplo, los estándares compatibles con IBM PC ) permiten que el teclado mismo genere teclas repetitivas "typematic" haciendo que el teclado mismo genere el código de escaneo de la tecla presionada repetidamente mientras la tecla se mantiene presionada, y el código de escaneo de liberación se envía una vez cuando se suelta la tecla.
En algunos sistemas operativos, se puede descubrir el código de escaneo de una tecla al presionarla mientras se inicia la computadora. Con suerte, el código de escaneo (o parte de él) se especificará en el mensaje de error de "tecla atascada" resultante. [Nota: en Windows 7, solo aparece un byte del código de escaneo].
Los códigos de escaneo de los teclados de ordenador compatibles con IBM PC son conjuntos de 1 a 3 bytes que envía el teclado. La mayoría de las teclas de caracteres tienen un código de escaneo de un solo byte; las teclas que realizan funciones especiales tienen códigos de escaneo de 2 o 3 bytes, que suelen empezar con el byte (en hexadecimal) , o . Además, algunas teclas envían códigos de escaneo más largos, emulando de manera eficaz una serie de teclas para facilitar el procesamiento por parte de distintos tipos de software.E0
E1
E2
Los teclados de PC a partir del teclado PS/2 admiten hasta tres conjuntos de códigos de escaneo. Los más comunes son los códigos de escaneo "XT" ("conjunto 1"), basados en el teclado de 83 teclas utilizado por IBM PC XT y anteriores. Estos consisten principalmente en un solo byte; los 7 bits inferiores identifican la tecla y el bit más significativo es el que se borra para una pulsación de tecla o se establece para una liberación de tecla. Algunas teclas adicionales tienen un prefijo E0
(o raramente, E1
o E2
). Estos se asignaron inicialmente de modo que ignorar el E0
prefijo (que está en el rango de tecla hacia arriba y, por lo tanto, no tendría efecto en un sistema operativo que no los entendiera) produciría resultados razonables. Por ejemplo, la tecla Enter del teclado numérico produce un código de escaneo de E0 1C
, que corresponde al código de escaneo de la tecla Return de 1C
.
El IBM 3270 PC introdujo su propio conjunto de códigos de escaneo ("conjunto 3"), con una numeración de teclas diferente y donde la liberación de una tecla se indica mediante un F0
prefijo. Para lograr compatibilidad con versiones anteriores , el 3270 PC tradujo estos códigos de escaneo a XT (conjunto 1) utilizando una tarjeta adicional y una extensión de BIOS. Este conjunto es utilizado por Linux de manera predeterminada cuando detecta un teclado PS/2 que puede soportar correctamente el conjunto de códigos de escaneo 3. [2]
El IBM PC AT introdujo los códigos de escaneo "AT" ("set 2"). En el teclado AT de 84 teclas, estos eran en gran medida un subconjunto del set 3, con algunas diferencias causadas por la disposición revisada (por ejemplo, la posición y los códigos de escaneo de las teclas de función cambiaron). Las teclas agregadas desde el PC AT a menudo tienen códigos de escaneo diferentes en el set 2 y el set 3, y en el set 2 con frecuencia tienen un prefijo E0
o E1
. Nuevamente, la liberación de la tecla se indica mediante un F0
prefijo.
En los ordenadores fabricados a partir del IBM PC AT, el controlador del teclado de la placa base traduce los códigos de escaneo AT (conjunto 2) en códigos de escaneo XT (conjunto 1) en el llamado modo de traducción . [3] Esta traducción se puede desactivar en el modo de paso a través , lo que permite ver los códigos de escaneo sin procesar. [4] Por lo tanto, si un desarrollador de software encontrará códigos de escaneo AT o códigos de escaneo XT en un PC moderno compatible depende de cómo se acceda al teclado.
A un teclado PS/2 compatible se le puede indicar que envíe códigos de escaneo en el conjunto 1, 2 o 3.
Los teclados USB utilizan un nuevo conjunto de códigos de escaneo, en su mayoría especificados en el estándar USB. Todos los equipos que reconocen teclados USB reconocen estos nuevos códigos de escaneo. [5]