La programación por pulsación 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 registra de alguna manera y luego se reproduce para que las pulsaciones registradas puedan repetirse varias veces. La programación por pulsación de teclas se encuentra con mayor frecuencia, aunque no exclusivamente, en calculadoras programables ; también existen aplicaciones de software programables por pulsación de teclas, como Vim . [ 1 ]
Ejemplo de calculadora TI

Las calculadoras Texas Instruments TI-58/TI-58C/TI-59 eran programables, y el almacenamiento de programas consistía en 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 de la disposición básica de las teclas:
A cada tecla se le asigna un código de dos dígitos; para la mayoría (pero no para todas) las teclas, 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).
Consideremos ahora un programa muy sencillo que suma 2 al número que se muestra y luego se detiene. El programa se ejecuta desde la dirección 000 y tiene el siguiente aspecto:
Para usar este programa, ingrese el número n sobre el que se realizará la operación, presione RST para asegurarse de que la ubicación actual del programa sea 000 y luego R/S para iniciar la ejecución. Cuando el programa finalice (lo cual debería ocurrir rápidamente para un programa tan simple), la pantalla mostrará el número n + 2.
Puedes ver que los códigos 85, 95 y 91 corresponden a las posiciones de las teclas etiquetadas como + , = y R/S en la cuadrícula superior, pero el código para el 2 no es 83 como cabría esperar de la posición en la cuadrícula, sino 02. Este último código se eligió para que fuera más fácil de entender para una persona que intentara leer el programa. No hay fila 0, por lo que los códigos 00 a 09 se utilizan para representar las teclas 0 a 9 .
Interpretaciones dependientes del contexto
Estas calculadoras TI permitían acceder a hasta 100 ubicaciones de memoria de datos, numeradas del 00 al 99 (algunos modelos tenían un límite inferior). Una secuencia 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 la tecla STO , pero el segundo 42 no es un código de tecla, sino un número de registro de memoria. La calculadora lo interpreta como tal porque es el valor que sigue al código de la tecla STO .
Las direcciones de programa 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 salto, por ejemplo GTO 3 4 5 (salto incondicional a la ubicación 345), se codificaría como 61 03 45. En este caso, el dígito de las centenas del destino del salto 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 las decenas cero; y los dígitos restantes están en el tercer byte de instrucción.
Por otro lado, una secuencia de código como 61 11 representa las pulsaciones de teclas GTO A , que es un salto a la ubicación marcada por la etiqueta simbólica A. La calculadora puede determinar que se trata de un salto simbólico, en lugar de un salto 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 numérico pueden usarse como etiquetas simbólicas. Por ejemplo, secuencias como GTO STO y GTO GTO son válidas, siempre que STO y GTO se hayan definido como etiquetas en alguna parte 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 ejecutaba la función "inversa" (sea lo que sea que eso significara) de la siguiente función y se registraba en un programa como una pulsación de tecla independiente (código 22), mientras que 2nd ejecutaba una función completamente diferente que estaba escrita en la placa del teclado justo encima de la tecla. Por ejemplo, al pulsar 2nd x 2 se ejecutaba la función seno , mientras que INV 2nd x 2 (o INV sen ) se obtenía la función arcoseno.
El código para esta función alternativa se deriva del de la función de tecla original sumando 5 al dígito de las unidades ( sin acarreo al dígito de las decenas). Por lo tanto, los códigos de tecla correspondientes a la posición de la segunda tecla (21 y 26) nunca se utilizan como códigos de operación. Aquí está la tabla de los códigos generados con el segundo prefijo:
pulsaciones de teclas combinadas
La clave Ind permite la indirección : dondequiera que se permita una referencia a un registro de memoria o una ubicación de programa, esta clave se puede usar para obtener el valor real de un registro de memoria. Por ejemplo, la secuencia de claves RCL Ind 1 0 significa obtener 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 obtener como operando actual. Sin embargo, en este caso, Ind no se puede codificar como el código 40, porque la secuencia de códigos 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 claves 0 .. 9 , los códigos 62-64, 72-74, 82-84 y 92 están disponibles para otros usos. Por lo tanto, la mayoría de estos se reasignan para representar secuencias op Ind :
Por lo tanto, la secuencia clave RCL Ind 1 0 se codificaría como 73 10.
Nótese el uso del código 92 para INV SBR (retorno de subrutina); esto no era necesario por razones de ambigüedad, sino que se hizo para ahorrar espacio con una secuencia tan común.
Véase también
Referencias
- ↑ "Documentación de Vim: Repetir" .
- Calculadoras programables