Código de escaneo

Datos enviados mediante la pulsación de una tecla del teclado de la computadora

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.

Variantes

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.

Conjuntos de códigos de escaneo

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].

PC compatibles

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.E0E1E2

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, E1o E2). Estos se asignaron inicialmente de modo que ignorar el E0prefijo (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 F0prefijo. 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 E0o E1. Nuevamente, la liberación de la tecla se indica mediante un F0prefijo.

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.

Ejemplo de códigos de escaneo compatibles con PC (IBM PS/2)
llaveConjunto 1 ( IBM PC XT )Conjunto 2 ( IBM PC AT )Conjunto 3 ( IBM 3270 PC )
prensaliberarprensaliberarprensaliberar
A(carta sencilla)1E9E1CF0 1C1CF0 1C
↵ Enter(teclado principal)1C9C5AF0 5A5AF0 5A
↵ Enter( teclado numérico )E0 1CE0 9CE0 5AE0 F0 5A79F0 79
Izquierda ( tecla de Windows )⊞ WinE0 5BE0 DBE0 1FE0 F0 1F8BF0 8B
Bien⊞ WinE0 5CE0 DCE0 27E0 F0 278CF0 8C

USB

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]

Véase también

Referencias

  1. ^ Por ejemplo, el teclado numérico tradicional de 12 teclas se escanea en 3 columnas por 4 filas, lo que requiere un total de 7 conexiones. Escanear cada tecla por separado requeriría 12 conexiones.
  2. ^ Pavlik, Vojtech (18 de febrero de 2022), "Controlador de teclado AT y PS/2 (atkbd.c)", Torvalds/Linux - vía GitHub
  3. ^ Brouwer, Andries (2004-05-20), "Sección 10, "Códigos de escaneo internos del teclado"", Códigos de escaneo del teclado (versión 1.2e ed.) , consultado el 15 de noviembre de 2006
  4. ^ Brouwer, Andries (7 de julio de 2009), "Sección 11, "El controlador de teclado AT"", Códigos de escaneo del teclado (versión 1.2g ed.) , consultado el 18 de julio de 2010
  5. ^ Microsoft Corporation (16 de marzo de 2000), "Apéndice C, "Página de teclado/teclado numérico USB (0x07)"", Especificación del código de escaneo del teclado de Microsoft (revisión 1.3a ed.) , consultado el 13 de octubre de 2018
  • Códigos de escaneo de teclado: escritos por Andries Brouwer
  • Interfaz del teclado AT: información detallada sobre los códigos de escaneo del teclado de beyondlogic.org
Obtenido de "https://es.wikipedia.org/w/index.php?title=Código de escaneo&oldid=1227998833"