Keystroke programming: Difference between revisions

Content deleted Content added
SporkBot (talk | contribs)
m Replace or disable a template per TFD outcome; no change in content
Bender the Bot (talk | contribs)
m top: HTTP to HTTPS for SourceForge
 
(6 intermediate revisions by one other user not shown)
Line 1:
{{One source|date=March 2025}}
'''Keystroke programming''' describes a specific way of programming by which each keystroke on a device or application is recorded in some way and then played back so that the recorded key-presses can be repeated multiple times. Keystroke programming is most commonly but not exclusively found in [[programmable calculator]]s, but theres—there are keystroke-programmable software applications, too, forsuch exampleas [[Vim (text editor)|Vim]].<ref>{{Cite web|url=httphttps://vimdoc.sourceforge.net/htmldoc/repeat.html#complex-repeat|title = Vim documentation: Repeat}}</ref>
 
== Example: TI Calculatorscalculator example ==
[[File:TI58c.jpg|thumb|The TI-58C]]
The Texas Instruments [[TI-59 / TI-58|TI-58]]/[[TI-58C]]/[[TI-59]] calculators were programmable, and program storage took the form of a sequence of codes which (mostly) corresponded to the position of keys on the calculator keypad. Here is a simplified diagram of the basic key layout:
 
{| class="wikitable" style="background-color:#000000;"
Line 60 ⟶ 61:
You can see that the codes 85, 95 and 91 correspond to the positions of the keys labelled {{TI-5x/Keys/Yellow|&nbsp;+&nbsp;}}, {{TI-5x/Keys/Yellow|&nbsp;{{=}}&nbsp;}} and {{TI-5x/Keys/Brown|R/S}} on the grid above, but the code for the {{TI-5x/Keys/White|&nbsp;2&nbsp;}} is not 83 as you would expect from the grid position, but 02. This last code was chosen to be more easily understandable by a human trying to read the program. There is no row 0, so the codes 00 .. 09 are used to represent the keys {{TI-5x/Keys/White|&nbsp;0&nbsp;}} .. {{TI-5x/Keys/White|&nbsp;9&nbsp;}}.
 
=== Context-Dependentdependent Interpretationsinterpretations ===
 
These TI calculators allowed for addressing up to 100 data memory locations, numbered 00 to 99 (some models had a lower limit than this). A keystroke sequence like {{TI-5x/Keys/Brown|STO}} {{TI-5x/Keys/White|&nbsp;4&nbsp;}} {{TI-5x/Keys/White|&nbsp;2&nbsp;}} (store the currently-displayed number into memory 42) would be encoded as 42 42. In this case the first 42 is the key code for the {{TI-5x/Keys/Brown|STO}} key, but the second 42 is not a key code, but a memory register number. The calculator knows to interpret it as such because that's what has to follow the code for the {{TI-5x/Keys/Brown|STO}} key.
Line 70 ⟶ 71:
Most of the keys on the keypad can be used as symbolic labels. For example, sequences like {{TI-5x/Keys/Brown|GTO}} {{TI-5x/Keys/Brown|STO}} and {{TI-5x/Keys/Brown|GTO}} {{TI-5x/Keys/Brown|GTO}} are legitimate, provided that {{TI-5x/Keys/Brown|STO}} and {{TI-5x/Keys/Brown|GTO}} have in fact been defined as labels somewhere in the program.
 
=== Modifier Keyskeys ===
 
Most of the keys had multiple functions, depending on whether {{TI-5x/Keys/Brown|INV}} or {{TI-5x/Keys/Yellow|2nd}} had been pressed beforehand. {{TI-5x/Keys/Brown|INV}} invoked the "inverse" (whatever that meant) of the following function, and was recorded in a program as a separate keystroke (code 22), while {{TI-5x/Keys/Yellow|2nd}} invoked a completely different function which was written on the keypad faceplate just above the key. For example, pressing {{TI-5x/Keys/Yellow|2nd}} {{TI-5x/Keys/Brown|x<sup>2</sup>}} invoked the {{TI-5x/Keys/Alt|sin}} function, while {{TI-5x/Keys/Brown|INV}} {{TI-5x/Keys/Yellow|2nd}} {{TI-5x/Keys/Brown|x<sup>2</sup>}} (or {{TI-5x/Keys/Brown|INV}} {{TI-5x/Keys/Alt|sin}}) gave you the arcsine.
Line 109 ⟶ 110:
|}
 
=== Merged Keystrokeskeystrokes ===
 
The {{TI-5x/Keys/Alt|Ind}} key allows for indirection: wherever a reference to a memory register or a program ___location is allowed, this key can be used to fetch the actual value from a memory register. For example, the key sequence {{TI-5x/Keys/Brown|RCL}} {{TI-5x/Keys/Alt|Ind}} {{TI-5x/Keys/White|&nbsp;1&nbsp;}} {{TI-5x/Keys/White|&nbsp;0&nbsp;}} means to fetch the value in memory register 10, and use that value in turn as the number of a memory register whose contents are to be fetched as the current operand. However, in this case the {{TI-5x/Keys/Alt|Ind}} cannot be encoded as code 40, because the code sequence 43 40 would be interpreted as {{TI-5x/Keys/Brown|RCL}} {{TI-5x/Keys/White|&nbsp;4&nbsp;}} {{TI-5x/Keys/White|&nbsp;0&nbsp;}}, not {{TI-5x/Keys/Brown|RCL}} {{TI-5x/Keys/Alt|Ind}}.