The KEYS command
The KEYS command allows the user to see what characters are returned from the keyboard after depressing a particular key. The input will therefore be 100% binary and all characters will be interpreted by the KEYS command. Because of the manner of executing this command, there cannot be a "quit program" keystroke. Instead, the command will terminate after 10 seconds of inactivity.
This KEYS command is very useful when "debugging" a terminal definition. For example, to see what keystroke function key 3 generates, issue the KEYS command, depress function key 3, and then wait 10 seconds for the KEYS program to terminate. The following example shows that, on this terminal, pressing F3 generates an escape character followed by ASCII "O" and then ASCII "R".
USER:KEYS This program terminates after 10 seconds of inactivity. Key: ESC 0x1B 27 Key: O 0x4F 79 Key: R 0x52 82 Key: Timeout USER:
jBASE provides a pair of supplied subroutines called CommandInit and CommandNext. These subroutines are supplied in the dev/mv/samples directory supplied with Caché. Also included in the dev/mv/samples directory is the CommandInclude file, which is a replacement for the jCmdKeys.h file used in jBASE keyboard independence. This source defines values such as cmd_cursor_up which a jBASE application will probably be using. The values specified in Caché are different from jBASE, but the end result is the same. This mechanism is available for all emulations, not just jBASE.
For jBASE releases 4.1 and higher, these subroutines were renamed JBASECommandInit and JBASECommandNext, so depending upon which release of jBASE you are porting from, you might need to rename these subroutines in our dev/mv/samples directory.
To use these samples, you can copy them to your own source file and compile and catalog them. The following selection shows an example of creating a MultiValue file called COMMANDBP which points directly to the samples themselves. This is used to compile and catalog the source code directly from the dev/mv/samples directory, and then run a small example program to show the installation has worked. The example can also be copied to a local file and run from there.
USER:ED VOC COMMANDBP COMMANDBP New record. ----:I 0001= F 0002= C:\InterSystems\CacheSysBuild282\dev\mv\samples 0003= C:\InterSystems\CacheSysBuild282\dev\mv\samples 0004= Bottom at line 3. ----:FI "COMMANDBP" filed in file "VOC". USER:BASIC COMMANDBP CommandInit CommandNext CommandExample CommandInit [B0] Compilation completed. CommandNext [B0] Compilation completed. CommandExample [B0] Compilation completed. USER:CATALOG COMMANDBP CommandInit CommandNext CommandExample  'CommandInit' Cataloged Local.  'CommandNext' Cataloged Local.  'CommandExample' Cataloged Local. USER:CommandExample Function key 2 pressed Function key 3 pressed cmd returned was '2' Timeout after 5 seconds Alpha character returned, value = 'x' USER: