The Mouse Hot Spot feature involves defining rectangular areas, that when clicked, send a particular keyboard sequence. The A-Shell implementation is compatible with the AMOS version, but its use is discouraged since the functionality has been largely superceded by the use of real GUI controls (such as buttons).
A-Shell/Windows supports the extended mouse "hot spot" TCRT protocol introduced with the AM72 terminal and later promoted in conjunction with InSight. Briefly, this allows you to define arbitrary code strings and associate them with rectangular regions of the screen. When the mouse is clicked within one of these regions, the defined string of codes is transmitted into the keyboard buffer. Because the codes are routed into the keyboard buffer, it is almost trivial to add this capability to existing menu programs. (Just set the code string to the letter or number normally used to select that menu item.) Implementing traditional Windows-type data entry screens, where the mouse can be used to move the cursor to any field, is possible but considerably more difficult. (One approach involves extensive use of the EXITCODE feature within INFLD to define a separate code for each field. Upon exiting from any field, the program would check for one of these exit codes, and if appropriate, jump directly to the field indicated by the code.)
All of the mouse hot spots which are active at one time must be specified in one large Tab(-1,162) sequence, which has the following general form:
print tab(-1,162); Count; Len1; Key1; Srow1; Scol1; Erow1; Ecol1; Len2; Key2; Srow2; Scol2; Erow2; Ecol2; Lenn; Keyn; Srown; Scoln; Erown; Ecoln;
The coding of the individual parameters is described in the table below:
Parameter |
Coding and Description |
Count |
Code as chr$(N+32) where N is the number of desired hot spots. (N=0 to clear all hot spots.) |
Lenn |
Code as chr$(L+32) where L is the number of bytes in the following Keyn field. (Maximum key length is 16.) |
Keyn |
From 1 to 16 bytes to be transmitted into the keyboard buffer when the hot spot is clicked on. |
Srown |
Code as chr$(R+31) where R is the starting row of the hot spot. Use R=0 for the top status line and R = <screen height+1> for the bottom status line. |
Scoln |
Column code. If columns is less than or equal to 96, then code as chr$(C+31). Otherwise, code as chr$(25);chr$(C-65) where C is the starting column of the hot spot. |
Erown |
Ending row of hot spot. Code same as for starting row |
Ecoln |
Ending column of hot spot. Code same as for starting column. |
There is a good general discussion of the technique of Mouse Enabling Your Screens in a section under the same name in Chapter 6 of the inSight Programmer's Reference Guide. The A-Shell implementation of the feature is completely compatible with the InSight implementation, except that A-Shell allows you to create hot spots on the top and bottom status lines (by referring to them as row 0 and n+1, respectively, where n is the current height of the screen, typically 24.) For those of you eager to experiment with this technique but not eager to hunt down or read the documentation, A-Shell/Windows is supplied with a sample program, AMOUSE.BAS in EXLIB:[908,36], which adequately demonstrates the range of possibilities.
ZTERM supports many of the InSight TCRT codes and ESC sequences.