La programación de pulsaciones de teclas describe una forma específica de programación mediante la cual cada pulsación de tecla en un dispositivo o aplicación se graba de alguna manera y luego se reproduce para que las pulsaciones de tecla grabadas se puedan repetir varias veces. La programación de pulsaciones de teclas se encuentra más comúnmente, pero no exclusivamente, en calculadoras programables , pero también hay aplicaciones de software programables mediante pulsaciones de teclas, por ejemplo, Vim (editor de texto) [1]
Ejemplo: calculadoras de TI
Las calculadoras Texas Instruments TI-58 / TI-58C / TI-59 eran programables y el almacenamiento del programa tomó la forma de una secuencia de códigos que (en su mayoría) correspondían a la posición de las teclas en el teclado de la calculadora. A continuación, se muestra un diagrama simplificado del diseño básico de las teclas:
x 1 | x 2 | x 3 | x 4 | x 5 | |
---|---|---|---|---|---|
1 x | A | B | C | D | mi |
2 x | 2do | INV | en x | CE | CLR |
3 veces | LRN | x⇌t | x² | √ x | 1 / x |
4 x | SST | STO | RCL | SUMA | y x |
5 veces | BST | EE | ( | ) | ÷ |
6 x | GTO | 7 | 8 | 9 | × |
7 veces | SBR | 4 | 5 | 6 | - |
8 x | RST | 1 | 2 | 3 | + |
9 veces | R / S | 0 | . | +/- | = |
A cada tecla se le asigna un código de dos dígitos; para la mayoría de las teclas (pero no todas), el dígito de las decenas proviene del número de fila (como se indica en la parte inferior izquierda de la tabla) y el dígito de las unidades proviene del número de columna (como se indica en la parte superior de la tabla).
Ahora considere un programa muy simple, que suma 2 al número que se muestra y luego se detiene. El programa se ingresa comenzando desde la ubicación del programa 000 y tiene este aspecto:
Localización | Contenido | Significado | Comentarios |
---|---|---|---|
000 | 85 | + | |
001 | 02 | 2 | |
002 | 95 | = | calcular resultado |
003 | 91 | R / S | detener programa |
Para usar este programa, debe ingresar el número n en el que se va a operar, presionar RST para asegurarse de que la ubicación actual del programa sea 000, luego R / S para iniciar la ejecución. Cuando el programa se detiene (lo que debería suceder bastante rápido para un programa tan simple), la pantalla mostrará el número n + 2.
Puede ver que los códigos 85, 95 y 91 corresponden a las posiciones de las teclas etiquetadas + , = y R / S en la cuadrícula de arriba, pero el código para el 2 no es 83 como esperaría de la posición de la cuadrícula, pero 02. Este último código fue elegido para ser más fácilmente comprensible por un humano que intenta leer el programa. No hay fila 0, por lo que los códigos 00 .. 09 se utilizan para representar las teclas 0 .. 9 .
Interpretaciones dependientes del contexto
Estas calculadoras de TI permitían direccionar hasta 100 ubicaciones de memoria de datos, numeradas del 00 al 99 (algunos modelos tenían un límite inferior a este). Una secuencia de pulsaciones de teclas como STO 4 2 (almacenar el número que se muestra actualmente en la memoria 42) se codificaría como 42 42. En este caso, el primer 42 es el código de tecla para la tecla STO , pero el segundo 42 no es un código de tecla, pero un número de registro de memoria. La calculadora sabe interpretarlo como tal porque eso es lo que tiene que seguir el código de la tecla STO .
Las direcciones de los programas eran de 3 dígitos, lo que potencialmente permitía que los programas constaran de hasta 1000 pasos, numerados del 000 al 999 (aunque, de hecho, ninguno de los modelos producidos permitía este máximo). Una instrucción de bifurcación, por ejemplo GTO 3 4 5 (bifurcación incondicional a la ubicación 345) se codificaría como 61 03 45. En este caso, el dígito de las centenas del destino de la bifurcación está en el dígito de las unidades del segundo byte de instrucción (después del código de operación) , con un dígito de cero decenas; y los dígitos restantes están en el tercer byte de instrucción.
Una secuencia de código como 61 11, por otro lado, representa las pulsaciones de teclas GTO A , que es una rama a la ubicación marcada por la etiqueta simbólica A . La calculadora puede decir que se trata de una rama simbólica, en lugar de una rama a una ubicación numerada, porque el dígito de las decenas del byte que sigue inmediatamente al código de operación no es cero.
La mayoría de las teclas del teclado se pueden utilizar como etiquetas simbólicas. Por ejemplo, secuencias como GTO STO y GTO GTO son legítimas, siempre que STO y GTO se hayan definido de hecho como etiquetas en algún lugar del programa.
Teclas modificadoras
La mayoría de las teclas tenían múltiples funciones, dependiendo de si se había pulsado previamente INV o 2nd . INV invocó la "inversa" (lo que sea que eso signifique) de la siguiente función, y se registró en un programa como una pulsación de tecla separada (código 22), mientras que 2nd invocó una función completamente diferente que estaba escrita en la placa frontal del teclado justo encima de la tecla. Por ejemplo, presionar 2nd x² invoca la función sin , mientras que INV 2nd x² (o INV sin ) le da el arcoseno.
El código para esta función alternativa se deriva del de la función de tecla original agregando 5 al dígito de las unidades ( sin llevar al dígito de las decenas). Por lo tanto, los códigos de tecla correspondientes a la posición de la segunda tecla en sí (21 y 26) nunca se utilizan como códigos de operación. Aquí está la tabla de los códigos producidos con el segundo prefijo:
x 6 | x 7 | x 8 | x 9 | x 0 | |
---|---|---|---|---|---|
1 x | A | B | C | D | MI |
2 x | INV | Iniciar sesión | CP | CLR | |
3 veces | Pgm | P → R | pecado | porque | broncearse |
4 x | En s | CM | Exc ª | Prd | Indiana |
5 veces | Del | Eng | Reparar | En t | | x | |
6 x | Pausa | x = t | Nop | Op | Deg |
7 veces | Lbl | x≥t | ∑x | media (x) | Rad |
8 x | St flg | Si flg | D.MS | π | Grad |
9 veces | Escribir | Dsz | Adv | Prt | Lista |
Pulsaciones de teclas fusionadas
La clave Ind permite la indirección: siempre que se permita una referencia a un registro de memoria o una ubicación de programa, esta clave se puede utilizar para obtener el valor real de un registro de memoria. Por ejemplo, la secuencia de teclas RCL Ind 1 0 significa buscar el valor en el registro de memoria 10 y usar ese valor a su vez como el número de un registro de memoria cuyo contenido se va a buscar como el operando actual. Sin embargo, en este caso, Ind no se puede codificar como código 40, porque la secuencia de código 43 40 se interpretaría como RCL 4 0 , no como RCL Ind .
Pero, debido al uso de los códigos 00 .. 09 para las teclas 0 .. 9 , los códigos 62-64, 72-74, 82-84 y 92 están disponibles para otros usos. Entonces, la mayoría de estos se reasignan para representar secuencias op Ind :
x 2 | x 3 | x 4 | |
---|---|---|---|
6 x | Pgm Ind | Exc Ind | Prd Ind |
7 veces | STO Ind | RCL Ind | SUM Ind |
8 x | GTO Ind | Op Ind | |
9 veces | INV SBR |
Por lo tanto, la secuencia de teclas RCL Ind 1 0 se codificaría como 73 10.
Tenga en cuenta el uso del código 92 para INV SBR (retorno de subrutina); esto no fue necesario por razones de ambigüedad, pero se hizo para ahorrar espacio con una secuencia tan común.