Articulo de referencia

Código de escaneo

En términos generales, un código de escaneo (o código de escaneo ) es un número [ a ] o una matriz de bits [ b ] que utiliza un protocolo de teclado para identificar de forma ún...

En términos generales, un código de escaneo (o código de escaneo ) es un número [ a ] o una matriz de bits [ b ] que utiliza un protocolo de teclado para identificar de forma única [ c ] una tecla del teclado. Los teclados normalmente [ d ] envían códigos de escaneo al ordenador para actualizar el estado interno del teclado (que registra qué teclas se mantienen pulsadas). El mecanismo exacto de cómo, cuándo y qué códigos de escaneo se envían depende del protocolo.

Un protocolo de teclado puede utilizar otros medios para actualizar el estado interno del teclado del ordenador, como el envío de un mapa de bits que codifica el estado de las teclas (pulsadas/soltadas). Esto ocurre parcialmente con un teclado que utiliza el protocolo HID cuando se selecciona el Protocolo de arranque. Este enviará los estados de las teclas modificadoras codificados en un mapa de bits (donde cada bit representa el estado de una tecla) junto con una matriz de códigos de escaneo de las teclas pulsadas (excluyendo las teclas modificadoras). [ 1 ]

Historia

La asignación de posiciones de teclas por fila y columna requiere un hardware informático menos complejo ; por lo tanto, en el pasado, usar 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. [ 2 ] Esta diferencia de costo ya no es tan significativa como antes. Sin embargo, muchos tipos de computadoras aún utilizan sus códigos de escaneo tradicionales para mantener la retrocompatibilidad .

PC compatibles

IBM PC compatible computer keyboards send a scancode when a key is pressed and released. When a key is pressed its so called "make" scancode is send which differs from its so called "break" scancode that is send when the key is released. The IBM PC compatible standard also allows keyboards to generate "typematic" repeating keys by having the keyboard itself generate the make scancode repeatedly while a key is held down.[3] Most character keys have a single byte make scancode; keys that perform special functions have 2-byte or 3-byte scancodes, usually beginning with the byte (in hexadecimal) E0, E1, or E2. In addition, a few keys send longer scancodes which emulate a series of keys to make it easier for different types of software to process.

PC keyboards since the PS/2 keyboard support up to three scancode sets. A PS/2 compatible keyboard can be told to send scancodes in set 1, 2 or 3, although it is keyboard-dependent which scancode sets are supported by the keyboard.[4] The most commonly encountered are the "XT" ("set 1") scancodes, based on the 83-key keyboard used by the IBM PC XT and earlier. These mostly consist of a single byte; the low 7 bits identify the key, and the most significant bit is clear for a key press (make scancode) or set for a key release (break scancode). Some additional keys have an E0 (or rarely, E1 or E2) prefix. These were initially assigned so that ignoring the E0 prefix (which is in the key-up range and thus would have no effect on an operating system that did not understand them) would produce reasonable results. For example the numeric keypad's Enter key produces a scancode of E0 1C, which corresponds to the Return key's scancode of 1C.

The IBM 3270 PC introduced its own set of scancodes ("set 3"), with a different key numbering and where a key release is indicated by an F0 prefix. For backward compatibility, the 3270 PC translated these to XT (set 1) scancodes using an add-on card and a BIOS extension.

The IBM PC AT introduced the "AT" ("set 2") scancodes. On the 84-key AT keyboard these were largely a subset of set 3, with some differences caused by the revised layout (for example, the position and scancodes of the function keys changed). Keys added since the PC AT often have different scancodes in set 2 and set 3, and in set 2 frequently have an E0 or E1 prefix. Again, key release is indicated by an F0 prefix.

