home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 469.lha / ClockDJ_v5.02 / ClockDJ.doc.pp / ClockDJ.doc
Text File  |  1991-02-09  |  41KB  |  1,620 lines

  1.  
  2. ClockDJ   - Assembly language clock, mouse, screen and window program.
  3. Version   - 5.02
  4. Copyright - Copyright (c) by David Jenkins,   5 Jan 1991.
  5.         I can be reached at Bloom Beacon 416-283-5924,
  6.                              and CRS 416-629-7000/416-629-7044
  7.  
  8.  
  9.      This program is copyright but may be distributed freely. Please keep the
  10. documentation with the load module.
  11.  
  12.  
  13.  
  14. Version 5.02
  15. ~~~~~~~~~~~~
  16.  
  17. 1. A number of bugs in the "Show Date" routime, and pop to front when using
  18.    overscan are fixed.
  19.  
  20. 2. If the ARexx LOADKEYS is used without a filename it will reload the
  21.    key file loaded.
  22.  
  23. 3. When using the Cygnus file requester in extended select mode, a single
  24.    selection would return a bad value. This is fixed.
  25.  
  26. 4. The following ARexx commands have been added:
  27.  
  28.  
  29.         'SETCEDDIRCOLOUR'     set the colour for ced directories.
  30.     'SETCEDFILECOLOUR'     set the colour for ced files.
  31.     'SETCEDDEVCOLOUR'     set the colour for ced devices.
  32.     'SETCEDLINES'       set the number of lines in the requester.
  33.     'SETCEDFILECOLS'     set the number in the files column.
  34.     'SETCEDDEVCOLS'     set the number in the device column.
  35.         'SETCEDBOXCOLOUR'     set string requester box colour.
  36.  
  37.  
  38.  
  39. Version 5.01
  40. ~~~~~~~~~~~~
  41.  
  42. 1. In this version you can call the Cygnus file requester; for this to
  43.    work, you must copy req.library to your LIBS: directory. There are
  44.    a number of ways of calling the Cygnus file requester: in a clock macro
  45.    or from an ARexx macro using single or extended selections. See the
  46.    section on the Cygnus file requester for details.
  47.  
  48.     The new macro variables are:
  49.  
  50.     &ced1            call Cygnus file requester.
  51.     &cede                   call extended select Cygnus file requester.
  52.         &cedd            call directory only Cygnus file requester.
  53.  
  54.  
  55.    New ARexx macros for the Cygnus file requester are:
  56.  
  57.             'CEDREQUESTERDIR'         get a dir
  58.             'CEDEXTENDEDREQUESTER'    pop up a ced extended requester
  59.             'SETCEDDIR'         set ced Dir
  60.             'SETCEDFILE'         set ced File
  61.             'CEDREQUESTER'        pop up a ced requester
  62.             'SETCEDTITLE'        set title
  63.             'SETCEDHIDE'        set hide files
  64.             'SETCEDSHOW'        set show files
  65.  
  66.  
  67.  
  68.  
  69.  
  70. 2. You may define hot keys for flipping screens or windows; see the section
  71.    on window manipulation for details.
  72.  
  73.     New hot key variables for key macros are:
  74.  
  75.     &win            bring bottom window to the top.
  76.     &sc1            cycle screens including workbench.
  77.     &sc2                    cycle screens excluding workbench.
  78.         &wbs            bring Workbench screen to the front.
  79.  
  80.  
  81. 3. If you select the "Show Date" menu item, the date will appear in the clock
  82.    window once per minute.
  83.  
  84. 4. I have removed the "Snooze" menu item under "Blank Pointer" since the
  85.    variety of snooze pointer shapes makes this feature impractical.
  86.  
  87. 5. The clockdj.config and clockdj.keys files are now saved to the S:
  88.    directory. If you want this version to read your existing config and
  89.    keys files, move them to the S: directory before starting this new version
  90.    of the clock.
  91.  
  92.  
  93. Version 5.00
  94. ~~~~~~~~~~~~
  95.  
  96.     Version 5.00 works on release 2.0 of the operating system in
  97. addition to earlier releases.
  98.  
  99.     The ARexx LOADKEYS routine is fixed.
  100.  
  101.  
  102.  
  103. WTFPATCH5
  104. ~~~~~~~~~
  105.  
  106.      The arc file contains 'WTFPATCH5', an improved version of the
  107. WindowToFront patch. Include 'WTFPatch5' in your start-up sequence,
  108. but make sure you remove the old version of the patch (WTFPatch) first.
  109.  
  110.  
  111.     'WTFPatch5' corrects an Intuition bug in WindoToFront and
  112. WindowToBack. To use it, simply put the 'WTFPatch5' program in your
  113. c: directory and include 'WTFPatch5' in your startup sequence.
  114.  
  115. You won't need this fix for release 2.0 of the operating system.
  116.  
  117. NOTE: Kickstart/Workbench 2.xx does not need the patch
  118.  
  119.  
  120. Program Description
  121. ~~~~~~~~~~~~~~~~~~~
  122.  
  123.  
  124.      This utility combines a clock, mouse accelerator, screen blanker,
  125. window manipulator, function keys, macros, and ARexx support.
  126.  
  127.     The display is a  small  borderless  window  which  shows the
  128. total memory left in the system  (chip  and fast) and the time in
  129. 12 hour format. The  window  pops  to  the front screens once every  minute.
  130.  
  131.     You can start the program with a 'Run ClockDJ', 'Runback ClockDJ',
  132. or by clicking on a Workbench icon.
  133.  
  134. (Do NOT use  Workbench 1.3 'run >nil:' or the ARP Arun NOIO commands.
  135. Only the RunBack in the zoo file or a RunBack to the NUL: device
  136. will work correctly in this situation).
  137.  
  138. Using 'Runback' is useful if you want to close ALL CLI windows. If you start
  139. the clock with 'Runback', the output which is directed to the default CLI
  140. will not be seen. This is not usually a problem since this output is typically
  141. of the '[CLI 3]' variety.
  142.  
  143.     If you use 'Runback' or the Workbench to start the program,
  144. command macros (those ending with a '\c') MUST specify output and
  145. input redirection to nil:. Eg.:
  146.  
  147.     \lal\b\run <nil: >nil: blitz\r\c
  148.  
  149. If you do not do this the MACHINE WILL GURU.
  150.  
  151. If you want to start the clock with a 'run' so that the output from macros
  152. to the default CLI is preserved, but the startup CLI is to be closed,
  153. do something like this:
  154.  
  155. newcli "con:0/0/580/200/AmigaDOS " from df0:command.file
  156. endcli > nil:
  157.  
  158. "commands.file" is a file located on df0: containing the following:
  159.  
  160. run clockdj
  161.  
  162.  Starting the clock in this way preserves the file handle of the CLI
  163. which launched the clock and passes it to programs started by the macros.
  164.  
  165.  
  166.  
  167. Start-up parameters (CLI start-up only)
  168. ~~~~~~~~~~~~~~~~~~~
  169.  
  170. "r" specified as the first parameter will reverse the action of the
  171. mouse buttons for the features that require both to be depressed.
  172. The default is "n", for normal operation.
  173.  
  174. The "Newcli" entry in the menu may now be changed by specifying a second
  175. parameter when starting the clock. Eg.:
  176.  
  177.         run clockdj n NewWsh con:0/0/640/150/Myname
  178.  
  179. Note that if the second parameter is specified, the first parameter must
  180. also be specified.
  181.  
  182.  
  183. Arp File requester
  184. ~~~~~~~~~~~~~~~~~~
  185.  
  186.    The Arp file requester can be called from a macro either alone or
  187. as a symbolic variable within the command string. For this to
  188. work you must have V 34 of Arp.Library in your libs: directory.
  189.  
  190. To call the requester on its own, include a macro that looks like this:
  191.  
  192.    \lal\`\&arfx\r\s\2
  193.  
  194. where x is either 1 or 2. The numbers change the colour scheme
  195. of the requester,
  196.  
  197.    This will open the requester on the top screen when you press the
  198. Left-alt and ` (top left of the keyboard) together. Obviously you
  199. can make the key combination anything you want.
  200.  
  201. When you have selected a file from the requester, the next left mouse
  202. button click  will cause the selected file (including disk and dir)
  203. to be entered into the window where you click. The character delay
  204. (2 in the above example) will be observed.
  205.  
  206. There are a couple of ways to modify the string that is generated:
  207.  
  208.  
  209. Holding down Left Shift when you click will insert a right Amiga x
  210. at the start of the characters; this is useful for clearing existing
  211. data out of a string gadget.
  212.  
  213. Holding down CTRL will submit the directory for the first mouse click
  214. and the file for the second. This is useful for filling in strings
  215. where the directory and file are in separate gadgets (in Dpaint, for
  216. example).
  217.  
  218. Holding down CTRL+Left Shift when you click will submit the directory
  219. and file names separately and precede each with a Right Amiga x.
  220.  
  221.  
  222.  
  223. To include the requester as a variable in a command:
  224.  
  225.    The macro definitions will allow &arf1 and &arf2 to be defined
  226.    as symbolic variables anywhere in the string fields of a macro.
  227.    This will cause the Arp file requester to be called when the
  228.    macro is invoked; the selected file name (and path) will be
  229.    substituted for the variable. Any number of &arf1 (or &arf2)
  230.    variables can be included in the string. The variable can be
  231.    specified in either command or string macros (command macros
  232.    have a "c" at the end, string macros have an "s" at the end).
  233.  
  234.     For example:
  235.  
  236.     \ral\t\type &arf2\r\c
  237.  
  238.    When RightAlt + t are pressed, submit a "type filename" command
  239.    where "filename" is selected from the Arp file requester.
  240.  
  241.  
  242.     \ral\d\delete &arf2\r\c
  243.  
  244.    When RightAlt + d are pressed, Submit a "delete filename" command
  245.    where "filename" is selected from the Arp file requester
  246.  
  247.     \ral\c\copy &arf2 &arf1 all\r\c
  248.  
  249.    When RightAlt + c are pressed, submit a "copy file1 file2 all" command
  250.    where file1 and file2 are selected from the Arp file requester.
  251.  
  252.     \ral\l\list &arf2\r\s
  253.  
  254.    When RightAlt + l are pressed, submit a "list filename" string
  255.    where filename are selected from the Arp file requester.
  256.  
  257.  
  258.  
  259. The Cygnus File Rquester
  260. ~~~~~~~~~~~~~~~~~~~~~~~~
  261.  
  262.         The file "req.library" is public domain; once you copy it
  263. to your LIBS: directory you can call the Cygnus file requester in
  264. much the same way as the ARP file requester above.
  265.  
  266. To call the requester on its own, include a macro that looks like this:
  267.  
  268.    \lal\`\&ced1\r\s\2
  269.  
  270. NOTE: there is no &ced2 yet!
  271.  
  272.    This will open the requester on the top screen when you press the
  273. Left-alt and ` (top left of the keyboard) together. Obviously you
  274. can make the key combination anything you want.
  275.  
  276. When you have selected a file from the requester, the next left mouse
  277. button click  will cause the selected file (including disk and dir)
  278. to be entered into the window where you click. The character delay
  279. (2 in the above example) will be observed.
  280.  
  281. There are a couple of ways to modify the string that is generated:
  282.  
  283.  
  284. Holding down Left Shift when you click will insert a right Amiga x
  285. at the start of the characters; this is useful for clearing existing
  286. data out of a string gadget.
  287.  
  288. Holding down CTRL will submit the directory for the first mouse click
  289. and the file for the second. This is useful for filling in strings
  290. where the directory and file are in separate gadgets (in Dpaint, for
  291. example).
  292.  
  293. Holding down CTRL+Left Shift when you click will submit the directory
  294. and file names separately and precede each with a Right Amiga x.
  295.  
  296.  
  297.  
  298. To include the requester as a variable in a command:
  299.  
  300.    The macro definitions will allow &ced1 to be defined as symbolic
  301.    variables anywhere in the string fields of a macro.
  302.    This will cause the Cygnus file requester to be called when the
  303.    macro is invoked; the selected file name (and path) will be
  304.    substituted for the variable. Any number of &ced1
  305.    variables can be included in the string. The variable can be
  306.    specified in either command or string macros (command macros
  307.    have a "c" at the end, string macros have an "s" at the end).
  308.  
  309.     For example:
  310.  
  311.     \ral\t\type &ced1\r\c
  312.  
  313.    When RightAlt + t are pressed, submit a "type filename" command
  314.    where "filename" is selected from the Cygnus file requester.
  315.  
  316.  
  317.     \ral\d\delete &ced1\r\c
  318.  
  319.    When RightAlt + d are pressed, Submit a "delete filename" command
  320.    where "filename" is selected from the Cygnus file requester
  321.  
  322.     \ral\c\copy &ced1 &ced1 all\r\c
  323.  
  324.    When RightAlt + c are pressed, submit a "copy file1 file2 all" command
  325.    where file1 and file2 are selected from the Cygnus file requester.
  326.  
  327.     \ral\l\list &ced1\r\s
  328.  
  329.    When RightAlt + l are pressed, submit a "list filename" string
  330.    where filename are selected from the Cygnus file requester.
  331.  
  332.  
  333. The Extended Select Cygnus file requester
  334. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  335.  
  336.     The Cygnus file requester will allow multiple files to be
  337. selected in one pass. To call a requester capable of extended selection
  338. use &cedex (where "x" is the delimeter to be placed between the file names)
  339. in the clock macro and hold a shift key while making the selection.
  340. Note that &cede can only be used in a command macro (one ending in a \c).
  341.  
  342. Example:
  343.  
  344. \lal\pixelscript &cede \r\c
  345.  
  346. will submit a list of files to PixelScript. The delimeter is a blank.
  347.  
  348.  
  349. Directory Cynus File Requester
  350. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  351.  
  352.  
  353.         A Cygnus file requester for selecting a directory may be called
  354. by specifying &cedd in the clock macro.
  355.  
  356. Example:
  357.  
  358.     \lal\d\&cedd\r\s
  359.  
  360.     Will inject the selected directory string when the LeftAlt d
  361.         keys are pressed and the mouse is clicked.
  362.  
  363.  This requester may be called in a string or command macro.
  364.  
  365.  
  366.  
  367.  
  368. Window manipulation
  369. ~~~~~~~~~~~~~~~~~~~
  370.  
  371. The following can be selected from the menu or by clicking the correct
  372. combination of mouse buttons:
  373.  
  374.  
  375. 1. Screen blanking after a pre-defined period of inactivity.
  376.  
  377. 2. Pointer blanking after a pre-defined period of inactivity.
  378.  
  379. 3. Mouse accelerator.
  380.  
  381. 4. Sun mouse.
  382.  
  383. 5. Click the window to front with the left mouse button.
  384.  
  385. 6. Click the window to back by pressing the left mouse button followed by the
  386.    right mouse button, with the left button still down.
  387.  
  388. 7. Cycling through screens by pressing the right mouse button followed by the
  389.    left mouse button with the right button still down.
  390.  
  391. 8. Left-Amiga-m will shuffle screens if "Screen Cycle" is selected.
  392.  
  393. 9. A hot-key combination can be defined for cycling screens.
  394.    In the clockdj.keys file the following variables may be defined:
  395.  
  396.     &win - brings the bottom window to the top
  397.     &sc1 - cycles screens including the Workbench screen
  398.     &sc2 - cycles screens excluding the Workbench screen
  399.     &wbs - bring the Workbench screen to the top.
  400.  
  401.  
  402.     Examples:
  403.  
  404.         \lal\w\&win\r\s
  405.  
  406.         Bring the bottom window to the front when LeftAlt w is pressed.
  407.  
  408.  
  409.     \lal\n\&wbs\r\s
  410.  
  411.     Bring the workbench screen to the front when LeftAlt n is pressed
  412.  
  413.  
  414.     \lal\m\&sc1\r\s
  415.  
  416.     Cycle screens (including the workbench screen) when LeftAlt m is pressed
  417.  
  418.  
  419.     \lal,lsh\m\&sc2\r\s
  420.  
  421.     Cycle screens (excluding the workbench screen) when LeftAltLeftshift m
  422.         is pressed
  423.  
  424.  
  425.  
  426. The button sequences for 6. and 7. can be reversed by specifying the
  427. parameter "r" when starting the clock: eg:
  428.  
  429. run clockdj r
  430.  
  431.  
  432. All the above can be selected my menus and saved in the configuration
  433. file.
  434.  
  435.  
  436. Hide Window
  437. ~~~~~~~~~~~
  438. The program will allow the user to select a window and remove it
  439. from the screen while leaving the task that started it unaffected. 
  440.  
  441. To do this, point at the window you want to remove, hold the
  442. LeftShift+LeftAmiga+Control keys down and press the left mouse button;
  443. the window should disappear. To bring the window back hold
  444. LeftShift+LeftAmiga+Control keys and press the right mouse button.
  445.  
  446. Up to 60 windows can be hidden in this way. When retrieving windows
  447. the last one removed is brought back first. A separate list of hidden windows
  448. is maintained for each screen, so only the windows for the active screen are
  449. retrieved.
  450.  
  451. I put this feature in because my workbench screen is often cluttered
  452. with small windows opened by tasks like VirusX. These windows serve no useful
  453. purpose and I decided I would like a means of removing them.
  454.  
  455. Restrictions: 
  456.  
  457. 1. CLI windows cannot be removed. Doing so confuses things and ends in a guru,
  458.    so the CLI windows are ignored when selecting a window to hide.
  459.  
  460.  
  461. 2. Some programs look at their window size; FileInjector does this. If the
  462.    small FileInjector window is hidden and the hot key sequence is used, the
  463.    resulting window is smaller than it should be. The solution is one of: don't
  464.    hide this type of window; retrieve the window before the hot key; retrieve
  465.    the window after the hot key. The last option would require a window refresh
  466.    too (move the window).
  467.  
  468. 3. You should use this feature with caution. Some programs don't expect
  469.    to have other tasks interfere with their windows and gurus can occur.
  470.    Generally, if the window holds only text then there will not be a problem.
  471.  
  472.  
  473.  
  474. Changing the window size of the clock display
  475. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  476.  
  477. The size of the clock window can be changed by hitting: 
  478. LeftShift+LeftAmiga+CTRL+up arrow or down arrow. This will allow the
  479. characters of larger fonts to be displayed correctly.
  480.  
  481. The size will be saved in the config file when "Save" is selected
  482. from the menu. 
  483.  
  484.  
  485. Moving the clock window to another screen
  486. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  487.  
  488.     The clock window can be popped to the next screen
  489. immediately by holding down the left shift key while clicking the
  490. left mouse button in the clock window.
  491.  
  492.     This feature works whatever is selected in the Pop to Front
  493. menu item.
  494.     
  495.  
  496. Menu options
  497. ~~~~~~~~~~~~
  498.  
  499. NewCLI
  500. ------
  501.  
  502. Gives you a new CLI window at the bottom of the screen.
  503.  
  504.  
  505.  
  506. Chip/Fast
  507. ---------
  508.  
  509. This option gives chip and fast memory displays separately. When selected
  510. the menu toggles to "Total Memory" to enable you to get back to a total
  511. memory display.
  512.  
  513.  
  514.  
  515. Colour
  516. -----
  517.  
  518. Allows you to select the colour of the clock display.
  519.  
  520.  
  521.  
  522. Priority
  523. --------
  524.                      
  525. The default priority of the clock is 2 which seems to work OK in most
  526. circumstances. Setting it to 0 makes it the same priority as other 
  527. tasks  started  from CLI. Making it negative gives it a lower priority
  528. than other CLI tasks. This option gives you a choice of running the clock
  529. from -3 to +4. I found the negative values useful while running a Basic
  530. drawing program: anything above -1 made the drawing process
  531. jerky.
  532.  
  533.  
  534.  
  535. Refresh
  536. -------
  537.  
  538. This is the maximum rate at which the program will update the display.
  539. The default is 5 times per second and the options allow from 10 times
  540. to once per second. I  only  do an PrintIText if something has changed,
  541. so even 10 times per second does  not  use much CPU - you can
  542. use pm to see how much.  
  543.  
  544.  
  545. Blank Screen
  546. ------------
  547.  
  548. The screen will blank after the specified time (in minutes) if there is no
  549. keyboard or mouse activity.
  550.  
  551.  
  552. Blank Pointer
  553. -------------
  554.  
  555. The mouse pointer will blank after the specified time (in seconds) if there is
  556. no mouse activity.
  557.  
  558. When the Snooze Off entry is checkmarked the pointer will not blank if it is 
  559. a snooze pointer. This can avoid having to move the mouse to
  560. see if an operation is complete when the pointer has been blanked.
  561.  
  562.  
  563. Mouse Speed
  564. -----------
  565.  
  566. Accelerates the mouse pointer. 1 is no acceleration.
  567.  
  568.  
  569.  
  570. Click to front
  571. --------------
  572.  
  573. Clicking the left mouse button in a window the specified number of
  574. times will bring it to the front.
  575.  
  576.  
  577. Click to front now gives you the option of keeping or discarding 
  578. the last of the left mouse button clicks which brings the window to front. 
  579.  
  580. There is a 'Discard' sub-menu item under 'Click to Front'. 
  581. If 'Discard' is checked the last mouse click is discarded.
  582.  
  583. The difference this option makes is mainly seen when the last
  584. mouse click is on an icon or other field you wish to select. To find
  585. out which to use, experiment.
  586.  
  587.  
  588. Click to back
  589. -------------
  590.  
  591. Click the window to back by pressing the left mouse button followed by the
  592. right mouse button the specified number of times.
  593.  
  594.  
  595. Note that this sequence can be reversed by specifying "r" as a start-up
  596. parameter
  597.  
  598.  
  599. Sun Mouse
  600. ---------
  601.  
  602. Activates the window the pointer is above without having to click the left
  603. mouse button.
  604.  
  605.  
  606.  
  607. Screen Cycle
  608. ------------
  609.  
  610.  
  611. Cycling through screens by pressing the right mouse button followed by
  612. the left mouse button with the right button still down.
  613.  
  614. Note that this sequence can be reversed by specifying "r" as a
  615. start-up parameter
  616.  
  617. The screen cycle can also be triggered by hitting Left-Amiga-m.
  618.  
  619.  
  620. Key Activate
  621. ------------          
  622.  
  623. If this feature is used, the window under the pointer will be activated
  624. when a key is depressed.
  625.  
  626. Pop to Front
  627. ------------
  628.  
  629. Selecting this item causes the clock to pop to the front of the 
  630. current screen if 'Windows' is selected, or to the top screen if
  631. 'Screens' is selected.
  632.  
  633.    The Pop to Front menu item has a sub-item called "Cling". If
  634.    you select this a message will appear asking you to click in a
  635.    window. When you do, the clock will attach itself to the selected
  636.    window; the clock menu will also become a part of this window. 
  637.    Note that only windows with no existing menus or UserPort
  638.    are eligible to be selected. In practise this confines you to CLI
  639.    windows. Once the clock is attached to a window, the "Cling" menu
  640.    item is highlighted; re-selecting "Cling" will move the clock to
  641.    its own window on the Workbench screen. If you close a window
  642.    the clock is attached to, it will re-open itself on the Workbench
  643.    screen. 
  644.  
  645.     If "Save" is selected when the clock is attached to a window,
  646.    the window title will be saved in the clockdj.config file. When
  647.    the clock is started, it will look for a window with this title and
  648.    attach itself to the window.
  649.  
  650.  
  651. Map Keys
  652. --------
  653.  
  654. When checked, the key mapping and macro functions are active.
  655.  
  656.  
  657. Load Keys
  658. ---------
  659.  
  660. Loads in a new set of key and macro definitions.
  661.  
  662.  
  663. Save
  664. ----
  665.  
  666. If you select "Save", all the current settings, including the window
  667. position, will be written to a file called "clockdj.config" in the 
  668. root directory of sys:. You should be careful to ensure that sys: is
  669. assigned to the correct disk so that the file can be read when the clock
  670. is next started.
  671.  
  672.  
  673. The next time clockdj starts it will attempt to read this file and set
  674. up the clock and associated parameters exactly as they were when you 
  675. selected "Save".
  676.  
  677. You should select this option when you are happy with the way the clock
  678. looks, and then make sure you have the disk with the clockdj program 
  679. on it assigned to sys:. 
  680.  
  681.  
  682.  
  683. Quit
  684. ----
  685.  
  686. Ends the program.
  687.  
  688.  
  689. Macros and redefining the keys
  690. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  691.  
  692. ClockDJ will allow you re-map the keyboard, substitute a string
  693. of characters for a single key depression, or execute a command when
  694. a particular key sequence is pressed. The key definitions and macros
  695. must be created by you and saved in a file; the default file read when
  696. the program starts is sys:clockdj.keys. The key definitions can be changed
  697. by selecting Load Keys from the menu.
  698.  
  699.  
  700.  
  701.    Pressing CTRL-` (the "ctrl" key and the "`" key) is an escape for
  702. the next key/mouse sequence entered. This will prevent translation or
  703. macro generation on  the next key/mouse sequence.
  704.  
  705.  
  706.  
  707. NB. 'Map Keys' must be selected from the menu to activate the macro
  708.     function.
  709.  
  710.  
  711. The statement format is:
  712.  
  713. \xxx,yyy\z\wwwwww\r\s\5
  714. |    |   |   |    k c |
  715. |    |   |   |    | | |_The delay between each character in 10ms increments.
  716. |    |   |   |    | | 
  717. |    |   |   |    | |_ s = string; c = command
  718. |    |   |   |    |
  719. |    |   |   |    |_ r = replace character with the string or command
  720. |    |   |   |       k = generate string or command, but keep the original
  721. |    |   |   |           character.
  722. |    |   |   |
  723. |    |   |   |_ String to be generated, or command to be executed.
  724. |    |   |   
  725. |    |   |_ Character to be re-mapped.
  726. |    |
  727. |    |_ List of qualifiers (see below), separated by commas.
  728. |
  729. |
  730. |_ Delimiter.
  731.  
  732.  
  733. NOTE: Any line that begins with an asterisk (*) will be treated as a comment.
  734.  
  735.  
  736. Delimiter
  737. ---------
  738.  
  739. A "\" is the character used to delimit fields. If you wish to include
  740. one in the string, precede it with a "^".
  741.  
  742. Qualifiers
  743. ----------
  744.  
  745. This defines which keys must be pressed with the re-map character
  746. to generate the string or command. eg., you may want the qualifiers to be
  747. left shift and right alt. If no qualifiers are needed to trigger the re-map,
  748. the statement would start with a "\\".
  749.  
  750. Multiple qualifiers are specified by separating them by commas: eg.,
  751. "lsh,lat,ctl".
  752.  
  753.  
  754.  
  755. The valid qualifiers are: (all in lower case)
  756.  
  757. lsh    Left shift.
  758. rsh    Right shift.
  759. clo    Caps lock.
  760. ctl    Control (CTRL).
  761. lal    Left alt.
  762. ral    Right alt.
  763. lam    Left Amiga.
  764. ram    Right Amiga.
  765.  
  766.  
  767. The above qualifiers must be specified in lower case.
  768.                      ~~~~
  769.  
  770. Character to be re-mapped.
  771. ------------------------
  772.  
  773. This field is either a single character - "w", for example - or
  774. a string of characters which represents a single character.
  775. If a single character is specified it must be in lower case; if you want
  776. the upper case character re-mapped you must use two statements with
  777. "lsh" and "rsh" qualifiers. This also applies to keys like "{", "!"
  778. etc. whose lower and upper case representations are different.
  779.  
  780. Valid strings are: (in lower case)
  781.  
  782.  
  783. **** NOTE: to include one of these characters in a submitted character string
  784.            (or to call a file requester), prefix the key string with
  785.            an "&". Eg. &del &arf1 etc.
  786.  
  787.  
  788.  
  789. f01    The function keys.
  790. f02            |
  791. f03            |
  792. f04            |
  793. f05            |
  794. f06            |
  795. f07            |
  796. f08            |
  797. f09            |
  798. f10            V
  799.  
  800. hel     Help key.
  801. esc     Escape key.
  802. tab     Tab key.
  803. bsp     Backspace key.
  804. ret     Return key.
  805. del     Delete key.
  806. upa     Up arrow.
  807. lea     Left arrow.
  808. doa     Down arrow.
  809. ria     Right arrow.
  810. kp0     Key pad 0.
  811. kp1     Key pad 1.
  812. kp2     Key pad 2.
  813. kp3     Key pad 3.
  814. kp4     Key pad 4.
  815. kp5     Key pad 5.
  816. kp6     Key pad 6.
  817. kp7     Key pad 7.
  818. kp8     Key pad 8.
  819. kp9     Key pad 9.
  820. kp.     Key pad ..
  821. kp-     Key pad -.
  822. kpe     Key pad enter.
  823. kp)     Key pad ).
  824. kp(     Key pad (.
  825. kp/     Key pad /.
  826. kp+     Key pad +.
  827.  
  828. The following can only be used in the submitted strin or command part of
  829. the macro:
  830.  
  831. &win    bring bottom window to the top.
  832. &sc1    cycle screens including workbench.
  833. &sc2    cycle screens excluding workbench.
  834. &wbs    bring Workbench screen to the front.
  835.  
  836. &arf1    Arp file requester. Colour 1. If specified alone, the selection
  837. &arf2    Ditto, Colour 2               will be injected into the window
  838.                       at the next Left Mouse Button click.
  839.                        If specified with other characters,
  840.                       will act as a symbolic variable; the
  841.                       selection will replace the variable
  842.                        in the command/string.
  843.  
  844. &ced1    call Cygnus file requester.
  845. &cede   call extended select Cygnus file requester.
  846. &cedd    call directory only Cygnus file requester.
  847.  
  848.  
  849.  
  850.  
  851.  
  852. The above keys must be specified in lower case.
  853.                ~~~~
  854.  
  855.  
  856.  
  857. String
  858. ------
  859.  
  860. The string of characters which will replace the character to
  861. be re-mapped.
  862.  
  863. Special keys (del, bsp, for example) may be inserted into the string.
  864. They are specified by preceding the key name with a "&". For example,
  865. "&del" would be delete, "&ret" would be return, etc. Any key listed above
  866. in the "Character to be re-mapped" section can be specified in this way (still
  867. in lower case).
  868.  
  869. Previous versions of the program allowed a limited set of control characters
  870. in the string by using the "^". This will still work. The characters
  871. which can be defined in this way are:
  872.  
  873.  
  874. ^[   Escape.
  875. ^h   Backspace.
  876. ^i   Tab.
  877. ^m   Return.
  878.  
  879. The "^" and "\" can be included in the string by preceding them
  880. with a "^".
  881.  
  882.  
  883. A character in a macro string may include a qualifier.
  884. Any of the qualifiers listed above under "Qualifiers" are valid.
  885. The qualifier is preceded by a "%" and multiple qualifiers are
  886. separated by commas. Eg.,
  887.  
  888. "%lal,%ctla" 
  889.  
  890. (in lower case)  would specify LeftAlt+CTRL+a.
  891.  
  892. Multiple qualifiers should be separated by commas. This can be useful
  893. for entering data in a string gadget (a file requester, for example).
  894. The file name you want in the requester may be "myfile"; specifying
  895. "%ramxmyfile" in the string would clear the gadget before filling it
  896. with "myfile".
  897.  
  898.  
  899.  
  900. The string should appear in the active window.
  901.  
  902. Each statement can be up to 1000 characters long.
  903.  
  904.  
  905. Replace/Keep
  906. ------------
  907.  
  908.  
  909. An "r" causes the re-mapped character to be replaced with the
  910. string or command. A "k" will keep the re-mapped character.
  911.  
  912. This must be specified in lower case.
  913.  
  914.  
  915. String/Command
  916. --------------
  917.  
  918. An "s" will submit the string into the input stream: it should
  919. appear in the active window.
  920.  
  921. A "c" will execute the string as a command. A "^m" (CR) or "&ret" at the end
  922. of the command is not needed. The command will be launched from the clock
  923. task AT THE SAME PRIORITY AS THE CLOCK; the default clock priority is 2.
  924. Some programs do not run well at priority 2 -  eg Txed, Excellence, Blitz -
  925. since they use input handlers running at priority 0. To avoid this kind of
  926. problem either run the clock at priority 0 or use the ARP Arun command and
  927. set the priority of the new task to 0.
  928.  
  929.  
  930. This must be specified in lower case.
  931.  
  932.  
  933. Delay
  934. -----
  935.  
  936. ****************
  937. *    NOTE      *
  938. ****************
  939.  
  940. Version 4.06 and above contain improvements which, as far as I know,
  941. eliminate the need to specify a delay. It is still supported, however.
  942.  
  943.  
  944. The delay value will delay each character by the value*15 milliseconds. Eg.,
  945. a value of 5 specifies 75 ms. 
  946.  
  947. The delay field can be between 0 and 9.
  948.  
  949. If the delay is omitted, a delay of 0 is assumed.
  950.  
  951. Examples
  952. ~~~~~~~~
  953.  
  954.  
  955. \\f01\run  >nil: <nil: ed\r\c
  956.  
  957. Will run ed . Notice that no qualifier was specified
  958. for the function key F1. The redirection to nil: is to prevent unwanted
  959. messages in the console window.
  960.  
  961.  
  962.  
  963.  
  964. \ctl,lsh\f01\dir df0:\r\c
  965.  
  966. When CTRL, left shift and F1 are depressed a dir df0: will execute and the
  967. result will appear in the window belonging to the cli which started ClockDJ.
  968. This would work only if ClockDJ has NOT been started with 'RunBack'.
  969.  
  970.  
  971.  
  972. \lal\t\run >nil: <nil: Terminals:gt/gt\r\c
  973.  
  974. Run GT when left-alt t is depressed.
  975.  
  976.  
  977.  
  978.  
  979. \lal\esc\newcli <nil: >nil:\r\c
  980.  
  981. Start a new cli when Left-alt esc is depressed.
  982.  
  983.  
  984.  
  985.  
  986. \lal\n\David Jenkins\r\s\5
  987.  
  988. Submit the string when left-alt n is depressed and insert a 50 ms delay
  989. between each character.
  990.  
  991.  
  992.  
  993. \lal\m\Inter-Office Correspondence&ret&retFrom:  David Jenkins&ret&retTo:&ret&retSubject:&ret&ret______________________________________________________________________________&ret&ret\r\s\5
  994.  
  995. Submit the string when left-alt m is depressed and insert a 50 ms delay
  996. between each character..
  997.  
  998.  
  999. \clo\`\~\r\s
  1000. \clo\1\!\r\s
  1001.  
  1002.  
  1003. Convert Caps lock "`" and "1" to "~" and "!".
  1004.  
  1005.  
  1006. \lal\f\%ramxdf0:file1\r\s
  1007.  
  1008.  
  1009. Is useful for putting a string into a requester. The "%ramx" will submit a
  1010. Right Amiga-x which will clear the string gadget before submitting the
  1011. "file1" string.
  1012.  
  1013.  
  1014.  
  1015. \lal\w\&win\r\s
  1016.  
  1017. Will bring the bottom window of the screen to the top when LeftAlt w
  1018. is pressed
  1019.  
  1020.  
  1021. \lal\n\&wbs\r\s
  1022.  
  1023.  
  1024. Will bring the Workbench screen to the front when LeftAlt n is pressed.
  1025.  
  1026.  
  1027.  
  1028. \lal\m\&sc1\r\s
  1029.  
  1030. Will cycle through screens (incuding the Workbench screen) when LeftAlt m
  1031. is pressed.
  1032.  
  1033.  
  1034.  
  1035. \lal,lsh\m\&sc2\r\s
  1036.  
  1037.  
  1038. Will cycle through screens (excuding the Workbench screen) when LeftAltLeftShift m
  1039. is pressed.
  1040.  
  1041.  
  1042.  
  1043. \ral\l\runwsh List &cede  \r\c
  1044.  
  1045.  
  1046. Will bring up the Cygnus file requester, let you extended select a list of
  1047. files and submit them to "list".
  1048.  
  1049.  
  1050.  
  1051. \lal\`\&ced1\r\s
  1052.  
  1053.  
  1054. Will bring up the Cygnus file requester and pump the full file name into
  1055. the window where you click the left mouse button.
  1056.  
  1057.  
  1058.  
  1059.  
  1060.                               AREXX Macros
  1061.                               ~~~~~~~~~~~~
  1062.  
  1063.     ClockDJ versions 4.00 and above contain an ARexx port.  The clock
  1064. is  an  ARexx  host  and will accept commands from an ARexx program; the
  1065. commands  are  listed below.  If a result is expected it will be returned
  1066. in  the  special  ARexx  variable  'result';  any commands which return a
  1067. result should have a 'options results' statement in the program.
  1068.  
  1069.  
  1070. Title of ClockDJ
  1071. ----------------
  1072.  
  1073.     The clock window has a title of 'ClockDJ' (case sensitive);
  1074. you can use this title in some of the ARexx macros. For an example of this
  1075. take a look at Move.Rexx and Move2.Rexx.
  1076.  
  1077.  
  1078. Host Name
  1079. ---------
  1080.  
  1081.     The host name of ClockDJ is CLOCKDJ (in capitals).
  1082.  
  1083.  
  1084. Errors
  1085. ------
  1086.  
  1087.     Errors are reported by setting a return code (the RC variable).
  1088.  
  1089. A return code of 20 is set for an unrecognized command.
  1090.  
  1091. A  return  code  of 10 is set for an invalid parameter (an invalid window
  1092. address, for example).
  1093.  
  1094.  
  1095. Commands
  1096. --------
  1097.  
  1098. NOTE:  when executing commands which manipulate windows (like MOVE), be
  1099. careful  not  to submit too many requests for the same window without a
  1100. pause  between  the  requests.   Intuition  gets upset if it receives a
  1101. request  for  a window before it has acted on the previous request; the
  1102. ARexx   function  'delay'  (in  rexxsupport.library)  can  be  used  to
  1103. accomplish this:  eg., 'call delay 5'.
  1104.  
  1105.  
  1106.  
  1107.  
  1108.     ACTIVATEWINDOW    address        
  1109.  
  1110.  
  1111. Activate the window with this address. The window may be on any screen.
  1112.  
  1113.  
  1114.                            *******************
  1115.  
  1116.      COLOUR    nn    
  1117.  
  1118.  
  1119. Change the colour of the clock display to nn (0-11).  Note: nn
  1120. corresponds to a colour item menu selection
  1121.  
  1122.  
  1123.                            *******************
  1124.  
  1125.  
  1126.      CHIP         
  1127.  
  1128. Change the clock to display chip/fast memory.
  1129.  
  1130.  
  1131.                            *******************
  1132.  
  1133.  
  1134.      DELAY    value
  1135.  
  1136.  
  1137. Specify an inter-character  delay value in microseconds for injected data.
  1138. The delay value remains in effect for all injected data; if you want to
  1139. reset it to zero, submit a 'delay 0' command.
  1140.  
  1141.                            *******************
  1142.  
  1143.  
  1144.  
  1145.  
  1146.     CEDREQUESTER
  1147.  
  1148.  
  1149. Call the Cygnus file requester.  The full pathname of the selected file will
  1150. be  returned  in  'result'.   If  'cancel'  is  selected  on the Cygnus file
  1151. requester, a null string will be returned in 'result'.
  1152.  
  1153. Notes: 1. You must specify OPTIONS RESULTS for this macro to work.
  1154.        2. If you want a directory to be returned even if no file
  1155.           is selected, set the file nmae to one blank with SETCEDFILE.
  1156.           (eg SETCEDFILE ' ').
  1157.        3. See POINTCOPY.REXX and DELETECOPY.REXX for examples on how to
  1158.           use the Cygnus file requester commands.
  1159.  
  1160.  
  1161.                            *******************
  1162.  
  1163.  
  1164.  
  1165.  
  1166.     CEDEXTENDEDREQUESTER
  1167.  
  1168.  
  1169. Call the Cygnus extended select file requester. The files selected
  1170. are placed in 'result' separated by line feeds ('0a'x).
  1171.  
  1172. Notes: 1. You must specify OPTIONS RESULTS for this macro to work.
  1173.  
  1174.  
  1175.                            *******************
  1176.  
  1177.  
  1178.  
  1179.        SETCEDDIR dirname
  1180.  
  1181.  
  1182. will set the initial directory string in the  Cygnus file requester
  1183. to dirname.
  1184.  
  1185.  
  1186.  
  1187.                            *******************
  1188.  
  1189.  
  1190.  
  1191.     SETCEDFILE filename
  1192.  
  1193. will set the initial file string in the  Cygnus file requester
  1194. to filename.
  1195.  
  1196.  
  1197.  
  1198.                            *******************
  1199.  
  1200.  
  1201.  
  1202.     CEDREQUESTERDIR
  1203.  
  1204.  
  1205. Call the Cygnus file requester for selecting a directory. The selected
  1206. directory is returned in 'result'.
  1207.  
  1208.  
  1209.  
  1210.                            *******************
  1211.  
  1212.  
  1213.     SETCEDTITLE
  1214.  
  1215.  
  1216. set the title of the Cygnus file requester.
  1217.  
  1218.  
  1219.  
  1220.                            *******************
  1221.  
  1222.  
  1223.  
  1224.     SETCEDHIDE
  1225.  
  1226.  
  1227. sets the  hide files wild card string in the Cygnus file requester.
  1228.  
  1229.  
  1230.  
  1231.  
  1232.                            *******************
  1233.  
  1234.     SETCEDSHOW
  1235.  
  1236.  
  1237.  
  1238. sets the  show files wild card string in the Cygnus file requester.
  1239.  
  1240.  
  1241.  
  1242.                            *******************
  1243.  
  1244.  
  1245.  
  1246.     SETCEDDIRCOLOUR        n
  1247.  
  1248.  
  1249. sets the colour for ced directory displays to n.
  1250.  
  1251.  
  1252.  
  1253.                            *******************
  1254.  
  1255.  
  1256.     SETCEDFILECOLOUR'    n
  1257.  
  1258.  
  1259. sets the colour for the file display to n
  1260.  
  1261.  
  1262.  
  1263.                            *******************
  1264.  
  1265.  
  1266.     SETCEDDEVCOLOUR        n
  1267.  
  1268.  
  1269. sets the colour for device display to n
  1270.  
  1271.  
  1272.                            *******************
  1273.  
  1274.  
  1275.     SETCEDLINES        nn
  1276.  
  1277. sets the number of lines in the requester to nn.
  1278.  
  1279.  
  1280.  
  1281.                            *******************
  1282.  
  1283.  
  1284.     SETCEDFILECOLS        nn
  1285.  
  1286.  
  1287. sets the number in the files column to nn.
  1288.  
  1289.  
  1290.  
  1291.                            *******************
  1292.  
  1293.  
  1294.     SETCEDDEVCOLS        nn     set
  1295.  
  1296.  
  1297. sets the number in the device column to nn.
  1298.  
  1299.  
  1300.  
  1301.                            *******************
  1302.  
  1303.  
  1304.     SETCEDBOXCOLOUR        n
  1305.  
  1306.  
  1307. sets string requester box colour.
  1308.  
  1309.  
  1310.  
  1311.                            *******************
  1312.  
  1313.  
  1314.  
  1315.      FILEREQUESTER
  1316.  
  1317.  
  1318. Call the Arp file requester.  The full pathname of the selected file will
  1319. be  returned  in  'result'.   If  'cancel'  is  selected  on the Arp file
  1320. requester, a null string will be returned in 'result'.
  1321.  
  1322.  
  1323.                            *******************
  1324.  
  1325.  
  1326.     SETARPDIR dirname
  1327.  
  1328. will set the initial directory string in the  Arp file requester
  1329. to dirname.
  1330.  
  1331.  
  1332.                            *******************
  1333.  
  1334.  
  1335.     SETARPFILE filename
  1336.  
  1337. will set the initial file string in the  Arp file requester
  1338. to filename.
  1339.  
  1340.  
  1341.  
  1342.                            *******************
  1343.  
  1344.  
  1345.    SETARPTITLE title
  1346.    
  1347. will set the title in the  Arp file requester.
  1348.  
  1349.  
  1350.                            *******************
  1351.  
  1352.  
  1353.    SETARPCOLOUR number
  1354.  
  1355.   will set the colour of the  Arp file requester. The number can
  1356.   be 1 or 2.
  1357.  
  1358.  
  1359.                            *******************
  1360.  
  1361.    POPREQUESTER text
  1362.  
  1363.   will put a requester displaying the text on the top screen with 
  1364.   a YES/NO choice. The selection is passed back in RESULT as YES or NO.
  1365.  
  1366.  
  1367.                            *******************
  1368.  
  1369.  
  1370.      GETACTIVEWINDOW      
  1371.  
  1372.  
  1373. Gets the active window address and returns it in 'result'.
  1374.  
  1375.  
  1376.                            *******************
  1377.  
  1378.  
  1379.     GETNEXTWINDOW    address        
  1380.  
  1381.  
  1382. Get  the  address  of  the  next window on a screen.  The parameter is an
  1383. address of a window.
  1384.  
  1385.                            *******************
  1386.  
  1387.  
  1388.  
  1389.      GETPOINTERWINDOW          
  1390.  
  1391.  
  1392. Get the address of the window under the pointer. The address is returned
  1393. in 'result'.
  1394.  
  1395.  
  1396.                            *******************
  1397.  
  1398.  
  1399.     GETSCREEN    title
  1400.  
  1401.  
  1402.  
  1403. Get  the  screen  address  from  the  title.  Note that the title is case
  1404. sensitive.  The address is returned in 'result'.
  1405.  
  1406.  
  1407.                            *******************
  1408.  
  1409.     
  1410.     GETTITLEOFSCREEN address    
  1411.  
  1412.  
  1413. Get a screen title from a screen address. The title is returned in
  1414. 'result'.  
  1415.  
  1416.  
  1417.                            *******************
  1418.  
  1419.  
  1420.      GETTOPSCREEN
  1421.  
  1422.  
  1423. Get the address of the top screen. The address is returned in 'result'.
  1424.  
  1425.  
  1426.                            *******************
  1427.  
  1428.  
  1429.      GETWINDOW    title
  1430.  
  1431.  
  1432. Get  the  address of the window with this title.  The address is returned
  1433. in  'result'.  Note that 'title' is case sensitive; make sure you specify
  1434. the exact title.  The window can be on any screen.
  1435.  
  1436.  
  1437.                            *******************
  1438.  
  1439.  
  1440.  
  1441.      HIDEWINDOW    address        
  1442.  
  1443.  
  1444. Hide the window with the specified address.
  1445.  
  1446.  
  1447.                            *******************
  1448.  
  1449.  
  1450.      INJECT    CLICK    data    
  1451.  
  1452.  
  1453. Injects  data  into  the window where you click the left mouse button.  A
  1454. small  window will appear on the top screen asking you to click where you
  1455. want  the  data  injected.   The  data to be injected is specified by the
  1456. second  operand.  If you precede the data by a hex '01' ('01'x in ARexx),
  1457. a Right Amiga+x will be inserted to clear a string requester).
  1458.  
  1459.  
  1460.                            *******************
  1461.  
  1462.  
  1463.      INJECT    ACTIVE    data
  1464.  
  1465.  
  1466. Injects data into the active window. The data to be injected is specified
  1467. by the second operand.
  1468.  
  1469.  
  1470.                            *******************
  1471.  
  1472.  
  1473.      INJECT    address    data
  1474.  
  1475.  
  1476. Injects  data into the window with the the address specified in the first
  1477. operand.  The data is specified by the second operand.
  1478.  
  1479.  
  1480.                            *******************
  1481.  
  1482.  
  1483.      LOADKEYS filename
  1484.  
  1485.  
  1486. Load new key definitions from the specified file name.
  1487.  
  1488.  
  1489.                            *******************
  1490.  
  1491.  
  1492.     MOVEWINDOW    address x-position y-position    
  1493.  
  1494.  
  1495. Move  a  window  to  a  new  position.   The  first parameter is a window
  1496. address,  the  second  is the X position and the third is the Y position.
  1497. If you attempt to move a window outside a screen's limits a return code of
  1498. 10 will be set.
  1499.  
  1500.  
  1501.                            *******************
  1502.  
  1503.  
  1504.     POPUP        OFF        
  1505.             WINDOWS
  1506.             SCREENS
  1507.  
  1508.  
  1509. Set the popup status of the clock.
  1510.  
  1511.  
  1512.                            *******************
  1513.  
  1514.  
  1515.     QUALIFIER  'nnnn'x  
  1516.  
  1517.  
  1518. Set  a key qualifier for injected data.  The qualifier is 2 hex bytes and
  1519. the values are explained below. This feature is useful if you want to
  1520. inject,  for  example,  a  Right Amiga+Right Shift+Return.  The qualifier
  1521. remains  set  for  all injected data, so you must reset it.  A normal key
  1522. depression has a qualifier of '8000'x (relative mouse).
  1523.  
  1524. NOTE:   this  is  only  effective for data injected with INJECT ACTIVE or
  1525. INJECT address.  It will not work with INJECT CLICK.
  1526.  
  1527.  
  1528.  
  1529. Qualifiers
  1530. ----------
  1531.  
  1532. IEQUALIFIER_LSHIFT    EQU   $0001        Left shift
  1533. IEQUALIFIER_RSHIFT    EQU   $0002        Right Shift
  1534. IEQUALIFIER_CAPSLOCK    EQU   $0004        Caps Lock
  1535. IEQUALIFIER_CONTROL    EQU   $0008        CTRL
  1536. IEQUALIFIER_LALT    EQU   $0010        Left Alt
  1537. IEQUALIFIER_RALT    EQU   $0020        Right Alt
  1538. IEQUALIFIER_LCOMMAND    EQU   $0040        Left Amiga
  1539. IEQUALIFIER_RCOMMAND    EQU   $0080        Right Amiga
  1540. IEQUALIFIER_RELATIVEMOUSE     EQU   $8000   Reset to this value.
  1541.  
  1542.  
  1543. NB. OR the bits together to set a qualifier: eg: '8022'x is Right shift+
  1544.     Right alt+Relative mouse.  You should always include the relative mouse 
  1545.     bit.
  1546.  
  1547.  
  1548.                            *******************
  1549.  
  1550.  
  1551.      RETRIEVEWINDOW     address    
  1552.  
  1553.  
  1554. Retrieve the hidden window with this address.
  1555.  
  1556.  
  1557.                            *******************
  1558.  
  1559.  
  1560.      SCREENFLIP
  1561.  
  1562.  
  1563. Push the top screen to the bottom.
  1564.  
  1565.  
  1566.                            *******************
  1567.  
  1568.  
  1569.     SCREENFORWINDOW    address    
  1570.  
  1571.  
  1572.  
  1573. Get  the address of the screen which contains this window.  The parameter
  1574. is a window address. The address is returned in 'result'.
  1575.  
  1576.  
  1577.                            *******************
  1578.  
  1579.  
  1580.     SCREENTOFRONT    address        
  1581.  
  1582.  
  1583.  
  1584. Bring the screen with this address to the front.
  1585.  
  1586.  
  1587.                            *******************
  1588.  
  1589.  
  1590.      TOTAL             
  1591.  
  1592. Change the clock to display total memory.
  1593.  
  1594.  
  1595.                            *******************
  1596.  
  1597.  
  1598.  
  1599.     WINDOWTOBACK    address        
  1600.  
  1601.  
  1602.  
  1603. Push the window with this address to the back.
  1604.  
  1605.  
  1606.                            *******************
  1607.  
  1608.  
  1609.     WINDOWTOFRONT    address
  1610.  
  1611.  
  1612.  
  1613.  
  1614. Bring the window with this address to the front.
  1615.  
  1616.  
  1617.  
  1618.  
  1619.                         David Jenkins.
  1620.