Short: Records key strokes and replays them Architecture: m68k-amigaos MACRO v1.0 From an idea developed by Marco Munari for MS-DOS Amiga implementation by Piero Filippin WHAT IS MACRO? Macro is a small utility that records a sequence of keypress and, if required, reinsert at current cursor position (even if another window). This is version 1.0 - no configurable and slow - but it hasn't major bugs (known) and work even with Kick 2.0. It uses only (!?!) 12 KBytes (4 for buffer, 4 for stack and some for info window and code). HOW MUST I USE MACRO? Using is very simple: Call it from CLI without using RUN: MACRO puts itself in background (I used Lattice CBack.o). When MACRO status is IDLE you can record some chars into buffer (LeftALT LeftShift CTRL [, status: Recording), or erase if not empty (LeftALT LeftShift CTRL e, status: Buffer cleared). When recording, type what do you want, then press LeftALT LeftShift CTRL ] (status: Recording) to terminate. Now you are ready to insert this text everywhere you like pressing LeftALT LeftShift CTRL i (status: Buffer inserted). The buffer isn't cleared if not specified: if you start recording and there are some chars in buffers, new chars will be appended to buffer (so don't forget to delete it if needed!). TECNICAL NOTES The program install a new input handler with a priority greater than intuition handler. When an event occours in the system, control is passed to myhandler(). This function checks event list until if find a RAWKEY event. If the event is a MACRO control code, the function removes it from list and send proper signal to main program, else it don't remove the event (so it can be handled by Intuition). The function RawKeyInsert inserts a new event into event-not-already-handled-by-intuition-routines. To compile I used Lattice C 5.10: lc -L -rr <-dINFOWINDOW> <-dDEBUG> <-dBUFFER=buffersize> macro.c (It probably can be compiled only under recent Lattice versions) If you defines INFOWINDOW, a window will be opened telling you MACRO current states. You can also define DEBUG, that print to CLI launch window some debug infos, but it makes start window unusable (I used it only for debug, when I haven't yet decided to use a window). With BUFFER, you can change the default size of the buffer (remember: key_stored=buffersize/4 ). LIMITATION AND BUGS MACRO loss 2728 bytes when you quit (I don't know why) MACRO has a standard buffer size of 4 KBytes; this means that it can record 4000/(sizeof(code)+sizeof(qualifier)) = 1000 keypress! MACRO uses RAWKEY, so it is not setmap-sensitive. It makes no differences when you record-insert, but command keys can change: q , e , i , [, ] refers to a standard gb keyboard (they are TAB - row keys). TAB q w e r t y u i o p [ ] RET MACRO sources are supplied, but it don't includes any #include (he he); I used precompiled headers ( -Hname under Lattice). FUTURE IMPROMEMENTS Multiple macro definitions Possibility of saving useful macros Macro display in info window Macro editing Keymap mapped control codes More speed AUTOR NOTES This program is Public Domain. You can copy, distribute, spread if only with its doc and source. You cannot sell it. I encourage to read the source, and use parts of it in your programs if they are PD else it requires written permission. I don't require money if you use it, but it is obiously pleased (or if you prefer other PD software, greeting cards or your sister photo (if really nice), suggestion for improvement...) I'm sorry for lots of error in this doc My home address is: Via G.Cantore 10 Conegliano Veneto (TV) 31015 ITALY My InterNet e-Mail address is: omega@sabrina.dei.unipd.it (at Padova university) *** END OF FILE ***