home *** CD-ROM | disk | FTP | other *** search
-
- ******************************************
- ** POPFUNCS V2.1 **
- ** Written by Tom Krehbiel **
- ** June 1988 **
- ******************************************
-
-
- This program in it's executable form is being released as ShareWare
- (user supported software). Feel free to give a copy to anyone who wants
- one; just make sure you: 1) give them all the files listed below, and
- 2) charge no money for it. If you feel that this program has been useful
- to you, a small donation of five or ten dollars would be GREATLY
- appreciated. This will encourage me to continue to upgrade this and other
- programs. I'm also curious just how many people this program gets to, so
- send me a postcard or something. Send comments/bug reports/donations to:
-
- Tom Krehbiel
- 10747 Surry Road
- Chester, VA 23831
-
- I can also be reached through David Krehbiel (yes, we're related) on
- Compuserve (70701,1515).
-
- If you do find a bug (and I'm sure there's at least a few left), please
- describe the conditions under which the program bombed so I can better
- correct the problem.
-
-
- IN THE ARC FILE
-
- The following files should be included in the ARC file:
-
- PopFuncs The main program
- PopFuncs.info The icon for the main program
- PopFuncs.doc This document
- Default.fkeys Sample macro file
- README How to set up PopFuncs
- EXECUTE.ME To rename all the files properly
-
-
- Okay, on to more important things...
-
-
- FEATURES
-
- * Useable from WorkBench or CLI (though it's not as useful from WB).
- * Easily user-definable keyboard macros.
- * 'Pause' feature to temporarily disable PopFuncs.
- * Supports saving/loading macro files.
- * Window manipulations can be embedded in the macros.
- * User-definable 'hot keys.'
- * Run any program in the background at the touch of a key.
- * Screen blanking after a user-definable length of time.
- * Allows 'screen shuffling' with left-amiga-M.
- * Window 'latching' to recall specific windows at a keypress.
-
-
- NEW TO 2.1
-
- The following things have changed since V2.0:
-
- - A problem with window enlarging was fixed.
- - Added {n} to simulate pressing the return key.
- - An UNDO gadget was added to the define window.
- - A CLEAR gadget was also added to the define window.
- - The input handler was revised considerably.
- - The window 'latching' feature was added.
-
-
- HOW TO RUN IT
-
- PopFuncs can be run from the CLI as follows:
-
- Run >Nil: PopFuncs [macro file]
-
- where 'macro file' is an optional file of macros to load in on startup.
- If 'macro file' cannot be found, then the file 'S:Default.fkeys' is loaded.
- If this file doesn't exist either, then the macro definitions will be blank
- on startup and you'll have to either load macro definitions or type them
- in yourself.
-
- This can also be put into your startup-sequence so it will run
- automatically on boot-up.
-
- The ">nil:" will enable you to remove the CLI that PopFuncs was started
- from. This isn't required, but if you put this in your startup sequence
- and do an 'EndCLI' at the end, then you would probably want to put the
- ">nil:" in the command.
-
- It can also be started from the WorkBench simply by double-clicking on
- its icon. Although some features are useful from WorkBench (most notably
- the window manipulations and background-program-running), PopFuncs is much
- more effective from CLI.
-
-
- THE DEFINITION WINDOW
-
- By pressing ALT-D while the program is running, a window will pop up (hence
- the name 'PopFuncs') giving you the current macro definitions. Clicking in
- any of the string gadgets labeled F1-S10 with the left mouse button allows
- you to change the text of the macros as you would with any string gadgets.
-
- The string gadget under the macro text gadgets, labeled 'Blank Time', is
- for setting the screen blanking time. See SCREEN BLANKING below.
-
- The three tiny string gadgets under the macro definitions, labelled
- 'Kill:', 'Define:', and 'Pause:',allow you to change the 'hot keys' that
- perform various functions. For example, if you're using Scribble!, which
- uses ALT-P to set a page-break, you could click in the PAUSE gadget and
- change the P to an S. Then, any time you hit ALT-S, PopFuncs will pause.
- You can use any ASCII character from space to DEL. WARNING: Make sure all
- three of the 'hot keys' are different. Results are unpredictable if any two
- are the same. I hope this isn't a problem.
-
- The UNDO gadget will restore the macros to whatever state they were in when
- you first popped up the window. So if you completely screw up a macro, you
- can hit undo and all will be saved.
-
- The CLEAR gadget clears out all of the macros, leaving a blank slate. If
- you accidently hit clear, don't worry -- just hit undo.
-
- The OK gadget simply removes the definition window and let's you continue
- normal use. Note that all of PopFuncs' features (except screen blanking)
- are inactive while the definition window is up.
-
- SAVE allows you to save the current macro definitions to a file of your
- choice. It saves the macro definitions, the blank time, the three
- definable 'hot keys,' and all of the window latches (see below). Sorry
- about the pitiful file requester, but I wanted to keep this program as
- small as possible. Later on I might add a better requester, but for right
- now, this one will do.
-
- LOAD (coincidentally) allows you to load in a macro file from disk. See
- MACRO FILE CONTENTS below.
-
- Note: If you're lazy and don't like to use the mouse, you can type the
- first letter of any of the bottom gadget names and have it perform that
- functions. For example, hitting 's' (lower case only) will bring up the
- save file requester. You can also hit RETURN for OK and ESC for UNDO.
- Also, the number keys activate the unshifted function key string gadgets,
- and the shifted number keys activate the shifted function key string
- gadgets. For example, hitting '4' on the keyboard activates the F4 string
- gadget, and shift '4' would activate the S4 string gadget.
-
- NOTE: All of the functions of PopFuncs (except the screen blanking) are
- disabled while the definition window is displayed.
-
-
- "PAUSING"
-
- Pressing ALT-P will temporarily 'pause' PopFuncs. This turns off the
- trapping of every key except ALT-P again. This can be used if a program
- you are running has its own definitions for the functions keys and you'd
- rather use them. While paused, PopFuncs displays a small window with the
- message 'PopFuncs sleeping...' to let you know it's not doing anything. To
- restart it, just hit ALT-P again.
-
-
- SCREEN BLANKING
-
- PopFuncs supports variable-time length screen blanking. This means that
- after a certain amount of time of inactivity that you define, the screen
- will be blanked to avoid video burn-in. In the definition window
- underneath the macro string gadgets is another (another) string gadget that
- defines the number of minutes that must elapse before screen-blanking.
-
- The default value is ten minutes.
-
- NOTE: Serial and parallel port activity is NOT considered activity. That
- is, if you're in a terminal program and just watching a bunch text scroll
- by, the screen WILL blank after the set time has expired. Sorry.
-
-
- SCREEN SHUFFLING
-
- I've changed the meaning of the Left-Amiga-M key slightly. Normally it
- pushes the WorkBench screen to the back. But PopFuncs takes the FRONT
- SCREEN and pushes it to the back. This lets you flip through any screens
- that are present, which you couldn't normally do.
-
-
- EXITTING
-
- If for some strange reason you'd like to remove PopFuncs from the machine,
- SHIFT-ALT-K (for kill) will do the job. It will display a message about
- it's death and you will have to deal with your guilt.
-
-
- WINDOW "LATCHING"
-
- Suppose you're running three different programs (like a spreadsheet,
- terminal, and database manager) and you're constantly switching between
- the different windows. Wouldn't it be nice if you could just hit a key
- and have the spreadsheet window pop to the front and activate, no matter
- what screen it was on? Well that's what PopFuncs' window latching allows
- you to do. It let's you 'latch on' to a window and then recall it
- at any time by hitting an appropriate key sequence. PopFuncs lets you
- latch onto up to 9 windows in this way.
-
- There are two ways to implement window latching: The first is by far the
- simpler of the two. Just activate the window you want to latch onto, then
- press and hold SHIFT and ALT and then press any of the numbers 1-9 ON THE
- NUMERIC KEYPAD. This causes PopFuncs to remember that window (actually it
- remembers the window's title).
-
- The second way is to put a definition line in the macro file, detailed
- below under MACRO FILE CONTENTS.
-
- When you want to recall the latched window, all you have to do is hit
- ALT and the NUMERIC KEYPAD number of the window you want to recall. All
- of the windows in the system are then searched to find the one you latched
- and it is then popped to the front and activated. If it can't find the
- window (if, for example, it was closed) then nothing will happen.
-
- NOTE: The way PopFuncs remembers a window is by it's title. It saves
- the window's title in memory, and then when you want to find it again, it
- searches through all the windows and all the screens and tries to match
- it's remembered title to titles on the windows it is searching. The point
- is if you latch onto a window and then the window's title is changed
- somehow, PopFuncs will probably not be able to find that window again.
-
- ANOTHER NOTE: If you try to latch onto a window that does not have a title,
- (like maybe borderless backdrop windows), then PopFuncs remembers the
- SCREEN title. Then when you call up that latch, it will pop the screen to
- the front but it will not activate any windows.
-
-
- THE MACROS
-
- Now for what you've all been waiting for... <trumpet fanfare>
-
- The macros can have anything you want in them, including some special codes
- described below: ('x' is any ASCII character, 'n' is a digit from 1-9,
- 'list' is a list of ASCII characters)
-
- ^x This let's you embed control characters in the string.
- EXAMPLE: ^M is a carriage return. NOTE: ^M IS DIFFERENT
- FROM ^m. That is, ^M is like hitting shift-control-M, and
- ^m is just plain control-M.
-
- ~n This is a simple time delay, where 'n' is a digit from 1-9
- indicating the length of the delay in seconds. EXAMPLE:
- "cd df0:^M~1dir^M" will change directories to df0:, pause for
- a second, then do a directory.
-
- \ This overrides any of the special codes. So if you want a
- "^" in your macro, you'll have to do a "\^". I tried to
- make the command codes as obscure as possible, but if this
- inconveniences anyone, I apologize. NOTE: To do a "\",
- you'll have to do a "\\".
-
- [list]x This lets you add any qualifiers to a keystroke. So, if
- you want to do a CONTROL-LEFT AMIGA-RIGHT SHIFT-LEFT ALT-M,
- put a "[clta]m" in the macro. The qualifier codes are:
-
- c = control
- l = left amiga
- r = right amiga
- a = left alt
- b = right alt
- s = left shift
- t = right shift
-
- NOTE: "[c]M" is the same as "[cs]m".
- NOTE: If you wanted to have F10 pause PopFuncs, you could
- make F10 "[a]p" and that would be the same as hitting
- ALT-P.
- NOTE: If you wanted to bind F10 to clicking the left mouse
- button, you could do "[al]x". Note that you MUST have
- an ASCII character after the right bracket, whether
- it does anything or not (in this case it serves no
- purpose).
-
- {x} This lets you put in keystrokes that aren't ASCII
- characters. So, if you want to put an up arrow in your
- macro, do a "{u}". Codes are as follows:
-
- u = up arrow h = the help key
- d = down arrow 0-9 = numeric keypad numbers
- l = left arrow - = numeric keypad "-"
- r = right arrow . = numeric keypad "."
- t = the tab key c = numeric keypad ENTER
- e = the escape key n = the return key
- b = the backspace key x = the delete key
-
- NOTE: You can only put one character within the "{}"s.
- NOTE: You can also add qualifiers to these codes, so if
- you want a SHIFT-TAB, you could do "[s]{t}".
-
- <list> These are the window manipulation commands. If you want
- to bind F10 to shrinking the active window, pushing it to
- the back, and activating the next window, use "<-ba>".
- The codes are:
-
- - = Shrink the currently active window to it's minimum
- size. NOTE: This only works on a window that has
- a sizing gadget.
- + = Enlarge the currently active window as far to the right
- and down as possible. If you want to make a window
- the entire screen size, first move the window to the
- upper left-hand corner (see below), then enlarge it.
- NOTE: This only works on a window that has
- a sizing gadget.
- b = Push the currently active window to the back. NOTE:
- This only works if the window has the depth gadgets.
- f = Bring the currently active window to the front. NOTE:
- This only works if the window has the depth gadgets.
- a = Activate the next window in the chain of windows. This
- will allow you to 'scroll' through the windows in the
- active screen.
- 7 = Move active window to upper-left hand corner.
- 9 = Move active window to upper-right hand corner.
- 1 = Move active window to lower-left hand corner.
- 3 = Move active window to lower-right hand corner.
- NOTE: The codes for the move-window functions above
- actually do have a meaning. If you'll notice
- on the numeric keypad, the 7 is on the upper
- left, 9 is on the upper right, 1 is on the
- lower left, and 3 is on the lower right. This
- gives a little bit of visual help when moving
- windows:
-
- 7 9
- \ /
- X
- / \
- 1 3
-
- ' (apostrophe) Use this if you want to put a comment in your macro
- definition. EG, "<-baf+>' Shrink window, push to back,
- activate next, bring to front, enlarge". Note that this
- comment extends all the way to the end of the line, so
- don't try to put anything useful after the comment
- character.
-
- `command' Here's an interesting feature that my brother wanted me
- to include. Suppose you're typing away at you're CLI
- and you suddenly realize that you want to run Access! or
- something. Well, you can program a function key to
- execute any program in the background. For
- example, if you did a `Terminals:Access!' in one of your
- macros, then PopFuncs will start up the program Access! on
- the disk Terminals, assuming the disk Terminals is in a
- drive. If it isn't, you'll get the standard "Please insert
- volume Terminals: in any drive" requester. Note that
- PopFuncs prepends 'Run >nil:' onto the beginning of the
- command, so a program that requires a CLI window will
- probably not work properly. This feature
- would be more useful to somebody with a hard disk, but it
- is still a handy feature for non-HD users who love to
- copy gobs and gobs of disks into RAM (like me - I can't
- wait 'til I get a HD).
- NOTE: If you want a function key that simply starts a
- NewCLI, just program one with "`NewCLI'" and you've got
- you're own PopCLI.
- NOTE TOO: If a program that you start like this requires
- a CLI window, you might try this: "`NewCLI'~1ProgramName^M".
- This will open a NewCLI window, pause for a second, then
- execute the program as if you had typed it's name into that
- CLI window. Most programs compiled with Lattice will require
- a CLI window, unless you change the startup code so that it
- doesn't open up that (aggravating and basically useless)
- stdout window from WB.
-
-
- WARNING WARNING WARNING WARNING WARNING WARNING WARNING
-
- IF YOU HAVE RUN POPFUNCS FROM THE WORKBENCH, SOME
- PROGRAMS MIGHT GURU THE MACHINE IF YOU TRY TO RUN THEM
- IN THE BACKGROUND. THIS ALSO HAPPENS IF YOU HAVE RUN
- POPFUNCS FROM CLI AND REMOVE THE CLI WINDOW IT WAS STARTED
- FROM. Programs that this happens with that I've found
- so far are: Access! (sometimes) and Deluxe Music. If you
- discover another program that gurus PLEASE LET ME KNOW!
- I'm tearing my hair out over this one...
-
-
-
- EXAMPLE MACROS
-
- Here's some macro examples:
-
- "cd df0:^M" Pretty self explanatory. Writes "cd df0:" and places
- a carriage return on the end.
-
- "[sa]k" This would be the same as hitting SHIFT-ALT-K. This
- would effectively remove PopFuncs.
-
- "[s]{d}" This is the equivalent of hitting SHIFT-DOWN ARROW. If
- you were running an editor like Memacs or DME, then
- this would move the cursor down a page.
-
- "<af+>" This will activate the next window, bring it to the
- front and expand it to full screen size.
-
- "\'Hello\'" This prints the message "'Hello'". Note that the
- back slashes are necessary since "'" is the symbol
- for a comment.
-
- "`C:PopCalc'" This runs the program C:PopCalc in the background.
- (If you're wondering what PopCalc is, it's another
- program I'm working on. It's basically a full-
- featured scientific calculator that you can call up
- at the touch of a 'hot key'. I should be releasing
- it soon.)
-
- "`NewCLI'~1<7+>Conquest^M~9<b>" I dedicate this one to my brother David,
- the world's most avid 'Conquest' player.
- This starts a new CLI, pauses a second
- to give it time to do stuff, enlarges the
- CLI to full screen size, then executes
- the game Conquest (assuming it's in the
- current directory - you might have to put
- a path name in front of it to make it
- look in a specific place). After that it
- waits 9 seconds for the game to load in,
- then pushes the active window (which is
- that little tiny window in the lower right)
- to the back so it's out of the way.
-
-
-
- MACRO FILE CONTENTS
-
- The macro file format is very simple.
-
- The first line contains the screen blanking information as follows:
-
- B=n
-
- where 'n' is a decimal number indicating the number of minutes that must
- elapse with no activity before the screen will blank. The maximum value
- for this number is 65535 (yes, that's a word).
-
-
- The next three lines contain the 'hot key' definitions in the
- following format:
-
- Kill hot-key
- Redefine hot-key
- Pause hot-key
-
- Each line should only have a single ASCII character on it.
-
-
- The next lines contain the latch definitions. There can be any number of
- lines here, but remember that you can only program 9 window latches. Each
- latch line has the following format:
-
- LATCH n,string
-
- where 'n' is a numeric digit from 1-9, and 'string' is any string of
- ASCII text characters. 'n' is the numeric keypad number (along with ALT)
- that you press in order to bring up this latch, and 'string' is the
- window title that PopFuncs looks for (see WINDOW LATCHING above). Note
- that you don't have to put in the window's entire title, for example:
-
- LATCH 1,Left
-
- will match any of the following window titles: "Left", "LeftWing", "Lefty",
- "Left or Right".
-
-
- The next twenty lines are the macro texts, in order from F1 through S10. If
- you only have 12 defined, then it's okay to leave the other eight off, but
- if you have a blank macro between to others, you MUST leave a blank line
- in the macro file.
-
-
- SAMPLE MACRO FILE
-
- B=15 <- sets blanking interval to 15 minutes
- K <- binds SHIFT-ALT-K to killing PopFuncs
- D <- binds ALT-D to popping up the define window
- P <- binds ALT-P to 'pausing' PopFuncs
- LATCH 1,AmigaShell <- latch onto a window with a title of "AmigaShell*"
- LATCH 4,2
- cd df0:^M
- cd df1:^M
- cd vd0:^M
- <- these blank lines are required if you
- <- want to leave a macro blank.
- dir^M
- <baf>
-
-
- IN THE FUTURE
-
- Here are some things I intend to put into PopFuncs in the future. If you
- have any suggestions, let me know.
-
- - Support for the AREXX stuff. I'm not quite sure how to work this yet,
- but my brother insists on me adding it in, so I'll look into it.
- - A better file requester. Something small in code size, but useful.
- - I also hope to shrink the actual code size. I was shooting for about
- 7K when I started this thing, but it quickly grew when I started
- adding additional features. The entire thing is written in Assembly,
- so it's not as big as it could be. (Actually, my first version was
- written with Lattice C, and with only half the features it was 29K.
- Fortunately, the disk it was on corrupted and I had to rewrite the
- thing in assembly. That's why this is 2.1 instead of 1.1)
-
-
- CONCLUSION
-
- Well, I think that about covers everything. I hope somebody out there
- finds a use for this program.
-
- -Tom-
-
- (This is my first REAL program, by the way.)
-
-