Q W I K K E Y A Keyboard Redefinition Program V2.1 24-MAR-1985 Copyright (c) 1984, 1985 by Anton R. Fleig QwikKey may be used for non-commercial purposes only. No commercial use of QwikKey may be made without the author's express written permission. 1.0 INTRODUCTION QwikKey allows the user to assign a character strings to keys. When a key having a string defined in this way is struck, the defined string, rather than the character normally associated with the key, is delivered to the program running at the time. Key definitions may be loaded from files containing previously saved definitions, or they may be defined on-the-fly, even while a program is running. Both normal keys (i.e. keys generating a single character) and keys generating escape sequences are supported. The maximum length of the defined string is 31 minus the length of the character or string normally generated by the key in question. Thirty-one different keys may be defined. 2.0 OPERATION 2.1 The First Time QwikKey V2.0 should be invoked for the first time with the command "QK". QwikKey will prompt for an "attention/termination character" and an "escape sequence lead-in character". The attention/termination character is used to gain the attention of QwikKey in order to enter a new key definition. The same character is used to terminate the definition string. Thus, this character should be one that is seldom if ever used, both from the keyboard, and in key definition strings. The escape sequence lead-in character is the first character generated by keys which generate escape sequences rather than single characters. This is almost always the ESCAPE character (ASCII 27 decimal). After the attention and lead-in characters are entered, QwikKey loads itself below the CCP (Console Command Processor), and returns control to CP/M. The message "QwikKey loaded." will appear at each warm boot to remind you that QwikKey is indeed active. At this point, striking the attention character key will cause QwikKey to respond with the following prompt: Key: Now strike the key you wish to define. The character normally generated by the key will be displayed, followed by an equals sign. Suppose for example, you wished to define the control-K key. The following would appear after striking CTRL-K: Key: ^K = Now enter the definition string, followed by the attention character again. Suppose we wished to define ^K as "PIP A:=B:*.*[V]". The following would be displayed just before we hit the attention character to terminate the definition: Key: ^K = PIP A:=B:*.*[V] Upon entry of the termination character, the key definition dialogue is erased. Note that characters overwritten by the definition dialogue are not rewritten, but replaced on the screen with spaces. At this point, the key has been defined, and striking the defined key will result in the definition string being delivered to the current program (perhaps the CCP). 2.2 Saving Definitions The following command will save your current definitions for later recall in the file KEYDEF.DAT. It can only be issued at the CCP prompt level (e.g. A>). A>QK SAVE KEYDEF.DAT If the filename is omitted in the above example, the definitions will be saved in the file QWIKKEY.DEF. SAVE may be abbreviated to the single character "S". Note that the attention/termination character and the escape sequence lead-in character are also saved in the definition file. 2.3 Loading Previously Saved Definitions The following command will load previously saved commands from KEYDEF.DAT into QwikKey's definition table in memory, replacing any current definitions. It can only be issued at the CCP prompt level (e.g. A>). A>QK LOAD KEYDEF.DAT If the filename is omitted in the above example, the definitions will be read from the file QWIKKEY.DEF. LOAD may be abbreviated to the single character "L". Note that the attention/termination character and the escape sequence lead-in character are also read from the definition file. 2.4 Removing QwikKey QwikKey can be removed from memory with the following command. A>QK REMOVE The word "remove" in the above command can be abbreviated with the single character "R". 3.0 ADVANCED TOPICS The following topics are intended for those familiar with DDT and the attendant risks in its use. 3.1 Creating Definitions Containing Non-keyboard Characters Definitions may be created containing characters not generated by any key on the computer's keyboard through direct modification of the key definition file(s). This might be useful to add a DELETE key to a computer having only a BACKSPACE key, for example. In order to do this, the structure of the key definition file must be understood. The key definition file consists of 32 logical records of 32 bytes each. The first record's first two bytes are the attention character and the lead-in character, respectively. The third byte contains a warm boot flag (see section 3.2). The remainder of the first record is currently unused and uninitialized. The remaining 31 records contain definition strings in the following format: [Key string] 0 [Definition string] 0 The key string is the keyboard generated character(s). Both the key string and the definition string are null-terminated, as shown above. The following is an example of the sequence of commands used to define CTRL-D to be DELETE, assuming the keyboard being used cannot generate the DELETE character. A>DDT QWIKKEY.DEF Default definition file DDT VERS 2.2 NEXT PC 0500 0100 -S100 First record 0100 2B 0B Make ^K attn char 0101 1B . Quit now (note lead-in char) -S120 First definition 0120 56 08 Key string is BS char 0121 1A 00 Null terminate 0122 09 7F Delete char is definition 0123 AC 00 Null terminate -G0 Mods done A>SAVE 5 QWIKKEY.DEF Save on disk 3.2 Disabling the Warm Boot Message The third byte in the key definition file, if non-zero, (the default) causes the "QwikKey loaded." message to be displayed on each warm boot. Setting this byte to zero will disable this feature. 4.0 MISCELLANEOUS QwikKey occupies the memory space just below CP/M's Console Command Processor (CCP). In order to accomplish this, several pointers within the system are modified as QwikKey is installed (notably the WBOOT, CONST, and CONIN vectors in the BIOS jump table, and the BDOS vector at location 5). It is possible that QwikKey could interact detrimentally with other programs, especially any that attempt similar modifications. Should this circumstance occur, you may want to remove QwikKey while the other program is executing. The REMOVE command may be used for this.