-- MyOwn.tip; July 14, 1982 11:55 am -- macro definitions [DEF,CTRL,(Spare3 Down | Ctrl Down)] [DEF,SHIFT,(RightShift Down | LeftShift Down)] -- trigger cases SELECT TRIGGER FROM K Down WHILE [CTRL] => { "this is for CTRL-K" }; -- shift doesn't matter in this example L Down WHILE [CTRL] => SELECT ENABLE FROM -- shift does matter for this one [SHIFT] => { "this is for CTRL-SHIFT-L" }; ENDCASE => { "this is for CTRL-L" }; ENDCASE... Given above are some sample entries for commands using a letter plus CTRL and SHIFT. Copy them, change the letter to whatever letter you want to use. Replace the string such as "this is for CTRL-SHIFT-L" by the actual operation. For example, you can copy directly from the Edit Tool operations field to fill in the command. Leave the curly brackets around the operations. The macro package used in TIP is based on the "General Purpose Macrogenerator" described by Strachey in the October 1965 Computer Journal. The following summary is based on that article; see the real thing for more details. A macro-call consists of a macro-name and a list of actual parameters, each separated by a comma. The name is preceded by a left square bracket ([) and the last parameter is followed by a right square bracket. A macro is defined by the special macro DEF which takes two arguments: the name of the macro to be defined and the defining string. The defining string may contain the special symbols ~1, ~2, etc., which stand for the first, second, etc., formal parameters. Enclosing any string in parentheses has the effect of preventing evaluation of any macro-calls inside; in place of evaluation, one "layer" of string quotes is removed. It is usual to enclose the defining string of a macro definition in string quotes in order to prevent any macro-calls or uses of formal parameters from being effective during the process of definition. The symbol acts as a single character string quote (to enter this, type "d", then hit MakeControlCharacter). Use it in front of special macrogenerator characters in string literals. For example, if you want to insert "(", you need to write "(" to keep the macro scanner from treating the paren as a start of string quote. Here is a list of TIP table names for the keys you might want to use. Letters: A to Z. Numbers: One, Two, Three, ... Zero. Others: Comma, Period, SemiColon, Quote, Dash, Equal, BackSlash, LeftBracket, RightBracket, Arrow, Slash, LF, DEL, BS, ESC, TAB, Return, Space. Note that there are no names for shifted characters like left or right paren. Instead you must specify SHIFT plus the unshifted key name -- e.g., Nine Down WHILE [SHIFT] instead of LeftParen Down