En los ordenadores desde el IBM PC AT, el controlador del teclado en la placa base traduce los códigos de escaneo AT (conjunto 2) a códigos de escaneo XT (conjunto 1) en el llamado modo de traducción . [ 5 ] Esta traducción se puede desactivar en el modo de paso directo , lo que permite ver los códigos de escaneo sin procesar. [ 6 ] Por lo tanto, que un desarrollador de software encuentre códigos de escaneo del conjunto 2 o del conjunto 1 en un PC moderno compatible depende de cómo se acceda al teclado. Si Linux detecta una traducción del conjunto 2 al conjunto 1 por parte del controlador del teclado, utilizará el conjunto 1; de lo contrario, casi con seguridad utilizará el conjunto 2. [ 7 ]

USB

Los teclados USB utilizan un nuevo conjunto de códigos de escaneo, especificados en su mayoría en el estándar USB. Todos los ordenadores que reconocen teclados USB reconocen estos nuevos códigos de escaneo. [ 11 ]

Más información

En algunos sistemas operativos, se puede descubrir el código de escaneo de una tecla manteniéndola pulsada mientras el ordenador se inicia. Con suerte, el código de escaneo (o parte de él) aparecerá en el mensaje de error "tecla atascada" . [Nota: En Windows 7 solo se muestra un byte del código de escaneo.]

Un teclado virtual no introduce códigos de escaneo, sino caracteres Unicode.

Véase también

Notas

  1. Por ejemplo, los identificadores de uso en la página de uso del teclado/teclado numérico HID que se definen en la especificación USB: https://www.usb.org/sites/default/files/hut1_7.pdf
  2. Por ejemplo, códigos de escaneo PS/2: https://oe7twj.at/images/6/6a/PS2_Keyboard.pdf
  3. "Identificar de forma única" se refiere a una asignación N:1 según Wikipedia. Por lo tanto, esta frase implica que se pueden asociar varios códigos de escaneo a una tecla. Por ejemplo, PS/2 asocia dos códigos de escaneo a cada tecla (excepto a la tecla de Pausa).
  4. Algunos protocolos de teclado no definen códigos de escaneo. Por ejemplo, los teclados PCW utilizan un mapa de bits que codifica el estado del teclado. Véase https://www.seasip.info/Unix/Joyce/pcwkbd.html

Referencias

  1. Definición de clase de dispositivo para dispositivos de interfaz humana (HID) (PDF) (Informe). USB-IF. 2026. págs.  56, 59–60 .
  2. Por ejemplo, el teclado numérico tradicional de 12 teclas se escanea como 3 columnas por 4 filas, lo que requiere un total de 7 conexiones. Escanear cada tecla por separado requeriría 12 conexiones.
  3. https://www-ug.eecg.toronto.edu/msl/nios_devices/datasheets/PS2%20Keyboard%20Protocol.htm#:~:text=Make%20Codes%2C%20Break%20Codes%2C%20and%20Typematic%20Repeat
  4. https://aeb.win.tue.nl/linux/kbd/scancodes-12.html#:~:text=Command%20f0
  5. Brouwer, Andries (2004-05-20), "Sección 10, "Códigos de escaneo internos del teclado"" , Códigos de escaneo de teclado (versión 1.2e  ed.) , consultado el 15/11/2006
  6. Brouwer, Andries (2009-07-07), "Sección 11, "El controlador de teclado AT"" , Códigos de escaneo de teclado (versión 1.2g  ed.) , consultado el 18/07/2010
  7. https://elixir.bootlin.com/linux/v6.19/source/drivers/input/keyboard/atkbd.c#L881 (Nota: Ignore el comentario obsoleto en el código fuente)
  8. https://www.marjorie.de/ps2/scancode-set1.htm
  9. https://www.marjorie.de/ps2/scancode-set2.htm
  10. https://www.marjorie.de/ps2/scancode-set3.htm
  11. Microsoft Corporation (16 de marzo de 2000), "Apéndice C, "Página del teclado/teclado numérico USB (0x07)"", Especificación del código de escaneo del teclado de Microsoft (edición de revisión 1.3a  ) , 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 en beyondlogic.org
Obtenido de " https://en.wikipedia.org/w/index.php?title=Scancode&oldid=1359464251 "