home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / myfeelx.zip / feelx.txt < prev    next >
Text File  |  1994-07-25  |  142KB  |  3,323 lines

  1.    Welcome to FeelX 1.1a  1/1 
  2.  
  3.   FeelX 1.1a
  4.  
  5.   FeelX 1.1a is a small productivity tool for OS/2 that simulates some well
  6.   known X-Window features. Some of the features include Sliding focus (two
  7.   modes) , graphical kill , usage of 3rd mouse button , a lot of additional
  8.   menus (e.g. VIO shells, desktop, corners) , one (or more) actionbar(s) for
  9.   your desktop , hotkeys , program lauching , quick marking in VIO shells , hide
  10.   of mouse pointer. FeelX can be integrated into the WPS or it may be used as a
  11.   WPS replacement (it is not recommended to use FeelX as a WPS replacement
  12.   because the WPS is great).
  13.  
  14.   FeelX is easy to enhance and to configurate. It can be programmed by a small
  15.   description languages. An interface to DLL's is available (You can use the
  16.   file api\testdll.c as a program template and do not need much programming
  17.   experience to integrate your own ideas).
  18.  
  19.   Before you you have a look at FeelX by starting feelx.exe ...   ... you might
  20.   be interested in one of the following topics:
  21.  
  22.   o Have a look at FeelX
  23.  
  24.   o Installing FeelX
  25.  
  26.   o Configuring FeelX
  27.  
  28.   Have fun  
  29.  
  30.    Copyright and more  2/1+
  31.  
  32.   This chapter contains the information about the copyright.
  33.  
  34.    Copyright  3/2 
  35.  
  36.   FeelX is (c) 1993, 1994 by Felix von Normann.
  37.   All tools supplied with FeelX are (c) 1993, 1994 by Felix von Normann.
  38.  
  39.    Disclaimer  4/2 
  40.  
  41.   Since this program is free, it is supplied with no warranty, either expressed
  42.   or implied. I am not resposible for any damage caused directly or indirectly
  43.   by FeelX or any of the tools. I did my best to avoid errors and bugs, but I do
  44.   not claim to have an error free program. All software is supplied AS IS. You
  45.   may use these programs only at your own risk.  
  46.  
  47.    $$$?  5/2 
  48.  
  49.    If you like the program, do you have to pay for it? NO. This program is free
  50.   for personal usage. I believe that tools that make your life with the computer
  51.   easier should be as cheap as possible. (... this does not imply that all my
  52.   programs will be free forever...)
  53.  
  54.    If you distribute shareware or PD, you may sell this program on diskette or
  55.   CD. I hope you have a fair price (!). Never change the contents of the
  56.   ZIP-archiv!
  57.  
  58.    For version 1.0 I wrote:
  59.   ┌────────────────────────────────────────────────────────────┐
  60.   │If you are the boss of a software company and responsibile  │
  61.   │for those terrible high prices for OS/2 software, you must  │
  62.   │license this program. You will get a registered version of  │
  63.   │this program for just $399! As a registered user you will   │
  64.   │get any bug-fix (OOPS, upgrade) for just $49. (In           │
  65.   │Deutschland schon ab 998 DM erhältlich, dafür sind die      │
  66.   │Diskettenlabel übersetzt.)                                  │
  67.   └────────────────────────────────────────────────────────────┘
  68.  
  69.   No one has paid any money now... I'm not sure whether this is because no
  70.   bosses use this program ("Well, we're serious men and don't use toy tools like
  71.   this one") or because they don't think their software is expensive ("400$ for
  72.   a text processor is very, very cheap!"). As a consequence I reduce all prices
  73.   to 395$ (incl. shipping!) and 48$ for updates. (Diese Preissenkung gilt nicht
  74.   für Deutschland - Preissenkungen für Software gelten nie für Deutschland ...).
  75.   In addition to the group of people mentioned above the regristration now
  76.   includes all those people that sell one program for DOS, Windows and OS/2
  77.   where the OS/2 version is the most expensive.
  78.  
  79.    All others may use this program free. But: This program is Freeware, not
  80.   Public Domain. You are not allowed to sell it (except in the sense of
  81.   Freeware/Shareware). It has still my copyright. (This includes all parts of
  82.   the program including the description language Fool :-)  )
  83.  
  84.   I am very interested in your comments. Please tell me if you have any ideas
  85.   for a future release, if you like or don't like parts of the program. I
  86.   learned a lot from the comments about v1.0
  87.  
  88.   Please send a postcard, letter or e-mail to  
  89.   ┌────────────────────────────────┐
  90.   │ Felix von Normann              │
  91.   │ Innstr.82                      │
  92.   │ 94036 Passau                   │
  93.   │ Germany                        │
  94.   │ normann@kirk.fmi.uni-passau.de │
  95.   └────────────────────────────────┘
  96.  
  97.   Thanks a lot!!!
  98.  
  99.    Dedications  6/2 
  100.  
  101.   ┌────────────────────────────────┐
  102.   │This software is dedicated to my│
  103.   │monitor, which died at work due │
  104.   │to long, long hours on          │
  105.   │programming FeelX.              │
  106.   └────────────────────────────────┘
  107.  
  108.    First steps & Installing FeelX  7/1+
  109.  
  110.   Read this chapter to get informations about how FeelX has to be installed.
  111.  
  112.    Quick Start: Trying out FeelX  8/2 
  113.  
  114.   If you are a user of FeelX v1.0 or v1.1 you must first remove FeelX from your
  115.   Start-up folder (or startup.cmd) and reboot. FeelX does not work if parts of
  116.   FeelX v1.0 or v.1.1 are still in memory. It is also necessary uninstall the
  117.   previous version from the WPS. Because it may happen that the DLL is not freed
  118.   (I think that's not my fault), reboot is absolutly necessary.
  119.  
  120.   Make the FeelX directory the current directory.
  121.  
  122.   Start FeelX by typing: feelx. Or - if FeelX is in your PATH click here to
  123.   start FeelX.
  124.  
  125.   Now move your mouse around. You'll see that every window where is mouse points
  126.   to is active. Try to click with the right mouse button on a shell or the title
  127.   bar of a program. A menu pops up. You can freely configure these menus. Try to
  128.   move a window with the right mouse button (OS/2 2.1 only). Try to mark a text
  129.   in a shell by pressing the left button, move the mouse while the button is
  130.   pressed. Copy the text into the clipboard by releasing the button. Paste a
  131.   text from the clipboard by a double-click with the left mouse-button. If you
  132.   don't like this feature you can simply configure it.
  133.  
  134.   If you like the program consider if you want to install FeelX permanently. It
  135.   is very recommended to install a WPS object too.
  136.  
  137.    Installing FeelX  9/2 
  138.  
  139.   Topics:
  140.   Overview
  141.   Uninstall v1.0
  142.   Uninstall v1.1
  143.   Install v1.1
  144.   Install (create) the WPS object
  145.   Start FeelX from the WPS
  146.   FeelX as a WPS replacement
  147.   Delete unnecessary Files
  148.    
  149.    Overview.  10/2 
  150.  
  151.   To install FeelX please follow these steps
  152.   (in these order - or unpredictable results will occur).
  153.  
  154.   ┌─────────────────────────────┐
  155.   │    Uninstall FeelX v1.0     │
  156.   │    Uninstall FeelX v1.1     │
  157.   │     (if you are a user      │
  158.   │       of v1.0/v.1.1)        │
  159.   └─────────────────────────────┘
  160.   ╔═════════════════════════════╗
  161.   ║     Install FeelX v1.1a      ║
  162.   ╚═════════════════════════════╝
  163.   ╔═════════════════════════════╗
  164.   ║ Install the WPS object      ║
  165.   ║ (optional - but recommended ║
  166.   ╚═════════════════════════════╝
  167.   ╔═════════════════════════════╗
  168.   ║  autostart FeelX            ║
  169.   ║   - from the WPS            ║
  170.   ║   - as a WPS replacement    ║
  171.   ╚═════════════════════════════╝
  172.   ╔═════════════════════════════╗
  173.   ║  delete unnecessary files   ║
  174.   ╚═════════════════════════════╝
  175.  
  176.   I got a lot of critics for my installation program in the last version. The
  177.   problem was that many people expected the program to do something that it was
  178.   not able to do.
  179.  
  180.   As a consequence I decided either to make the installation very rudimentary to
  181.   avoid misunderstandings or to create a automatic PM driven install-program.
  182.  
  183.   Unfortunately I don't have enough time now to create a real installation
  184.   program. (Corrupted config.sys files are not very funny). If there is any need
  185.   for a next release I'll try to work on an easier-to-use installation procedure
  186.   now. I'm really sorry about that but installing FeelX isn't the difficult!
  187.  
  188.    Uninstall FeelX v1.0.  11/2 
  189.  
  190.   Do NOT use this uninstallation procedure for any other FeelX version than
  191.   1.0!!!
  192.  
  193.    1. run uninst10 to unreplace the mouse object (Do NOT delete the mouse
  194.       object!)
  195.  
  196.    2. remove feelx (and popuppm) from your start-up folder
  197.  
  198.    3. reboot (!!!!)
  199.  
  200.    4. save old version to diskettes (?)
  201.  
  202.    5. delete old v1.0 files
  203.  
  204.   You MUST delete all FeelX v1.0 files. Both versions are completly
  205.   incompatibel!  
  206.  
  207.    Uninstall FeelX v1.1.  12/2 
  208.  
  209.   Do NOT use this uninstallation procedure for any other FeelX version than
  210.   1.1/1.1a!!!
  211.  
  212.    1. Delete the FeelX object by moving it into the shredder
  213.  
  214.    2. run uninstal to unregister the DLL. (If you do not follow this step you
  215.       cannot delete the DLL)
  216.  
  217.    3. remove feelx from your start-up folder (if there).
  218.  
  219.    4. reboot (!!!!)
  220.  
  221.    5. save old version to diskettes (?)
  222.  
  223.    6. delete old v1.1 files
  224.  
  225.   Do not mix FeelX v1.1 and FeelX 1.1a files.  
  226.  
  227.    How to install FeelX v1.1a.  13/2 
  228.  
  229.    1. Copy all files into the FeelX directory. (If you are a programmer you can
  230.       also copy the API-Subdirectory - but this is not necessary)
  231.  
  232.    2. Edit your config.sys:
  233.     
  234.      o Add the FeelX path to the PATH variable
  235.     
  236.      o Add the FeelX path to the LIBPATH variable
  237.     
  238.      o Add the FeelX path to the BOOKSHELF variable
  239.  
  240.   If you have a 486 or Pentium, rename feelx586.dll to feelxdll.dll. Don't
  241.   delete feelxdll.dll, because the Pentium-DLL as not been tested very much.
  242.  
  243.    Creating a WPS object.  14/2 
  244.  
  245.    1. Make sure that you have done all steps before.
  246.  
  247.    2. Start FeelX.
  248.  
  249.    3. start instwps and follow the instructions
  250.  
  251.   In opposite to the previous version of FeelX this version does not overload
  252.   the mouse object. Instead a new object is created in the desktop. You can move
  253.   it to a nice place on the desktop or "hide" in any folder (e.g. the system
  254.   configuration folder).
  255.  
  256.    Start FeelX from the WPS.  15/2 
  257.  
  258.   Note: If may be sufficient to have the WPS object of FeelX installed and
  259.   started. The Workplace shell restarts all objects that are not closed on last
  260.   shutdown. This depends on config.sys file. If your system restarts the FeelX
  261.   object (just reboot to see) you don't need to follow the installation below.
  262.  
  263.   Create a shadow of the FeelX object and move it into the startup folder:
  264.  
  265.    1. open the start-up folder (you'll find it in the OS/2 system folder).
  266.  
  267.    2. start wpopen
  268.  
  269.    3. look for the feelx.exe icon
  270.  
  271.    4. press Ctrl-Shift
  272.  
  273.    5.      "grab" the FeelX object with the right mouse button
  274.  
  275.    6.      move the object (its shadow!) into the startup folder
  276.  
  277.    7. Release Ctrl-Shift
  278.  
  279.   You can also create a shadow of the previously created WPS object in the
  280.   startup folder. This has the (dis)advantage that FeelX will be listed in your
  281.   window list.
  282.  
  283.   Per default FeelX loads feelx.go. You can also specify any other filename for
  284.   a valid description file.
  285.  
  286.    Using FeelX as a WPS replacement.  16/2 
  287.  
  288.   Edit your config.sys:
  289.  
  290.   SET RUNWORKPLACE=c:\FEELX\FEELX.EXE
  291.  
  292.   Of course you must take the path of your FeelX directory
  293.  
  294.   FeelX will be started with the file nowps.go. There is no way to change this
  295.   name.
  296.  
  297.   You can also use a shell as a replacement of the WPS and start FeelX from the
  298.   file startup.cmd.
  299.  
  300.    Deleting unnecessary files.  17/2 
  301.  
  302.   If FeelX takes too much space on your hard drive consider deleting the
  303.   following files.
  304.  
  305.    1. readme, changes, ...
  306.  
  307.    2. the subdirectory API
  308.  
  309.    3. all unneeded tools (they are explained in this documentation)
  310.  
  311.    4. this documentation
  312.  
  313.    5. feelxpix.dll
  314.  
  315.   The minimal set of files is:
  316.  
  317.   o FeelX.exe and FeelXDLL.dll
  318.  
  319.   o WPFeelX.dll if you installed the WPS object
  320.  
  321.   o FeelX.go (nowps.go) and toolbox.inc if you need menus, etc.
  322.  
  323.    Is FeelX too large?  18/2 
  324.  
  325.    I dont't think so.  19/2 
  326.  
  327.   There were some people asking if there is a tiny version of FeelX available.
  328.  
  329.   I'm not sure whether there is a real need for it. I tried hard to make the
  330.   program smaller and tighter. Functions are grouped into segments to optimize
  331.   loading of code.
  332.  
  333.   As far as I know OS/2 is smart enough to load only those parts of the program
  334.   that are needed. If OS/2 runs out of memory unneeded code is deleted.
  335.  
  336.   I admit that FeelX currently needs a lot of memory when starting. FeelX is not
  337.   intended to be used on 4 MB - machines. All data that is not referenced should
  338.   be swapped out when OS/2 runs out out memory. It is swapped in again, when it
  339.   is referenced (e.g. by selecting a menu item).
  340.  
  341.   If you're sure that you will never need menus delete the feelx.go file. Then
  342.   FeelX takes about that space that a tiny version would consume.
  343.  
  344.   Another question is, if FeelX is too slow. If takes some time when FeelX is
  345.   loaded until all data structures are initialized. This is done by a second
  346.   thread so the system does not halt while parsing the feelx.go file.
  347.  
  348.   This is a "start-up-problem" only. The run-time-performance is not affected,
  349.   no matter how complex your feelx.go file is.
  350.  
  351.   I'm sure many users are very angry about the bitmaps in my dialogs because:
  352.  
  353.   o They (the bitmaps ;-) ) are ugly
  354.  
  355.   o Serious people don't like kidding
  356.  
  357.   o They waste file space
  358.  
  359.   If don't like my pictures (ooooh...) you can simply delete the file
  360.   feelxpix.dll. The functionality of the program does not decrease.
  361.  
  362.   If you just want to turn off Minnie on program-start you don't need to delete
  363.   feelxpix.dll. Just type: fxopt minnie:off save
  364.  
  365.    Uninstalling FeelX  20/2 
  366.  
  367.   If you don't like FeelX you can simply uninstall FeelX:
  368.  
  369.    1. delete all (FeelX-)shadows from your startup folder
  370.  
  371.    2. restore your config.sys file
  372.  
  373.    3. delete the FeelX object
  374.  
  375.    4. start uninstal
  376.  
  377.    5. reboot (!!!)
  378.  
  379.    6. delete all files from your FeelX directory
  380.    
  381.    Using FeelX  21/1+
  382.  
  383.   This chapter describes how to use FeelX and points out the differences between
  384.   Standard OS/2 and FeelX.
  385.  
  386.    Using the mouse  22/2+
  387.  
  388.   The main difference between Standard-OS/2 and FeelX is the mouse behaviour.  
  389.  
  390.    Sliding focus  23/3 
  391.  
  392.   With standard OS/2 the active window must be on the top of the desktop. It is
  393.   impossible to type in something to a window that is only partial visible.
  394.  
  395.   Example:
  396.  
  397.   In the above sample screen shot you cannot type directly into the blue window.
  398.   You must move the mouse on it and then explicitly click on window. This brings
  399.   the blue window into the front (and therefore main parts of the white window
  400.   are not visible any longer).
  401.  
  402.   With FeelX (assuming you have turned the sliding focus feature on - which is
  403.   the default) you just move the mouse on the blue window. The window is still
  404.   in the background but you can type in your text there. The white window is
  405.   still fully visible.
  406.  
  407.   To bring the window into the front simply click somewhere on its contents.
  408.  
  409.   As long as you press Ctrl this feature is off while moving the mouse.
  410.  
  411.   You have a lot of options to change the way FeelX is working. You can specify
  412.   wether you want to activate windows only or you want to activate pushbuttons,
  413.   entry field...
  414.  
  415.   Per default FeelX is off when the window list is active. This feature can be
  416.   turned off.
  417.  
  418.   You can decide wether the menus should disappear when the mouse mouse (more
  419.   similar to real X) or not.
  420.  
  421.   All features are difficult to explain. Just install the WPS-object and change
  422.   all parameters live  
  423.  
  424.    Let the mouse pointer disappear  24/3 
  425.  
  426.   Did you ever had the problem that the mouse pointer hides an important part of
  427.   the window?
  428.  
  429.   The mouse pointer is so small - but according to Murphy's law it is always in
  430.   the way. With FeelX you can hide the mouse pointer after a specific amount of
  431.   time.
  432.  
  433.   Use FxOpt.exe or the WPS-Object to set a pointer timeout value. Per default
  434.   this option is off. Assume you chose 10 seconds. If you do not move the mouse
  435.   for 10 seconds the mouse pointer disappears. It will become visible as soon as
  436.   you move the mouse again.
  437.  
  438.   The mouse pointer will not disappear when you press one of its buttons. So you
  439.   can still work (e.g. Drag&Drop) as precise as before.
  440.  
  441.   If you ever have the problem that the mouse pointer is hidden and does not
  442.   become visible again, just load the system editor e.exe. This brings the
  443.   pointer back.  
  444.  
  445.    Changing the Z-Order of windows  25/3 
  446.  
  447.   If you have a 3-button mouse (& driver) you can change the z-order of a window
  448.   by pressing the 3rd mouse button (the middle one for OS/2 2.1) on a title bar.
  449.   If it is partly invisible FeelX brings it to the front otherwise FeelX pushes
  450.   it back.
  451.  
  452.    Positioning windows  26/3 
  453.  
  454.   The following picture is the upper left part of a window:
  455.  
  456.   Imagine that the system menu is divided into 4 quadrants: If you click with
  457.   the right mouse button on the upper left corner of the system menu the whole
  458.   window will be pushed to the upper left corner of the desktop.
  459.  
  460.   If you click with the 3rd button anywhere on the system menu the whole window
  461.   will be centered.
  462.  
  463.    Displaying WPS-Settings  27/3 
  464.  
  465.   To display the Settings of a Workplace Shell object double-click on the object
  466.   with the 3rd mouse button.
  467.  
  468.   This function only simulates keystrokes. It will open that view that first
  469.   appears in the open section. I don't know any WPS program where this is not
  470.   the Settings view.
  471.  
  472.    Moving a window with it's contents  28/3 
  473.  
  474.   With OS/2 2.1 and FeelX you can move the window with it's contents (not just
  475.   the frame). This is done by moving it with the right mouse button. You can
  476.   also move a window by grabbing it at it's frame. This can be useful if a
  477.   window does not have a titlebar.
  478.  
  479.   If you press the left Ctrl key the window is not brought into the front before
  480.   starting to move.
  481.  
  482.   Currently you cannot move Message boxes and dialog boxes!
  483.  
  484.    Using seamless windows  29/3 
  485.  
  486.   FeelX does not work with seamless windows programs and turns itself off when
  487.   the mouse pointer is on a seamless window program.
  488.  
  489.   Because of a technical restriction it is necessary to pop up a seamless window
  490.   program when it becomes active.
  491.  
  492.   You don't have a FeelX menu with a seamless window program.
  493.  
  494.   If you minimize a seamless window to the desktop you cannot you cannot access
  495.   its menu (thanks Sven, I didn't notice that). Press Ctrl while moving the
  496.   mouse on the cursor
  497.  
  498.    Using the Keybord  30/2+
  499.  
  500.   This chapter describes the differences between Standard OS/2 and FeeX.
  501.  
  502.    Changing the Z-Order of windows  31/3 
  503.  
  504.   With the standard description file (feelx.go) Ctrl-Shift-PgUp pops up a window
  505.   while Ctrl-Shift-PgDn pushes it into the background. As opposite to FeelX v1.0
  506.   this now works for shells too.
  507.  
  508.    About hotkeys  32/3 
  509.  
  510.   Some FeelX functions allow you to assign a hotkey. You can use this hotkey by
  511.   pressing it together with Ctrl and Shift. This does currently work only for
  512.   the PM sessions. You cannot use a hotkey in a fullscreen (DOS or OS/2) session
  513.   (now).
  514.  
  515.   For version 1.1a you can change this default hotkey combination to any
  516.   Ctrl-Shift-Alt combination with the WPS object or fxopt hflags:[csa]
  517.  
  518.   There is a way to activate hotkeys from Fullscreen sessions also. This feature
  519.   is not default and it is recommended not to use it when FeelX is a WPS
  520.   replacement.
  521.  
  522.    Quick marking in shells  33/2 
  523.  
  524.   FeelX supports an easy way of marking in a shell (=text window, =VIO-shell)
  525.  
  526.   To cut and paste a text with standard OS/2 you must select mark in the system
  527.   menu. Then mark the text and select copy. For pasting you must select insert.
  528.  
  529.   With FeelX just press the left button (and hold it) and start to move the
  530.   mouse. The text will be marked. It is copied to the clipboard as soon as you
  531.   release the mouse button. For pasting double-click with the left button.
  532.   You'll see that it's very easy (and much easier than in FeelX v1.0).
  533.  
  534.   If your program uses mouse button 1 there might occur problems of course.
  535.   There is a high degree of configurability. You can select any of the 3 mouse
  536.   buttons with any shift combination. If you select a shift combination you must
  537.   press exactly this combination.
  538.  
  539.   You can define different button/shift combinations for cut and for paste.
  540.  
  541.   There is one additional feature called alternate marking. Assume you want to
  542.   cut & paste with button 1 and no shift modifier because you're using 98% OS/2
  543.   programs that do not need mouse button1. But you have exactly one Dos
  544.   application that needs button1. Sometimes you (must) use this Dos application
  545.   and you want use the cut & paste feature there too. Without the alternate
  546.   marking feature you would be forced either to select an uncomfortable global
  547.   setting (e.g. button 1 and Ctrl-key) or you must change the combination every
  548.   time the Dos program is started.
  549.  
  550.   With FeelX you have the ability to specify a second cut & paste combination.
  551.   (This is per default button 1 and shift). When the Dos-Session is started you
  552.   can mark this session as such a alternate cut & paste session by selecting Alt
  553.   Cut&Paste from your FeelX menu (single
  554.   click-right-mouse-button-titlebar-menu). Now you can mark text and paste text
  555.   with the alternative second combination (i.e. with shift). All other window
  556.   still have the primary combination (i.e. button 1 without shift).
  557.  
  558.   You can automate this by starting fxopt altcutpaste:on. This can be done from
  559.   a batch file. You can start FxOpt from any OS/2 an Dos(!) session.
  560.  
  561.   Per default FeelX deletes the CR/LF at the end of a string. You can switch off
  562.   this feature with the WPS object and FxOpt.
  563.  
  564.   Don't worry if you accidently move your mouse while pressing mouse button 1.
  565.   You must mark the text for at least 1/3 second or it will not be copied into
  566.   the clipboard. This prevents the clipboard from unintended deletion.
  567.  
  568.   This text might be a little confusing, but in realitiy cut & paste is very
  569.   easy when using FeelX.
  570.  
  571.    Using the standard configuration  34/2 
  572.  
  573.   Topics:
  574.  
  575.   Overview
  576.   FeelX
  577.   Shell
  578.   Desktop
  579.   Actionbar
  580.   Hotkeys
  581.    
  582.    Overview.  35/2 
  583.  
  584.   The following menus are currently defined:
  585.   ┌──────────┬────────────────────────────────────────┐
  586.   │FeelX     │Click with the 2nd (right) mouse botton │
  587.   │          │on a title bar                          │
  588.   ├──────────┼────────────────────────────────────────┤
  589.   │Shell     │Click with the 2nd (right) mouse button │
  590.   │          │on a shell.                             │
  591.   ├──────────┼────────────────────────────────────────┤
  592.   │Desktop   │Click with the left mouse button on the │
  593.   │          │desktop or double-click with the 3rd    │
  594.   │          │(middle) mouse button on the desktop.   │
  595.   ├──────────┼────────────────────────────────────────┤
  596.   │Actionbar │Make the actionbar visible with the     │
  597.   │          │desktop menu or modify the feelx.go file│
  598.   │          │to have it visible from the beginning.  │
  599.   ├──────────┼────────────────────────────────────────┤
  600.   │Hotkeys   │Hotkeys are key combinations with       │
  601.   │          │Ctrl-Shift                              │
  602.   └──────────┴────────────────────────────────────────┘
  603.    
  604.    Hotkeys.  36/2 
  605.  
  606.   There are currently only two Hotkeys defined: Ctrl-Shift-PgUp moves the active
  607.   window into the foreground, Ctrl-Shift-PgDn moves it into the background.
  608.  
  609.    FeelX  37/2 
  610.  
  611.   You can activate this menu by clicking with (right) mouse button 2 on a
  612.   titlebar.
  613.  
  614.   The FeelX entry allows you to turn on and of the Sliding focus and Cut & Paste
  615.   for Shells. This is a global action.
  616.  
  617.   The second entry allows you to switch to the alternate Cut & Paste keys. This
  618.   is valid only for the associated window.
  619.  
  620.   The window menu allows you to change the Z-order of a window. Per defult the
  621.   window is brought to the background. You may also specify a submenu item to
  622.   move the whole program (not just the window) into the background or into the
  623.   foreground.
  624.  
  625.   The Add menu item adds this window to the quick switch list.
  626.  
  627.   In the default settings file the quick switch list is only displayed, when it
  628.   is not empty.
  629.  
  630.   Use Shell to start a new OS/2 shell. Attention: This process is started as a
  631.   child process. Therefore it will be killed without warning when FeelX is
  632.   terminating.
  633.  
  634.   Redraw may be useful when a program has a bug and does not redraw itself. (The
  635.   window displays only garbage).
  636.  
  637.   Always top should be used with care! You should use this function rarely. It
  638.   forces a window to be displayed at the top. Other windows cannot overlap this
  639.   one.
  640.  
  641.   Hotkey is an interesting feature. When you choose this item the Hotkey dialog
  642.   appears. You can now type in any character (e.g. k). Ctrl-Shift-k would then
  643.   pop up the window, no matter whether it is minimized, hidden or in the
  644.   background.
  645.  
  646.    Test It!  38/2 
  647.  
  648.   Test If FeelX is already running (and in the path) click here to to show the
  649.   menu!
  650.  
  651.   (End the menu with ESC)
  652.  
  653.    Screen Shot  39/2 
  654.  
  655.    Shell  40/2 
  656.  
  657.   Description
  658.  
  659.   To display the shell menu click with the right mouse button on a shell.
  660.  
  661.   cd .. and dir simulate key entrys.
  662.  
  663.   Font allows you to switch to a small or the default font. Default is the small
  664.   font.
  665.  
  666.   With open folder a WPS folder of the current path is opened.
  667.  
  668.   Exit is a quick way to leave a shell. For OS/2 2.1 the shell is not left
  669.   immediatly. The system waits until all child processes are closed.
  670.  
  671.    Test It!  41/2 
  672.  
  673.   Test If FeelX is already running (and in the path) click here to to show the
  674.   menu!
  675.  
  676.   (End the menu with ESC)
  677.  
  678.    Screen Shot  42/2 
  679.  
  680.    Desktop  43/2 
  681.  
  682.   Description
  683.  
  684.   To get the Desktop menu double-click with the left mouse button on the
  685.   desktop. (You may also click with the middle mouse button on the desktop if
  686.   you have a 3-button-mouse-(driver)).
  687.  
  688.   Per default FeelX defines an actionbar for the WPS. This is hidden on
  689.   start-up. Display this actionbar with the first menu item.
  690.  
  691.   The Config menu lets you change different aspects of FeelX. An interessting
  692.   one maybe change opt. Copy a string into a clipboard that is recognized by
  693.   fxopt. E.g. off or pdbflags:on When you select change opt. Fxopt is started
  694.   with the clipboard as the parameter. This allows you to control FeelX via Cut
  695.   & Paste.
  696.  
  697.   Shell simply opens a shell.
  698.  
  699.   Tools is a Tools menu containing the clipboard, Calculator, Clock, and Font
  700.   and Color Palette. These are all OS/2 tools. In addition it provides PM-Kill
  701.   for visual killing of programs, wo (a fault-tolerant search for programs) and
  702.   ReXX. ReXX uses the Clipboard as the entry, interprets it as a ReXX string and
  703.   displays the output (result) in a PM viewer.
  704.  
  705.   Help contains Help about FeelX. The second point uses the clipboard as the
  706.   entry. Thsi maybe useful when programming FeelX. Mark the keyword (e.g.
  707.   pmkill) and select Help/FeelX Help about pmkill. The docs appear.
  708.  
  709.    Test It!  44/2 
  710.  
  711.   Test If FeelX is already running (and in the path) click here to to show the
  712.   menu!
  713.  
  714.   (End the menu with ESC)
  715.  
  716.    Screen Shot  45/2 
  717.  
  718.    Actionbar  46/2 
  719.  
  720.   Description
  721.  
  722.   The standard Actionbar is similar to the Desktop. The Actionbar is initially
  723.   hidden. You can make it visible by activating the Desktop menu and choosing
  724.   hide actionbar.
  725.  
  726.    Test It!  47/2 
  727.  
  728.   Test If FeelX is already running (and in the path) click here to to show the
  729.   default Actionbar!
  730.  
  731.    Screen Shot  48/2 
  732.  
  733.    Configuring FeelX  49/1+
  734.  
  735.   This chapter explains how to configure FeelX.  
  736.  
  737.    About configuration  50/2 
  738.  
  739.   The aim of a configuration is to adapt the look and feel of FeelX to one's own
  740.   preferences.
  741.  
  742.   Therefore configuration is implict and naturally divided into two parts:
  743.  
  744.    1. The "Look": The menu structure. This is done by programming FeelX. Change
  745.       the FeelX.go file.
  746.  
  747.    2. The "Feel": This is the way how to mark in a shell, whether sliding focus
  748.       is on or off. This is done by Fxopt or the WPS object
  749.  
  750.    Using FxOpt  51/2 
  751.  
  752.   Fxopt can be used to configure FeelX if you did not install the WPS object. It
  753.   can also be used to configure FeelX from a batch file or to change parameters
  754.   from a batch file.
  755.  
  756.   Start fxopt without parameters to query and list the current settings.
  757.  
  758.   Start fxopt -? to display all supported parameters of fxopt.
  759.  
  760.   Now configure FeelX while FeelX is running. E.g you can start fxopt mark:2
  761.  
  762.   If you are satisfied with the settings save the options to the os2.ini by
  763.   starting feelx save. The next time FeelX is loaded it will start with these
  764.   parameters.
  765.  
  766.   See fxopt.exe in the additional program section.  
  767.  
  768.    Using the WPS object  52/2+
  769.  
  770.   If you install the FeelX-object you'll get a new object on the desktop of your
  771.   workplace shell. Double-click on the object to start FeelX (FeelX must be in
  772.   the path then!). Open the Settings (Open/Settings or double-click with button
  773.   three) to get the notebook where you can easily change the configuration.
  774.  
  775.   Please note the FeelX and the Workplace-Shell are two completly different
  776.   processes. You can modify a running FeelX without having it started per
  777.   double-click. When FeelX crashes the Workplace-Shell is still stable and
  778.   vice-versa.
  779.  
  780.   If you are not sure wether to start it per double-click directly: When the WPS
  781.   object is open it adds itself into the windowlist. This is not true when the
  782.   program is started directly.
  783.  
  784.   The WPS object has one additional feature that is difficult to notice. As long
  785.   as FeelX does not have a "real" GUI it is programmed via a small description
  786.   language. If you want to start WPS objects, you can do that. You need a handle
  787.   fow that object. As far as I know it is not possible to get that handle from
  788.   any other the the WPS process (or any DLL that runs in its contents).
  789.   Therefore it is difficult for FeelX.exe to get the right handle. But the WPS
  790.   object is a real WPS application.
  791.  
  792.   The solution is: Drop your WPS object over the FeelX object. It seems that
  793.   nothing happens, but this isn't true. The handle of the object is written in
  794.   the clipboard. Edit your Feelx.go file and and the line e.g. ...:object [
  795.   entry="...", handle=xxxx ] where xxx is the contents of the clipboard.
  796.  
  797.   Try to go deeper in the description language. In this way (I don't think it's
  798.   a good way, but it's practical) you start objects menu or even per hotkey.
  799.  
  800.    Page 1  53/3 
  801.  
  802.   Sliding focus: The feature that every window where the mouse points to is
  803.   active.
  804.  
  805.   activate all controls: If turned on - even scrollbars and pushbuttons receive
  806.   the focus. I prefer this setting (therefore it's the default). If you have
  807.   problems with flickering windows turn this feature off.
  808.  
  809.   static menus If this is on, the pull-down menus do not disappear when the
  810.   mouse moves over the title bar. If this control is off the program behaves the
  811.   same way than FeelX v1.0 and much more similar to X.
  812.  
  813.   pop up menu: This is one of the rarely used 3-state-buttons. With a checkmark,
  814.   windows are always brought into the front when you move the mouse pointer on
  815.   them. When the control is dark windows pop up when you press shift while
  816.   moving the mouse pointer. Turning this feature off means not to pop up windows
  817.   because of moving the mouse pointer.
  818.  
  819.    Page 2  54/3 
  820.  
  821.   quick marking in VIO shells: Turn cut & paste in VIO shells on or off.
  822.  
  823.   strip CR/LF:Use this feature to cut of CR/LF which is normally added by OS/2
  824.   when you mark in a OS/2 shell.
  825.  
  826.   hide mouse pointer: Use this feature to hide the mouse pointer after a
  827.   specific time when the mouse is not used. Also specify a time-out value in
  828.   seconds.
  829.  
  830.    Page 3  55/3 
  831.  
  832.   persistent window list: Turn FeelX off when the window list ist active.
  833.  
  834.   show Minnie on start-up: Use this control to disable the image of Minnie when
  835.   the program is started.
  836.  
  837.   pop up folder: When off you cannot bring a folder into the foreground when you
  838.   click on its contents
  839.  
  840.    Page 4  56/3 
  841.  
  842.   Mark button: Specify a marking button.
  843.  
  844.   Mark shift flags: Specify  marking shift flags.
  845.  
  846.   alternate mark shift flags: Specify an alternate shift combination.
  847.  
  848.   Refer to marking in shells for more information.
  849.  
  850.    Page 5  57/3 
  851.  
  852.   Paste button: Specify a paste button. You can also specify whether pasting is
  853.   done on single-click or double-click.
  854.  
  855.   Paste shift flags: Specify paste shift flags.
  856.  
  857.   alternate paste shift flags: Specify an alternate shift combination.
  858.  
  859.   Refer to marking in shells for more information.
  860.  
  861.    Page 6  58/3 
  862.  
  863.   Hotkey combination: Specifiy any combination of shift flags that may work a
  864.   hotkey combination.
  865.  
  866.   Fullscreen hotkeys: If this checkbox is on an FeelX is restarted you can use
  867.   hotkeys from a Fullscreen session also. Do not use this option if FeelX is
  868.   used as a WPS replacement or if you don't want FeelX to operate with a lot of
  869.   threads.
  870.  
  871.    Programming FeelX  59/1+
  872.  
  873.   You can use a simple programming language (called Fool) to define menus or
  874.   actions bound to the Shell menu, the FeelX menu, Hotkeys, ...  FeelX loads the
  875.   file feelx.go (as a WPS replacement: nowps.go). Place your fool statements in
  876.   there. Both files share the file toolbox.inc which is included at the top of
  877.   feelx.go/nowps.go.  
  878.  
  879.    Overview  60/2 
  880.  
  881.   You can program FeelX by using a simple small programming language called
  882.   Fool. Fool stands for "FeelX object oriented language" (And don't think that
  883.   this name is meant ironical considering all those OO PL, UI, word processors,
  884.   graphic programs etc.)  
  885.  
  886.   Since everybody is self-conscious by his own experience, this language is
  887.   bound to my point of view about programming languages. It is not a general
  888.   purpose but specialized description language that is not object oriented but
  889.   has some OO components (I believe). It inherits some of the PM's event driven
  890.   structure. I myself think it offers a natural way to express e.g. the
  891.   structure of menus. Others say it is an unlogical and ugly language that is
  892.   very foolish. Well, they might like the name "Fool"...  
  893.  
  894.   You don't need any programming experience to use this language. Even though
  895.   the language is (relativly) easy to use I admit it is not comparable to a GUI
  896.   for defining menus and actions. I do have a concret vision about a GUI for
  897.   FeelX and it does not have any similarity with the WPS way of defining menus
  898.   and actions. I simply do not have the time to implement and test it at the
  899.   moment. I don't want to make any promises, but I hope Visual Fool will be
  900.   available someday...  
  901.  
  902.    Understanding Fool  61/2 
  903.  
  904.   Introduction
  905.  
  906.   You need to program Fool when you want to change the menu structure or want to
  907.   associate one of the FeelX entry points with an action. For example you might
  908.   want to have a menu when the user clicks with the right button on a Shell. The
  909.   popup menu can look like this:  
  910.  
  911.   Fool= a world of objects
  912.  
  913.   Before we start to define a menu have a look at a Fool program. Programming
  914.   Fool means to define new objects by using other objects. Therefore a Fools
  915.   program means to define a lot of objects. When FeelX is loaded and has read
  916.   your Fool program there is a (smaller or larger) pool of ofjects in memory:
  917.                      ╔══════════════════╗
  918.                      ║ Pool of Objects  ║
  919.                      ╠══════════════════╣
  920.                      ║┌─────┐ ┌────────┐║
  921.                      ║│Shell│ │otherObj│║
  922.                      ║└─────┘ └────────┘║
  923.                      ║┌──────┐┌──────┐  ║
  924.                      ║│MenuLL││MenuLR│  ║
  925.                      ║└──────┘└──────┘  ║
  926.                      ╚══════════════════╝
  927.    
  928.   Help! A click on the Shell
  929.  
  930.   What if the user presses the right button on a shell? It is the job of FeelX
  931.   (in fact its Dll) to notice this. Then FeelX tries to find an object with a
  932.   specific name in the object pool. The name of the object is defined by the
  933.   feelx.exe. There a currently 11 actions FeelX understands and 11 object names
  934.   that FeelX tries to find when such an action takes place. For example if a
  935.   user presses the right button on a shell FeelX looks for an object called
  936.   Shell. This looks like the following:
  937.                      ╔══════════════════╗
  938.                      ║ Pool of Objects  ║
  939.                      ╠══════════════════╣
  940.   ┌─────┐            ║┌─────┐ ┌────────┐║
  941.   │Click│       ┌─────┤Shell│ │otherObj│║
  942.   └──┬──┘       │    ║└─────┘ └────────┘║
  943.      └──────────┘    ║┌──────┐┌──────┐  ║
  944.      FeelX looks for ║│MenuLL││MenuLR│  ║
  945.      object Shell    ║└──────┘└──────┘  ║
  946.                      ╚══════════════════╝
  947.   Please note the the object name is a logical name. It will never appear in any
  948.   menu. It is an unique case-sensitive name for each object that references the
  949.   object in the pool. From a theoretical point of view there is a difference
  950.   between an object and its name. In this small text object is used even if
  951.   object name is meant.  
  952.  
  953.   Making an object alive
  954.  
  955.   If there is no object with the specific name nothing happens and the action is
  956.   simply ignored. What happens if the user defined an object called e.g. Shell?
  957.   We need a more detailed view of the object pool now. Each object is like a
  958.   form where specific data e.g. its name is written down. This may look like the
  959.   followinf:
  960.    ╔═══════════════════════════╗
  961.    ║ Pool of Objects           ║
  962.    ╠═══════════════════════════╣
  963.    ║  ┌──────────────┐         ║
  964.    ║  │ Shell        ├─┐       ║
  965.    ║  ├──────────────┤ │       ║
  966.    ║  │ ┌Type:──────┐├─┤       ║
  967.    ║  │ │menu       ││ │       ║
  968.    ║  │ └───────────┘│ │       ║
  969.    ║  │ ┌Attributes:┐│ │       ║
  970.    ║  │ │attrib1=...││ │       ║
  971.    ║  │ │attrib2=...││ │       ║
  972.    ║  │ └───────────┘│ │       ║
  973.    ║  └┬─────────────┘ │       ║
  974.    ║   └───────────────┘       ║
  975.    ╚═══════════════════════════╝
  976.   FeelX first looks at the type. This is a menu. Therefore a menu will popup as
  977.   soon as the user clicks on a shell. In addition there are some attributes
  978.   described for this object. Attributes for a menu describe which menu items
  979.   this menu should hold.  
  980.  
  981.    Defining objects  62/2 
  982.  
  983.   An object definition has the form:
  984.   object:=type [attributes]
  985.   where object is the name of an object, type is a (pre- or user-) defined type
  986.   and attributes is a (optional list of attributes that are valid for a specific
  987.   type). It is important that object starts on a new line and object, := and
  988.   type are in the same line.  
  989.  
  990.   An attribute is specified by: attrib=dat. To define more than one attribute,
  991.   separate them by comma or start each attribute definition on a new line. You
  992.   can omit the attribute name attrib Then the order of the attributes is
  993.   relevant. See the chapter about predefined types for more information. The
  994.   first column in the attribute section specifies where an attribute must be
  995.   defined so the name can be omitted.
  996.  
  997.   Example:The following definitions are equivalent:
  998.   hello := msgbox [ text="hello, world", headline="hello" ]
  999.   hello := msgbox [ headline="hello", text="hello, world" ]
  1000.   hello := msgbox [ ,"hello, world","hello" ]
  1001.   hello := msgbox [ headline="hello, world",,"hello" ]
  1002.   hello := msgbox [ text="hello, world"
  1003.                          headline="hello" ]
  1004.   (To avoid errors and increase readibility the last form is recommended.)
  1005.  
  1006.   All above examples define an object with the (logical) name hello. You can use
  1007.   an object as a type too. This means replace all attribute definitions with the
  1008.   new ones. E.g. the following two definitions are equivalent :
  1009.   bighello := hello [ headline="HELLO" ]
  1010.   bighello := msgbox [ headline="HELLO", text="hello, world" ]
  1011.  
  1012.   You may also redefine an object in the following way:
  1013.   hello := hello [ headline="HELLO" ]
  1014.   Now hello is the same as bighello.
  1015.  
  1016.   There are two reasons why it is important to define objects:
  1017.  
  1018.    1. If you define an object that acts as an entry point (e.g Shell or MenuLL)
  1019.       you associate a basic PM action with the object action.
  1020.  
  1021.    2. There are some type (e.g. menu) that allow to reference to other objects
  1022.       which should be explained more detailed now.
  1023.  
  1024.   Assume yuo want to define the following menu for a Shell:
  1025.  
  1026.   First you must define the entry point object:
  1027.   Shell := menu [ items=obj_dir;obj_unzip;obj_font;obj_exit;obj_help;obj_search
  1028.   ]
  1029.   The object Shell has now one attribute (the long string). Each item is
  1030.   interpreted as the reference to another object. obj_dir is an object that may
  1031.   be defined somewhere in your file e.g. as: obj_dir:=keyin [ string="dir\n" ].
  1032.   It is not necessary that this object is defined before Shell. If it is never
  1033.   defined, it will simply not appear in your menu.
  1034.  
  1035.   Each object has a default name. Most times you want your menus to have other
  1036.   menu entry to be the default. It is important that the menu does not know
  1037.   anything about names. Instead before the menu pops up it asks each of its
  1038.   objects for its name. So the definition of obj_dir would better be:
  1039.   obj_dir:=keyin [ entry="~dir", string="dir\n" ]. Now the menu entry has the
  1040.   name dir with an underlined d (see sample above). The ~ is a PM notation for
  1041.   an accelerator key for a menu.
  1042.  
  1043.   Please note that Shell is now an object like any other object. So it may
  1044.   appear itself in a menu. E.g: MenuLL:= menu [ items=obj_1;Shell;obj_2 ]. If a
  1045.   menu is part of another menu it is recommended to define the entry-attribute.
  1046.  
  1047.   This way of defining objects would require a lot of text and long description
  1048.   files. So you can define a new object (without a name) in the attribute
  1049.   definition. Example: Shell := menu [ items = keyin [ string = "entry" ] ; /*
  1050.   ... */ ] This is called an anonymous object.
  1051.  
  1052.   Since each type is also an object you can refer to existing types as objects.
  1053.   Example: menu [ items = qlist;pmkill ]. This example uses a reference to the
  1054.   predefined object (type)s qlist and pmkill.  
  1055.  
  1056.    Remark on the language  63/2 
  1057.  
  1058.   The object definition has the form:
  1059.   object : type [ attrib=data]
  1060.  
  1061.   Notes:
  1062.  
  1063.   o object, type, data are case sensitive.
  1064.  
  1065.   o attrib is not case sensitive and fault-tolerant. E.g. Etry would result in
  1066.     entry.
  1067.  
  1068.   o The := must must in the same line like object
  1069.  
  1070.   o Reserved characters ( : := , ; . [ ] " ' ^ < >) must be enclosed with ".."
  1071.     or '...' e.g. name="program.exe". Although this is required only for
  1072.     reserved chars it is recommended to enclose all data
  1073.  
  1074.   o Comments must be enclosed with /* */ or (* *). They cannot be nested.
  1075.  
  1076.   o A comment of the form // ends with the line.
  1077.  
  1078.   o You can terminate an object definition with a period and omit comment
  1079.     embracing with /* */. This is not recommended.
  1080.  
  1081.   o To include a file write: ^filename.ext
  1082.  
  1083.   o The above directive is not allowed in an object definition.
  1084.  
  1085.   o You can reference to objects that are defined later in the text.
  1086.  
  1087.   o When redefining objects, all new attributes replace the old ones. An
  1088.     exception is the attribute item (or items) where the data is appended to the
  1089.     old item-attribute.
  1090.    
  1091.    Reference - Entry points  64/2 
  1092.  
  1093.   There are currently the following entry points defined:
  1094.   MenuLL: The mouse is in the lower left corner.
  1095.   MenuLR: The mouse is in the lower right corner.
  1096.   MenuUL: The mouse is in the upper left corner.
  1097.   MenuUR: The mouse is in the upper right corner.
  1098.   FeelX: The FeelX context menu (right-button-click on a title bar).
  1099.   Shell: The shell context menu (right-button-click on the shell).
  1100.   Shell3: The shell context menu (middle-button-click on the shell).
  1101.   Hotkeys: This reference/object is called whenever a hotkey is pressed.
  1102.   Startup: This reference/object is called once on startup.
  1103.   B1Desktop: A double-click with the left mouse button on the desktop.
  1104.   B2Desktop: A double-click with the right mouse button on the desktop.
  1105.   This does not work as long as the WPS is active!!
  1106.   B3Desktop: A click with the middle mouse button on the desktop.
  1107.    
  1108.   Whenever you define a reference/object in your source file the event (click,
  1109.   corner, ...) is associated with an action. Except for the Hotkeys a menu is
  1110.   most commonly used. But please note that you don't need to to so.  
  1111.  
  1112.    Reference - functions  65/2+
  1113.  
  1114.   The chapter describes the built-in functions of feelx  
  1115.  
  1116.    actionbar  66/3 
  1117.  
  1118.   Function: actionbar
  1119.  
  1120.   Description: This function shows an actionbar at the top (or bottom) of the
  1121.   Desktop.
  1122.  
  1123.   Location: Everywhere
  1124.  
  1125.   Portability: high
  1126.  
  1127.   Examples:
  1128.  
  1129.   o actionbar [ enytry="Action", pos="bottom", item=a;b;c ]
  1130.  
  1131.   Notes:
  1132.  
  1133.   o "Executing" an actionbar means to show the associated desktop window. If you
  1134.     want to have an actionbar from the beginning the right place for this
  1135.     function is Startup. You can also show the actionbar as the result of a menu
  1136.     action. You simply have to add this function to a menu.
  1137.  
  1138.   o You can (currently) have up to 10 different actionbars. (E.g. place them in
  1139.     a menu as different items).
  1140.  
  1141.   o (Currently) There is a limitation with submenus of an actionbar. You should
  1142.     not reference them directly or indirectly. Always use anonymous
  1143.     references/objects.
  1144.  
  1145.   Attributes:
  1146.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1147.   │    │Attribute   │Value          │Explanation                   │Default   │
  1148.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1149.   │  1 │entry       │[text string]  │Name of the menu entry        │Actionbar │
  1150.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1151.   │  2 │pos         │top            │place the actionbar at the top│top       │
  1152.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1153.   │    │            │bottom         │place the actionbar at the    │          │
  1154.   │    │            │               │bottom                        │          │
  1155.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1156.   │  3 │item        │[ref1;ref2]    │see ( menu)                   │          │
  1157.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1158.  
  1159.   See also: menu, hideactionbar, moveactionbar  
  1160.  
  1161.    addmenu  67/3 
  1162.  
  1163.   Function: addmenu
  1164.  
  1165.   Description: Add a menu entry to the quick switch window list
  1166.  
  1167.   Location: FeelX, Shell
  1168.  
  1169.   Portability: high
  1170.  
  1171.   Examples:
  1172.  
  1173.   o addmenu [entry="add to menu"]
  1174.  
  1175.   Notes:
  1176.  
  1177.   o It is currently not supported to delete items from the Quick switch list.
  1178.     Instead they are removed when the window is closed.
  1179.  
  1180.   o The name of the window appears in the switch list. This entry will not
  1181.     change even if the window title changes. This is intended because it makes
  1182.     it easier to organize the quick switch list. As opposite to the "real"
  1183.     window list you can have a list without "just" Command Shell items.
  1184.  
  1185.   Attributes:
  1186.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1187.   │    │Attribute   │Value          │Explanation                   │Default   │
  1188.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1189.   │  1 │entry       │[text string]  │Name of the menu entry        │          │
  1190.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1191.  
  1192.   See also: qswitch  
  1193.  
  1194.    altcutpaste  68/3 
  1195.  
  1196.   Function: altcutpaste
  1197.  
  1198.   Description: Toggle cut and paste to and alternate Shift combination. The
  1199.   standard way to cut and paste may not be useful for every program. Assume you
  1200.   use cut and paste with button x and without any Shift combination. But you
  1201.   have exactly one program where you need button x. Define the alternate shift
  1202.   combination (perhaps with shift) by using fxopt.exe or the WPS object. After
  1203.   you start the program mark the shell with this function. You will see that you
  1204.   can mark with shift only in this shell. All other shells allow marking without
  1205.   shift.
  1206.  
  1207.   Location: Shell, FeelX
  1208.  
  1209.   Portability: high
  1210.  
  1211.   Examples:
  1212.  
  1213.   o altcutpaste[]
  1214.  
  1215.   Attributes:
  1216.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1217.   │    │Attribute   │Value          │Explanation                   │Default   │
  1218.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1219.   │  1 │entry       │[text string]  │Name of the menu entry        │Alt       │
  1220.   │    │            │               │                              │Cut&Paste │
  1221.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1222.    
  1223.    chain  69/3 
  1224.  
  1225.   Function: chain
  1226.  
  1227.   Description: This function lets you activate a series of functions
  1228.  
  1229.   Location: Everywhere
  1230.  
  1231.   Portability: high
  1232.  
  1233.   Examples:
  1234.  
  1235.   o chain [ Special_actionbar;hideactionbar ] Switch to a special actionbar but
  1236.     let it be invisible
  1237.  
  1238.   o chain [ addmenu;winhotkey ] Put the window into the quick switch list and
  1239.     assign a hotkey
  1240.  
  1241.   Attributes:
  1242.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1243.   │    │Attribute   │Value          │Explanation                   │Default   │
  1244.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1245.   │  1 │entry       │[text string]  │Name of the menu entry        │unnnamed  │
  1246.   │    │            │               │                              │chain     │
  1247.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1248.   │  2 │items       │[ref1;ref2]    │This list of                  │          │
  1249.   │    │            │               │references/objects (see menu) │          │
  1250.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1251.   │  4 │update      │true           │update the window handle (e.g.│          │
  1252.   │    │            │               │use clock;top)                │          │
  1253.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1254.   │    │            │false          │do not update the window      │false     │
  1255.   │    │            │               │handle                        │          │
  1256.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1257.   │  5 │delay       │[time]         │Time to wait in ms between two│0         │
  1258.   │    │            │               │chain actions                 │          │
  1259.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1260.  
  1261.   See also: menu  
  1262.  
  1263.    child  70/3 
  1264.  
  1265.   Function: child
  1266.  
  1267.   Description: Break the parent/child connection of windows to be able to move
  1268.   child windows across the whole desktop.
  1269.  
  1270.   Location: FeelX
  1271.  
  1272.   Portability: high
  1273.  
  1274.   Examples:
  1275.  
  1276.   o child []
  1277.  
  1278.   Notes:
  1279.  
  1280.   This is not intended to be used by the presentation manager. Some programs
  1281.   might crash. Be careful!
  1282.  
  1283.   Attributes:
  1284.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1285.   │    │Attribute   │Value          │Explanation                   │Default   │
  1286.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1287.   │  1 │entry       │[text string]  │Name of the menu entry        │Take child│
  1288.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1289.  
  1290.    dll  71/3 
  1291.  
  1292.   Function: dll
  1293.  
  1294.   Description: Starts a DLL-function with some informational parameters
  1295.  
  1296.   Location: Everywhere
  1297.  
  1298.   Portability: high
  1299.  
  1300.   Examples:
  1301.  
  1302.   o dll [ fun=test, dll=testdll ]Start the function test which ist placed in the
  1303.     DLL testdll.
  1304.  
  1305.   o dll [ entry="hello", fun=hello, dll=hellopm, thread=true ]Start the function
  1306.     hello which ist placed in the DLL hellopm. Start the function from a
  1307.     separate thread.
  1308.  
  1309.   Advanced examples:
  1310.  
  1311.   o dll [ entry="Tool", fun=tool, dll=tool, parameter1="abc", parameter2="123" ]
  1312.     Start the function tool in the dll tool. The function can use the parameters
  1313.     parameter1 and parameter2.
  1314.  
  1315.   Notes:
  1316.  
  1317.   o This function is not intended to be used by the novice user. It offers the
  1318.     possibility to integrate your tool seamlessly into FeelX. See advanced
  1319.     topics for more information. If you make this DLL available to other users
  1320.     please make the usage of the DLL as easy as possible (the user can use
  1321.     subclassing).
  1322.  
  1323.   o The (main execution) function has the type (C Set/2 Notation): void _System
  1324.     function(int x, int y, HWND hwnd, HWND frame, int argc, char *args[] char
  1325.     *vals[]) where the parameters do have the following meaning:
  1326.     
  1327.      - x and y are screen-coordinates where the action was called
  1328.     
  1329.      - hwnd is the associated window (this can be the active window [Hotkeys] or
  1330.        a VIO-client(shield) [Shell], a titlebar [FeelX] or the desktop)
  1331.     
  1332.      - frame is the frame window of hwnd
  1333.     
  1334.      - argc ist the number of paramters including fun, dll, thread and all other
  1335.        specified attributes
  1336.     
  1337.      - args and vals are arrays similar to the main function of a C-program.
  1338.        args[i] contains the i.th attribute and vals[i] is the associated
  1339.        paramter. This allows the DLL to parse the parameters before doing some
  1340.        action
  1341.  
  1342.   o You can optionally specify a menu text function with the attribute entryfun.
  1343.     This function has the type void _System function(char *buffer). Where buffer
  1344.     is the place where you can put the string that is displayed instead of the
  1345.     attribute entry. PLEASE NOTE: This buffer has currently only 40 Bytes. Using
  1346.     longer strings result in a crash.
  1347.  
  1348.   o You can optionally specify a menu manipulator function with the attribute
  1349.     menufun. This function has the type void _System (HWND menu, int id) where
  1350.     menu is the menu handle and id is the id of the menu item. This function can
  1351.     be used to disable or check a menuitem.
  1352.  
  1353.   o Currrently FeelX does not support growing stacks. Please do not waste stack
  1354.     space.
  1355.  
  1356.   o Since the DLL runs in the same process then FeelX it may obviously crash the
  1357.     whole program.
  1358.  
  1359.   o The DLL is started during the FeelX message processing. Therefore you should
  1360.     specify thread=true if your function needs too much time to work. The
  1361.     PM-rule says: no message should work more than 0.1 seconds without a second
  1362.     thread. But since this function is not called very often - only if the user
  1363.     selected it - 1 to 2 seconds (on a slow system) may be justified.
  1364.  
  1365.   Attributes:
  1366.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1367.   │    │Attribute   │Value          │Explanation                   │Default   │
  1368.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1369.   │  1 │entry       │[text string]  │Name of the menu entry        │DLL       │
  1370.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1371.   │  2 │dll         │[text string]  │Name DLL                      │          │
  1372.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1373.   │  3 │fun         │[text string]  │Name function (for C++ the    │          │
  1374.   │    │            │               │unmangled name!)              │          │
  1375.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1376.   │  4 │thread      │true           │Start the function from a     │          │
  1377.   │    │            │               │separate thread               │          │
  1378.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1379.   │    │            │false          │Start the function syncron    │false     │
  1380.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1381.   │  5 │menufun     │[text string]  │DLL function that manipulates │[do       │
  1382.   │    │            │               │the menu item (e.g. to disable│nothing]  │
  1383.   │    │            │               │or to check it)               │          │
  1384.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1385.   │  6 │entryfun    │[text string]  │DLL function that manipulates │[entry]   │
  1386.   │    │            │               │the menu entry text           │          │
  1387.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1388.  
  1389.   See also: program  
  1390.  
  1391.    feelx  72/3 
  1392.  
  1393.   Function: feelx
  1394.  
  1395.   Description: Use this function to toggle the status of sliding focus, quick
  1396.   VIO marking, hideing of he mouse pointer
  1397.  
  1398.   Location: Everywhere
  1399.  
  1400.   Portability: high
  1401.  
  1402.   Examples:
  1403.  
  1404.   o feelx [ entry="Sliding Focus", focus=true ]  Use this statement to toggle
  1405.     only the status of the sliding focus.
  1406.  
  1407.   o feelx [ entry="hide & mark", hide=true, cutpaste=true ]  This statement
  1408.     toggles the state of the hide and the cut&paste feature.
  1409.  
  1410.   Notes:
  1411.  
  1412.   o The menu item will be checked if the states of all chosen features is on.
  1413.  
  1414.   o If menu item is checked all chosen features will be turned off when the user
  1415.     clicks on the menu item. Otherwise all items are turned on.
  1416.  
  1417.   o Currently other features cannot be controlled through a menu. If you want to
  1418.     change other values (e.g the timeout-time of the hide-feature or the cut or
  1419.     paste button) use either the fxopt program and program or write a small DLL
  1420.     using the FeelX API and use dll.
  1421.  
  1422.   Attributes:
  1423.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1424.   │    │Attribute   │Value          │Explanation                   │Default   │
  1425.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1426.   │  1 │entry       │[text string]  │Name of the menu entry        │FeelX     │
  1427.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1428.   │  2 │focus       │true           │Toggle Sliding focus status   │          │
  1429.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1430.   │    │            │false          │Do not change sliding focus   │false     │
  1431.   │    │            │               │status                        │          │
  1432.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1433.   │  3 │cutpaste    │true           │Change Cut&Paste feature      │          │
  1434.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1435.   │    │            │false          │Do not change Cut&Paste       │false     │
  1436.   │    │            │               │feature                       │          │
  1437.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1438.   │  4 │hide        │true           │Toggle hide feature status    │          │
  1439.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1440.   │    │            │false          │Do not change hide feature    │false     │
  1441.   │    │            │               │status                        │          │
  1442.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1443.  
  1444.    font  73/3 
  1445.  
  1446.   Function: font
  1447.  
  1448.   Description: Changes the font of a VIO shell.
  1449.  
  1450.   Location: Shell
  1451.  
  1452.   Portability: Dependends on the entries in the font dialog of the VIO shell.
  1453.   Those entries (as far as I know) may vary on different systems (but mostly
  1454.   they don't).
  1455.  
  1456.   Examples:
  1457.  
  1458.   o font [ font="1", entry="small font" ] Changes the font size to 1
  1459.  
  1460.   o font [ 4 ] Changes the font to font size 4
  1461.  
  1462.   Attributes:
  1463.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1464.   │    │Attribute   │Value          │Explanation                   │Default   │
  1465.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1466.   │  1 │font        │[numeric value]│No. of font in the font list  │5         │
  1467.   │    │            │               │box of the font dialog.       │          │
  1468.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1469.   │  2 │entry       │[text string]  │Name of the menu entry        │change    │
  1470.   │    │            │               │                              │font      │
  1471.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1472.    
  1473.    hideactionbar  74/3 
  1474.  
  1475.   Function: hideactionbar
  1476.  
  1477.   Description: Hides the currently active actionbar
  1478.  
  1479.   Location: Everywhere
  1480.  
  1481.   Portability: high
  1482.  
  1483.   Examples:
  1484.  
  1485.   o hideactionbar [ entry="fly away" ]
  1486.  
  1487.   Attributes:
  1488.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1489.   │    │Attribute   │Value          │Explanation                   │Default   │
  1490.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1491.   │  1 │entry       │[text string]  │Name of the menu entry        │hide      │
  1492.   │    │            │               │                              │actionbar │
  1493.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1494.  
  1495.   See also: actionbar, moveactionbar  
  1496.  
  1497.    hotkey  75/3 
  1498.  
  1499.   Function: hotkey
  1500.  
  1501.   Description: Assigns a function to a hotkey. Specify any Hotkey from a-z and
  1502.   1-9, a special char or f1-f12. The associated action is executed when pressing
  1503.   Ctrl-Shift and the hotkey.
  1504.  
  1505.   Location: Hotkeys
  1506.  
  1507.   Portability:
  1508.  
  1509.   o a-z, 0-9, f1-f12 are high portable since they appear on all (most?)
  1510.     keyboards. Special functions (e.g #,+,ö,ä) are not portable. The might not
  1511.     be on other keyboards.
  1512.  
  1513.   o There might be a hardware limitation of the keyboard. Some keyboards do not
  1514.     support all Ctrl-Shift combinations. But I think there will not be any
  1515.     problems.
  1516.  
  1517.   Examples:
  1518.  
  1519.   o hotkey [ a=winlist ] Displays the windowlist when pressing Ctrl-Shift-A
  1520.  
  1521.   Attributes:
  1522.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1523.   │    │Attribute   │Value          │Explanation                   │Default   │
  1524.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1525.   │    │[any char or│[function,     │assign function to the hotkey │          │
  1526.   │    │f1-f12]     │reference      │                              │          │
  1527.   │    │            │(other object)]│                              │          │
  1528.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1529.  
  1530.   See also: winhotkey  
  1531.  
  1532.    keyin  76/3 
  1533.  
  1534.   Function: keyin
  1535.  
  1536.   Description: Simulate a keyboard input
  1537.  
  1538.   Location: FeelX, Shell, Hotkeys (Shells only)
  1539.  
  1540.   Portability: high
  1541.  
  1542.   Examples:
  1543.  
  1544.   o keyin [ string="dir\n", entry="~dir" ]  Simulate dir and enter. In a menu
  1545.     the menu entry will be dir
  1546.  
  1547.   o keyin [ string="%d.%m.19%y" ]  Simulate typing the current date with the
  1548.     format DD.MM.YYYY
  1549.  
  1550.   o keyin [ string="type %c", entry="type %c", maxsize=25 ]  Type in "type"
  1551.     followed by the contents of the clipboard (if there is text). Make sure that
  1552.     the menu entry does not exceed 25 characters.
  1553.  
  1554.   Notes:
  1555.  
  1556.   o You can assign this function to a hotkey. It does not work for PM programs
  1557.     and full screen sessions but it works fine with windowed shells. You can
  1558.     even minimize a shell to the desktop, move the mouse pointer on the icon and
  1559.     press the hotkey. The shell receives the input even if it is minized.  
  1560.  
  1561.   o For DOS-Shells the clipboard is used to keyin a string. Therefore the
  1562.     clipboard data is destroyed after the keyin.
  1563.  
  1564.   Attributes:
  1565.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1566.   │    │Attribute   │Value          │Explanation                   │Default   │
  1567.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1568.   │  1 │string      │[text string]  │Simulate keyin of data        │Nothing   │
  1569.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1570.   │  2 │entry       │[text string]  │Name of the menu entry        │the string│
  1571.   │    │            │               │                              │text      │
  1572.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1573.   │  3 │maxsize     │[numeric value]│Max. no of characters in the  │20        │
  1574.   │    │            │               │menu entry                    │          │
  1575.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1576.  
  1577.   Special characters (Escape sequences):
  1578.  
  1579.   The text specified for the attribute string can contain the following escape
  1580.   sequences:
  1581.  
  1582.   \\   \\
  1583.   \n   Enter (new line)
  1584.   \t   Tab
  1585.   \e   Escape
  1586.   \c   Ctrl-Break
  1587.  
  1588.   %%   %
  1589.   %c   Clipboard contents
  1590.   %d   Day
  1591.   %m   Month
  1592.   %y   Year
  1593.   %h   Hour
  1594.   %n   Minute
  1595.   %s   Second
  1596.    
  1597.    kill  77/3 
  1598.  
  1599.   Function: kill
  1600.  
  1601.   Description: Kill a shell or a program
  1602.  
  1603.   Location: Shell, FeelX, Hotkeys (be careful!)
  1604.  
  1605.   Portability: high
  1606.  
  1607.   Examples:
  1608.  
  1609.   o kill [entry="kill", killchild=true]
  1610.  
  1611.   Notes:
  1612.  
  1613.   There might be a different behaviour on various OS/2 versions. On some systems
  1614.   (2.0) kill terminates the process even if a child is running. On others (2.1)
  1615.   the parent waits for the child to terminate before it can be killed.
  1616.  
  1617.   Attributes:
  1618.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1619.   │    │Attribute   │Value          │Explanation                   │Default   │
  1620.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1621.   │  1 │entry       │[text string]  │Name of the menu entry        │kill      │
  1622.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1623.   │  2 │killchild   │true           │Kill all childs before killing│          │
  1624.   │    │            │               │the specified window          │          │
  1625.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1626.   │    │            │false          │Kill only the specified       │false     │
  1627.   │    │            │               │window.                       │          │
  1628.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1629.  
  1630.   See also: pmkill  
  1631.  
  1632.    menu  78/3 
  1633.  
  1634.   Function: menu
  1635.  
  1636.   Description: Displays a menu (a popup menu or a submenu)
  1637.  
  1638.   Location: Everywhere (in fact this is the entry point function)
  1639.  
  1640.   Portability: high
  1641.  
  1642.   Examples:
  1643.  
  1644.   o menu [entry="submenu", items=a;b;c;-;d ] This statement shows a menu (either
  1645.     a popup menu or a submenu with the name "submenu") It has four items a,b,c,d
  1646.     wich are references (objects) to other functions. There will be a separator
  1647.     between c and d.
  1648.  
  1649.   o menu [ entry="submenu", item=a, item=b;c;-, items=d ] This is exactly the
  1650.     samse.
  1651.  
  1652.   o menu [ entry="...", items=feelx;altcutpaste ] A menu with 2 menuitems. They
  1653.     are the predefined references/objects feelx and altcutpaste.
  1654.  
  1655.   o menu [ items=keyin ["dir"];keyin ["cd.."] ] A menu with two locale
  1656.     definitions of another references (anonymous object). They simulate typing
  1657.     in dir and cd ..
  1658.  
  1659.   o menu [ item=menu [ item=menu [ item=keyin [""] ] ] ] A senseless menu with
  1660.     three submenus.
  1661.  
  1662.   o menu [ entry="menuexample", items=a;*b;c;d ] If this is a popup menu the
  1663.     mouse pointer will point to the default item b. If this is a submenu b is
  1664.     the default item. If the user chooses menuexample in the top level menu b is
  1665.     executed without showing the submenu a,b,c,d.
  1666.  
  1667.   Notes:
  1668.  
  1669.   o This function is the most important. For most entry points (FeelX, Shell,
  1670.     ...) you do not want to have an immediate action. Most times you want to
  1671.     have a popup menu with a list of actions. Use this function to have a popup
  1672.     menu.
  1673.  
  1674.   o Please note: There is no qualitative difference between a menu and a
  1675.     submenu. Wenn a menu is "executed" a popup menu appears. When it is
  1676.     referenced by an other menu (item=...) it's a submenu. One and the same menu
  1677.     can appear as a menu and a submenu
  1678.  
  1679.   o You can associate menus with hotkeys too.
  1680.  
  1681.   o Popup menus look better and are easier to use when they have a default item.
  1682.     So it is recommended to declare a default item (with an asterix) for top
  1683.     level menus.
  1684.  
  1685.   o If the default of a menu is the default of a menu then choosing the default
  1686.     of the toplevel menu will not show the default of the last menu but popup
  1687.     the 3rd menu. This is (an hopfully acceptable) limitation due to the
  1688.     internal structure of FeelX.
  1689.  
  1690.   o Please note that the name of the menuitem does not appear in the menu
  1691.     description. This is part of the reference/object definition. Before the
  1692.     menu appears, all submenu items are "asked" for their menu entry.
  1693.  
  1694.   o Currently circular menu definitions (eg. FeelX:=menu [ item=FeelX ]) are not
  1695.     detected and result in a crash of the program. This is no limitation since
  1696.     such definitions are senseless.
  1697.  
  1698.   Attributes:
  1699.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1700.   │    │Attribute   │Value          │Explanation                   │Default   │
  1701.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1702.   │  1 │entry       │[text string]  │Name of the menu if it appears│unnamed   │
  1703.   │    │            │               │as a submenu                  │menu      │
  1704.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1705.   │  1 │item (or    │[ref1;ref2;ref3│refx are references/objects   │          │
  1706.   │    │items)      │               │that are defined somewhere in │          │
  1707.   │    │            │               │the definition file.          │          │
  1708.   │    │            │               │Undefinded references appear  │          │
  1709.   │    │            │               │as a separator. There may be a│          │
  1710.   │    │            │               │new definition of a           │          │
  1711.   │    │            │               │reference/object instead of   │          │
  1712.   │    │            │               │refx                          │          │
  1713.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1714.  
  1715.   See also: actionbar, chain  
  1716.  
  1717.    minimize  79/3 
  1718.  
  1719.   Function: minimize
  1720.  
  1721.   Description: Changes the mouse pointer to  Whenever you move with the mouse
  1722.   pointer on a window and press button 1 it will be minimized. You can end this
  1723.   mode by clicking on the desktop, the FeelX actionbar or by pressing mouse
  1724.   button 2.
  1725.  
  1726.   Location: Everywhere
  1727.  
  1728.   Portability: high
  1729.  
  1730.   Examples:
  1731.  
  1732.   o minimize [ entry="minimize" ]
  1733.  
  1734.   Attributes:
  1735.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1736.   │    │Attribute   │Value          │Explanation                   │Default   │
  1737.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1738.   │  1 │entry       │[text string]  │Name of the menu entry        │PM -      │
  1739.   │    │            │               │                              │Minimize  │
  1740.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1741.  
  1742.   See also: pmkill  
  1743.  
  1744.    moveactionbar  80/3 
  1745.  
  1746.   Function: moveactionbar
  1747.  
  1748.   Description: Move the active actionbar to top or bottom (depending on where it
  1749.   is now).
  1750.  
  1751.   Location: Everywhere
  1752.  
  1753.   Portability: high
  1754.  
  1755.   Examples:
  1756.  
  1757.   o actionbar[]
  1758.  
  1759.   See also: actionbar, hideactionbar
  1760.  
  1761.    msgbox  81/3 
  1762.  
  1763.   Function: msgbox
  1764.  
  1765.   Description: Display a message box with a specific text
  1766.  
  1767.   Location: Everywhere
  1768.  
  1769.   Portability: high
  1770.  
  1771.   Examples:
  1772.  
  1773.   o msgbox ["Hello", "Hello, world"] This displays a message box with the text
  1774.     'hello, world'
  1775.  
  1776.   o msgbox [ entry="~Oops", text="This function is not supported",
  1777.     headline="UUUUhh"] A similar message box
  1778.  
  1779.   Attributes:
  1780.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1781.   │    │Attribute   │Value          │Explanation                   │Default   │
  1782.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1783.   │  1 │entry       │[text string]  │Name of the menu entry        │message   │
  1784.   │    │            │               │                              │box       │
  1785.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1786.   │  2 │text        │[text string]  │The text of the message box   │          │
  1787.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1788.   │  3 │headline    │[text string]  │The headline of the message   │          │
  1789.   │    │            │               │box                           │          │
  1790.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1791.    
  1792.    mwinlist  82/3 
  1793.  
  1794.   Function: mwinlist
  1795.  
  1796.   Description: The function "mwinlist" (stands for menu-window-list) displays
  1797.   the windowlist in form of a menu. All important (see below) programs are
  1798.   listed in this menu. Each menu item (alias program) has its own submenu. These
  1799.   items are listed below:
  1800.  
  1801.    1. Switch to: This menu item switches to the chose session
  1802.  
  1803.    2. Close: Use this item to close a session. Before the process is killed a
  1804.       message box appears and you are asked if you really want to quit.
  1805.  
  1806.    3. Minimize: Minimize the session with this item
  1807.  
  1808.    4. Maximize: Maximize the session with this item
  1809.  
  1810.    5. Hide: Hide makes a program invisible
  1811.  
  1812.    6. Show: Show a previously hidden program
  1813.  
  1814.    7. Hotkey: Assign a hotkey to this session. This is similar to hotkey and
  1815.       winhotkey Press Ctrl-Shift + the chosen hotkey to switch to the specified
  1816.       session
  1817.  
  1818.   Location: Everywhere, but currently requires to be a submenu item!
  1819.  
  1820.   Portability: high
  1821.  
  1822.   Examples:
  1823.  
  1824.   o mwinlist [ entry="Task switcher" ] This is a simple window list very similar
  1825.     to the real window list
  1826.  
  1827.   o mwinlist [ entry="Special Task switcher", all=true,
  1828.     items="pulse.exe";"Special Tool" ] This statement shows a menu with all
  1829.     sessions including those that do not appear in the window list. The list
  1830.     does not contain programs with the title pulse.exe or Special Tool.
  1831.  
  1832.   Advanced examples:
  1833.  
  1834.   o Hotkeys := hotkey [ /* ... */ esc=mwinlist [ items="OS/2-Shell "] ]
  1835.   Now Ctrl-Shift-Esc displays a special window list as a menu. No program with
  1836.   the name OS/2 Shell will apear.
  1837.  
  1838.   Notes:
  1839.  
  1840.   FeelX itself and the WPS will never appear in this list
  1841.  
  1842.   Attributes:
  1843.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1844.   │    │Attribute   │Value          │Explanation                   │Default   │
  1845.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1846.   │  1 │entry       │[text string]  │Name of the menu entry        │FeelX     │
  1847.   │    │            │               │                              │winlist   │
  1848.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1849.   │  2 │all         │true           │Display all sessions          │          │
  1850.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1851.   │    │            │false          │Display only those sessions   │false     │
  1852.   │    │            │               │that have an entry in the     │          │
  1853.   │    │            │               │window list.                  │          │
  1854.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1855.   │  3 │items       │name1;name2    │list of names of programs that│          │
  1856.   │    │            │               │should not appear in the      │          │
  1857.   │    │            │               │windowlist                    │          │
  1858.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1859.  
  1860.   See also: winlist  
  1861.  
  1862.    object  83/3 
  1863.  
  1864.   Function:object
  1865.  
  1866.   Description: Opens a WPS object
  1867.  
  1868.   Location: Everywhere
  1869.  
  1870.   Portability:
  1871.  
  1872.   o The object attribute is for standard objects very portable.
  1873.  
  1874.   o The handle attribute may differ between maschines. It is persistent during
  1875.     IPL.
  1876.  
  1877.   Examples:
  1878.  
  1879.   o object [ entry="Configure", object="WP_CONFIG" ] This opens the System
  1880.     configuration folder (works on all systems).
  1881.  
  1882.   o object [ entry="MyObject", object="20943" ] Opens an object with the
  1883.     internal handle 20943. This is not the name. This is not portable.
  1884.  
  1885.   Notes:
  1886.  
  1887.   o There are tools that can assign all objects a specific name. You can use
  1888.     this name in the attribute object. This may be useful if you want to have
  1889.     the same installation on different machines. The object handle differs even
  1890.     if the installation looks the same on 2 machines.
  1891.  
  1892.   o After reinstall of OS/2 or a complete back-up the object handle might be
  1893.     invalid.
  1894.  
  1895.   o You can use the FeelX object to get handle. Drag a specific object over the
  1896.     FeelX object. Then the decimal handle is in the clipboard and you can easily
  1897.     integrate it into your program e.g. by using the quick marking feature of
  1898.     FeelX.
  1899.  
  1900.   Attributes:
  1901.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  1902.   │    │Attribute   │Value          │Explanation                   │Default   │
  1903.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1904.   │  1 │entry       │[text string]  │Name of the menu entry        │Object    │
  1905.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1906.   │  2 │object      │[text string]  │The object's internal name    │          │
  1907.   │    │            │               │(This is not                  │          │
  1908.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1909.   │  3 │handle      │[decimal       │The object handle. This is an │          │
  1910.   │    │            │number]        │internal handle of the object.│          │
  1911.   │    │            │               │It's almost impossible to get │          │
  1912.   │    │            │               │this handle without any       │          │
  1913.   │    │            │               │WPS-Tool. If you specify this │          │
  1914.   │    │            │               │attribute the object attribute│          │
  1915.   │    │            │               │will be ignored.              │          │
  1916.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1917.   │  4 │open        │DEFAULT        │Open the default view of the  │DEFAULT   │
  1918.   │    │            │               │object (same as double-click  │          │
  1919.   │    │            │               │on the object).               │          │
  1920.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  1921.   │    │            │SETTINGS       │Open the settings view of the │          │
  1922.   │    │            │               │object                        │          │
  1923.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  1924.  
  1925.   Predefined object names:
  1926.   ┌───────────────┬────────────────────────────────────────┐
  1927.   │<WP_DESKTOP>   │the Desktop                             │
  1928.   ├───────────────┼────────────────────────────────────────┤
  1929.   │<WP_OS2SYS>    │the System Folder                       │
  1930.   ├───────────────┼────────────────────────────────────────┤
  1931.   │<WP_TEMPS>     │the Template Folder                     │
  1932.   ├───────────────┼────────────────────────────────────────┤
  1933.   │<WP_CONFIG>    │the system setup folder                 │
  1934.   ├───────────────┼────────────────────────────────────────┤
  1935.   │<WP_START>     │the startup folder                      │
  1936.   ├───────────────┼────────────────────────────────────────┤
  1937.   │<WP_INFO>      │the information folder                  │
  1938.   ├───────────────┼────────────────────────────────────────┤
  1939.   │<WP_DRIVES>    │the drives folder                       │
  1940.   └───────────────┴────────────────────────────────────────┘
  1941.  
  1942.   Other common available names:
  1943.   ┌───────────────┬────────────────────────────────────────┐
  1944.   │<WP_CLIPV>     │the clipboard                           │
  1945.   ├───────────────┼────────────────────────────────────────┤
  1946.   │<WP_CLOCK>     │the system clock                        │
  1947.   ├───────────────┼────────────────────────────────────────┤
  1948.   │<WP_CLRPAL>    │the color palette object                │
  1949.   ├───────────────┼────────────────────────────────────────┤
  1950.   │<WP_CNTRY>     │country information                     │
  1951.   ├───────────────┼────────────────────────────────────────┤
  1952.   │<WP_DALARM>    │Productivity - alarm                    │
  1953.   ├───────────────┼────────────────────────────────────────┤
  1954.   │<WP_DBASE>     │Productivity - database                 │
  1955.   ├───────────────┼────────────────────────────────────────┤
  1956.   │<WP_DCALC>     │Calculator                              │
  1957.   ├───────────────┼────────────────────────────────────────┤
  1958.   │<WP_GAMES>     │Games Folder                            │
  1959.   ├───────────────┼────────────────────────────────────────┤
  1960.   │<WP_GLOSS>     │Glossary                                │
  1961.   ├───────────────┼────────────────────────────────────────┤
  1962.   │<WP_ICON>      │Iconeditor                              │
  1963.   ├───────────────┼────────────────────────────────────────┤
  1964.   │<WP_KEYB>      │Keyboard                                │
  1965.   ├───────────────┼────────────────────────────────────────┤
  1966.   │<WP_MOUSE>     │Mouse (FeelX)                           │
  1967.   ├───────────────┼────────────────────────────────────────┤
  1968.   │<WP_NETWORK>   │Network object                          │
  1969.   ├───────────────┼────────────────────────────────────────┤
  1970.   │<WP_PULSE>     │Puls                                    │
  1971.   ├───────────────┼────────────────────────────────────────┤
  1972.   │<WP_RVRSI>     │Reversi                                 │
  1973.   ├───────────────┼────────────────────────────────────────┤
  1974.   │<WP_SCHPAL>    │Screen Palette                          │
  1975.   ├───────────────┼────────────────────────────────────────┤
  1976.   │<WP_SPOOL>     │Spooler                                 │
  1977.   ├───────────────┼────────────────────────────────────────┤
  1978.   │<WP_SPREAD>    │Productivity - Spreadsheet              │
  1979.   ├───────────────┼────────────────────────────────────────┤
  1980.   │<WP_SYSED>     │System editor                           │
  1981.   ├───────────────┼────────────────────────────────────────┤
  1982.   │<WP_STICKY>    │Sticky pad                              │
  1983.   └───────────────┴────────────────────────────────────────┘
  1984.  
  1985.    pmkill  84/3 
  1986.  
  1987.   Function: pmkill
  1988.  
  1989.   Description: When this function is selected the mouse pointer changes to a
  1990.   skull. When you move the mouse pointer (the skull) on a program the skull
  1991.   looks like this: You can kill (abnormally terminate) the program by pressing
  1992.   mouse button 1. End this killing mode by moving the mouse pointer on the
  1993.   desktop or the FeelX actionbar and press button 1. The skull looks like this: 
  1994.   when it is not dangerous to press button1. You may also press button 2 to
  1995.   leave the killing mode.
  1996.  
  1997.   Location: Everywhere
  1998.  
  1999.   Portability: high
  2000.  
  2001.   Examples:
  2002.  
  2003.   o pmkill []
  2004.  
  2005.   Notes:
  2006.  
  2007.   Use this function with care! This function will kill a process without asking
  2008.   for permission1
  2009.  
  2010.   Attributes:
  2011.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2012.   │    │Attribute   │Value          │Explanation                   │Default   │
  2013.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2014.   │  1 │entry       │[text string]  │Name of the menu entry        │PM - Kill │
  2015.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2016.  
  2017.   See also: kill, minimize  
  2018.  
  2019.    program  85/3 
  2020.  
  2021.   Function: program
  2022.  
  2023.   Description: start a program
  2024.  
  2025.   Location: Everywhere
  2026.  
  2027.   Portability: The program must exist on other PC to be portable.
  2028.  
  2029.   Examples:
  2030.  
  2031.   o program [entry="help", name="view.exe", parameters="pmref &"] The menu item
  2032.     has the name help. When you click on this item the program view is started.
  2033.     The first parameter is pmref. The second is the contents of the clipboard.
  2034.  
  2035.   o program [entry="search", parameters="/K dir c:\[Please enter a file name]
  2036.     /s", type=os2win, window=noclose ]. When this function is executed, FeelX
  2037.     asks for a parameter (the text is Please enter ..). Then an OS/2 shell
  2038.     (type=os2win) is started. Assume you entered config.sys as a parameter. The
  2039.     shell gets the parameter /K dir c:\config.sys /s. Now the whole Harddrive c:
  2040.     is scanned. When the computation is ready the window is not closed
  2041.     (window=noclose).
  2042.  
  2043.   o program [ entry="game.exe", parameters="shoot 'em down", dos_high=on,
  2044.     hw_timer=on ]. This function starts a game (a dos program) with a specific
  2045.     parameter string. Load Dos high to get as much memory as possible. The
  2046.     Hardware timer is on.
  2047.  
  2048.   Notes:
  2049.  
  2050.   o When using DOS programs it might happen that the path is incorrect. Create
  2051.     an autoexec.bat file and set attribute dos_autoexec=...
  2052.  
  2053.   o The PM-Viewer is not intended to be used for large output. Use it if you
  2054.     have to display just a few lines.
  2055.  
  2056.   o If the program is not in the path you can use the path-attribute to set its
  2057.     current directory to it's own path. But - YOU MUST STILL SPECIFY THE FULL
  2058.     PATH IN THE NAME ATTRIBUTE!!!
  2059.  
  2060.   Attributes:
  2061.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2062.   │    │Attribute   │Value          │Explanation                   │Default   │
  2063.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2064.   │  1 │entry       │[text string]  │Name of the menu entry        │[name]    │
  2065.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2066.   │  2 │name        │[text string]  │Name of the program or nothing│          │
  2067.   │    │            │               │for a shell                   │          │
  2068.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2069.   │  3 │parameters  │[text string]  │An optional parameter         │          │
  2070.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2071.   │  4 │path        │[text string]  │An optional path              │          │
  2072.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2073.   │  5 │title       │[text string]  │An optional title if the      │[name]    │
  2074.   │    │            │               │program is windowed           │          │
  2075.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2076.   │  6 │type        │os2win, os2fs, │program type. Optinal for OS/2│[name]    │
  2077.   │    │            │doswin,dosfs,  │and DOS programs. Obligatory  │          │
  2078.   │    │            │windoze31,     │for Windows programs and      │          │
  2079.   │    │            │windoze31seamle│shells.                       │          │
  2080.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2081.   │  7 │cx          │[numeric value]│witdth of window              │          │
  2082.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2083.   │  8 │cy          │[numeric value]│height of window              │          │
  2084.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2085.   │  9 │x           │[numeric value]│x position                    │          │
  2086.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2087.   │ 10 │y           │[numeric value]│y position                    │          │
  2088.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2089.   │ 12 │priority    │[??]           │not used                      │[name]    │
  2090.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2091.   │ 13 │window      │default        │start program as default type │default   │
  2092.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2093.   │    │            │minimized      │start program minimized       │          │
  2094.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2095.   │    │            │maximized      │start program maximized       │          │
  2096.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2097.   │    │            │noclose        │don't close the command shell │          │
  2098.   │    │            │               │after finishing               │          │
  2099.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2100.   │    │            │invisible      │start program invisible       │          │
  2101.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2102.   │    │            │clipboard      │put the program output into   │          │
  2103.   │    │            │               │the clipboard                 │          │
  2104.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2105.   │    │            │pm             │Display a small (and very,    │          │
  2106.   │    │            │               │very easy) PM-Viewer with the │          │
  2107.   │    │            │               │output of the program         │          │
  2108.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2109.   │ 14 │child       │true           │start as a child              │true      │
  2110.   │    │            │               │session/process (Advantage:   │          │
  2111.   │    │            │               │Pops window to the front      │          │
  2112.   │    │            │               │Disadvantage: All child       │          │
  2113.   │    │            │               │programs are killed when FeelX│          │
  2114.   │    │            │               │terminates)                   │          │
  2115.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2116.   │    │            │false          │Do not start the program as a │          │
  2117.   │    │            │               │child session / process       │          │
  2118.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2119.   │ 15 │sync        │true           │Start the program synchron.   │          │
  2120.   │    │            │               │(Wait for the program. By     │          │
  2121.   │    │            │               │careful! This might hang the  │          │
  2122.   │    │            │               │PM)                           │          │
  2123.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2124.   │    │false       │Start the      │                              │false     │
  2125.   │    │            │program        │                              │          │
  2126.   │    │            │asynchron.     │                              │          │
  2127.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2128.   │ 16 │maxsize     │[numeric value]│No of characters that can be  │20        │
  2129.   │    │            │               │displayed in a menu           │          │
  2130.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2131.   │ 17 │feelxpath   │true           │Default path is FeelX-path    │          │
  2132.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2133.   │    │            │false          │                              │false     │
  2134.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2135.    
  2136.    qswitch  86/3 
  2137.  
  2138.   Function: qswitch
  2139.  
  2140.   Description: This displays the quick switch list as a submenu
  2141.  
  2142.   Location: Everywhere except Hotkeys
  2143.  
  2144.   Portability: high
  2145.  
  2146.   Examples:
  2147.  
  2148.   o qswitch [hide=true] This statement displays the quick switch list only if
  2149.     there are items available
  2150.  
  2151.   Notes:
  2152.  
  2153.   o refer to addmenu
  2154.  
  2155.   o For the actionbar the qswitch is not automatically enabled. If there are
  2156.     items available click on the menu entry. This will enable the entry.
  2157.  
  2158.   Attributes:
  2159.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2160.   │    │Attribute   │Value          │Explanation                   │Default   │
  2161.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2162.   │  1 │entry       │[text string]  │Name of the menu entry        │          │
  2163.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2164.   │  2 │hide        │true           │Do not display the menu entry │          │
  2165.   │    │            │               │for the quick switch list     │          │
  2166.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2167.   │    │            │false          │Diplay the qswitch item       │false     │
  2168.   │    │            │               │disabled if no items are      │          │
  2169.   │    │            │               │available                     │          │
  2170.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2171.  
  2172.   See also: addmenu
  2173.  
  2174.    quit  87/3 
  2175.  
  2176.   Function: quit
  2177.  
  2178.   Description: Terminates FeelX
  2179.  
  2180.   Location: Everywhere
  2181.  
  2182.   Portability: high
  2183.  
  2184.   Examples:
  2185.  
  2186.   o quit[entry="~quit"] Terminates FeelX
  2187.  
  2188.   Notes:
  2189.  
  2190.   When you use FeelX as a program launcher all child processes of FeelX also
  2191.   terminate. (cf. program)
  2192.  
  2193.   Attributes:
  2194.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2195.   │    │Attribute   │Value          │Explanation                   │Default   │
  2196.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2197.   │  1 │entry       │[text string]  │Name of the menu entry        │exit FeelX│
  2198.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2199.    
  2200.    recordmacro  88/3 
  2201.  
  2202.   Function: recordmacro
  2203.  
  2204.   Description: A very, very simple (and still incorrect) macro recorder. Maybe
  2205.   it was not a good idea to document this feature?! Use (if you use it) this
  2206.   function as an entry point for a HOTKEY. When you press the hotkey your
  2207.   speaker beeps and you can start to type in something or move the mouse. All
  2208.   events are recorded. When you are ready press F5. This will stop recording.
  2209.   The hotkey dialog pops up. You can now assign a hotkey to the previously
  2210.   recorded sequence (similar to hotkey and mwinlist). You can playback the
  2211.   sequence with this hotkey.
  2212.  
  2213.   Location: Hotkeys
  2214.  
  2215.   Portability: high
  2216.  
  2217.   Examples:
  2218.  
  2219.   o recordmacro[]
  2220.  
  2221.   Notes:
  2222.  
  2223.   o There are still some problems left. For example starting a program during
  2224.     record crashes in the FeelX-DLL. (From my experience the worst case is that
  2225.     application and FeelX both crash or the PM hangs - no traps). BE WARNED:
  2226.     Never use this feature with unsaved data!!!!!!
  2227.  
  2228.   o Never put this feature into a menu.
  2229.  
  2230.   o Never forget to end your recording ...
  2231.  
  2232.   o Before pressing the hotkey a second time, you must release all keys.
  2233.  
  2234.   o The mouse is recorded too. Therefore it might happen that the mouse moves
  2235.     during playback
  2236.  
  2237.   o All FeelX features are turned off during recording
  2238.  
  2239.   o Message and dialog boxes do not work because of incorrect timing on playback
  2240.    
  2241.   o The recording is application dependent. Playing back mouse movement in other
  2242.     active windows may cause incorrect results.
  2243.  
  2244.   o This feature may be useful for a small amout of key strokes or mouse events.
  2245.     For best results use it in one application only, use the keyboard as often
  2246.     as possible and do not use dialog boxes.
  2247.  
  2248.   o Don't blame me if your application crashed. I've warned you. If you still
  2249.     want to try this feature, record some painting in the icon editor. It's
  2250.     magic ...
  2251.  
  2252.   Attributes:
  2253.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2254.   │    │Attribute   │Value          │Explanation                   │Default   │
  2255.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2256.   │  1 │entry       │[text string]  │Name of the menu entry        │record    │
  2257.   │    │            │               │                              │macro     │
  2258.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2259.  
  2260.    redraw  89/3 
  2261.  
  2262.   Function: redraw
  2263.  
  2264.   Description: Forces a window to redraw itself. Sometimes it might happen, that
  2265.   a window displays only "garbage". Use this function to redraw the window.
  2266.  
  2267.   Location: FeelX, Hotkeys
  2268.  
  2269.   Portability: high
  2270.  
  2271.   Examples:
  2272.  
  2273.   o redraw[]
  2274.  
  2275.   Attributes:
  2276.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2277.   │    │Attribute   │Value          │Explanation                   │Default   │
  2278.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2279.   │  1 │entry       │[text string]  │Name of the menu entry        │Redraw    │
  2280.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2281.  
  2282.    shutdown  90/3 
  2283.  
  2284.   Function: shutdown
  2285.  
  2286.   Description: This shuts down the system
  2287.  
  2288.   Location: Everywhere
  2289.  
  2290.   Portability: high
  2291.  
  2292.   Examples:
  2293.  
  2294.   o shutdown [ items="load.exe" ]
  2295.  
  2296.   Notes:
  2297.  
  2298.   o shutdown does perform the following steps:
  2299.     
  2300.       1. Kill all programs that are listed in the item attribute
  2301.     
  2302.       2. Kill all shells that do not run a child process
  2303.     
  2304.       3. Call regular Shutdown.
  2305.  
  2306.   o When you must abort shutdown during step 3 (regular shutdown) it is
  2307.     recommended to save all work and try again to shutdown (instead of going on
  2308.     to do some work for lots of hours...).
  2309.  
  2310.   o If OS/2 does not get ready with Shutdown press Ctrl-Alt-Del.
  2311.  
  2312.   o Dos programs cannot be killed (now).
  2313.  
  2314.   o It is highly recommended not to call this function directly. Use shutdowndlg
  2315.     instead. Note that this is not necessary. If you want to tease someone add
  2316.     the line MenuLL:=shutdown in his feelx.go file. The system now shuts down as
  2317.     soon as the mouse ptr moves to the lower left corner.
  2318.  
  2319.   Attributes:
  2320.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2321.   │    │Attribute   │Value          │Explanation                   │Default   │
  2322.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2323.   │  1 │entry       │[text string]  │Name of the menu entry        │Shutdown  │
  2324.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2325.   │  2 │item / items│[string1;string│List of filenames (without    │          │
  2326.   │    │            │               │pathname but with .exe)       │          │
  2327.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2328.   │  2 │killshells  │true/fals      │Kill empty shells             │true      │
  2329.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2330.  
  2331.   See also: shutdowndlg    
  2332.  
  2333.    shutdowndlg  91/3 
  2334.  
  2335.   Function: shutdowndlg
  2336.  
  2337.   Description: Performs a shutdown dialog (only the dialog! Not the shutdown
  2338.   itself.)
  2339.  
  2340.   Location: Everywhere
  2341.  
  2342.   Portability: high
  2343.  
  2344.   Examples:
  2345.  
  2346.   o shutdowndlg [ onexit=shutdown ] This examples shows a Dialog box and asks
  2347.     for shutdown. If the user chooses yes, FeelX calls the object shutdown which
  2348.     is predefined and does the shutdown.
  2349.  
  2350.   o shutdowndlg [ onexit=myexit ] Very similar but calls myexit instead. myexit
  2351.     should call shutdown somewhere.
  2352.  
  2353.   o shutdowndlg [ onexit=chain [ items=SaveInis;shutdown ] ] This sample is more
  2354.     complicated. If the user wants to shutdown the reference SaveInis is called.
  2355.     This might be a program [ /* ... */ ] reference. Then the shutdown reference
  2356.     is called.
  2357.  
  2358.   Attributes:
  2359.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2360.   │    │Attribute   │Value          │Explanation                   │Default   │
  2361.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2362.   │  1 │entry       │[text string]  │Name of the menu entry        │Shutdown  │
  2363.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2364.   │  2 │onshutdown  │[reference]    │Reference to an object that   │          │
  2365.   │    │            │               │should be called when the user│          │
  2366.   │    │            │               │does not cancel the shutdown. │          │
  2367.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2368.  
  2369.   See also: shutdown  
  2370.  
  2371.    switchto  92/3 
  2372.  
  2373.   Function: switchto
  2374.  
  2375.   Description: switches to a specific application
  2376.  
  2377.   Location: Everywhere. Hotkeys are most useful.
  2378.  
  2379.   Portability: high
  2380.  
  2381.   Examples:
  2382.  
  2383.   o switchto [ name="viewdoc.exe" ]
  2384.  
  2385.   Notes:
  2386.  
  2387.   o Use must specify the program name. This may differ from the name listed in
  2388.     the window list.
  2389.  
  2390.   Attributes:
  2391.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2392.   │    │Attribute   │Value          │Explanation                   │Default   │
  2393.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2394.   │  1 │entry       │[text string]  │Name of the menu entry        │          │
  2395.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2396.   │  2 │name        │[text string]  │program                       │          │
  2397.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2398.      
  2399.    top  93/3 
  2400.  
  2401.   Function: top
  2402.  
  2403.   Description: This marks a window to stay always on top
  2404.  
  2405.   Location: FeelX
  2406.  
  2407.   Portability: high
  2408.  
  2409.   Notes:
  2410.  
  2411.   o Use this function with care!!
  2412.  
  2413.   o Currently there is a limit of 10 windows to be at the front
  2414.  
  2415.   o You can turn this feature on or off
  2416.  
  2417.   o A window that is closed is deleted from the list
  2418.  
  2419.   o A newly created window may overlay the marked windows. Just click
  2420.   on the new window to correct the order.
  2421.  
  2422.   Attributes:
  2423.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2424.   │    │Attribute   │Value          │Explanation                   │Default   │
  2425.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2426.   │  1 │entry       │[text string]  │Name of the menu entry        │always top│
  2427.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2428.    
  2429.    winlist  94/3 
  2430.  
  2431.   Function: winlist
  2432.  
  2433.   Description: Display the OS/2-PM window list
  2434.  
  2435.   Location: Everywhere
  2436.  
  2437.   Portability: high
  2438.  
  2439.   Examples:
  2440.  
  2441.   o winlist [entry="windowlist"]
  2442.  
  2443.   Advanced examples:
  2444.  
  2445.   o MenuLR:=winlist The window list pops up if you move the mouse ptr into the
  2446.     lower right corner.
  2447.  
  2448.   Attributes:
  2449.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2450.   │    │Attribute   │Value          │Explanation                   │Default   │
  2451.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2452.   │  1 │entry       │[text string]  │Name of the menu entry        │window    │
  2453.   │    │            │               │                              │list      │
  2454.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2455.  
  2456.   See also: mwinlist  
  2457.  
  2458.    winhotkey  95/3 
  2459.  
  2460.   Function: winhotkey
  2461.  
  2462.   Description: Assigns a hotkey to running window. When this function is
  2463.   executed a dialogbox pops up where you are asked for a hotkey. Press any key
  2464.   (or type f1-f12) whithout any shift key. As soon as you press
  2465.   Ctrl-Shift+[hotkey] the window will be brought to the front.
  2466.  
  2467.   Location: FeelX
  2468.  
  2469.   Portability: high
  2470.  
  2471.   Examples:
  2472.  
  2473.   o winhotkey [entry="assign hotkey"]
  2474.  
  2475.   Notes:
  2476.  
  2477.    1. If you specify an existing hotkey, this one is simply overridden.
  2478.  
  2479.    2. The hotkey will not be saved for the next boot time.
  2480.  
  2481.   Attributes:
  2482.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2483.   │    │Attribute   │Value          │Explanation                   │Default   │
  2484.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2485.   │  1 │entry       │[text string]  │Name of the menu entry        │Hotkey    │
  2486.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2487.  
  2488.   See also: hotkey
  2489.  
  2490.    zorder  96/3 
  2491.  
  2492.   Function:
  2493.  
  2494.   Description: This function changes the Z-Order of a window or its process
  2495.  
  2496.   Location: FeelX, Shell, Hotkeys
  2497.  
  2498.   Portability: high
  2499.  
  2500.   Examples:
  2501.  
  2502.   o zorder [ entry="background", pos="pbottom"] This statement puts the program
  2503.     into the background.
  2504.  
  2505.   Notes:
  2506.  
  2507.   o If you have a three button mouse it is easier to use the 3rd mouse button to
  2508.     change the Z-Order of the program.
  2509.  
  2510.   o Most functions are rarely used. Maybe you don't need them. They can be
  2511.     useful to arrange windows on the desktop.
  2512.  
  2513.   o Please don't get angry if you don't understand the explanations below. It's
  2514.     difficult to explain ... especially for one who is (obviously) not a native
  2515.     english speaker.
  2516.  
  2517.   Attributes:
  2518.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2519.   │    │Attribute   │Value          │Explanation                   │Default   │
  2520.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2521.   │  1 │entry       │[text string]  │Name of the menu entry        │???       │
  2522.   │    │            │               │                              │-ZOrder   │
  2523.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2524.   │  2 │pos         │wbottom        │Move the window into the      │          │
  2525.   │    │            │               │background                    │          │
  2526.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2527.   │    │            │wprev          │put the window one more to the│          │
  2528.   │    │            │               │front                         │          │
  2529.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2530.   │    │            │wnext          │put the window one back       │          │
  2531.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2532.   │    │            │ptop           │Move the program to the front │          │
  2533.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2534.   │    │            │pbottom        │Move the program into the     │          │
  2535.   │    │            │               │background                    │          │
  2536.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2537.   │    │            │pprev          │Move the program one window   │          │
  2538.   │    │            │               │more to the front             │          │
  2539.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2540.   │    │            │pnext          │Move the program more to the  │          │
  2541.   │    │            │               │background                    │          │
  2542.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2543.    
  2544.    Reference - other supplied functions  97/2+
  2545.  
  2546.   This is an example of how to integrate other programs into FeelX. A future
  2547.   version may have a lot of objects in this section. If you have any idea for
  2548.   nice menus, programs or tricks, please let me know.  
  2549.  
  2550.    ReXX  98/3 
  2551.  
  2552.   Function: ReXX
  2553.  
  2554.   Description: Interprets the Clipboard as a ReXX function.
  2555.  
  2556.   Location: Everywhere
  2557.  
  2558.   Portability: high
  2559.  
  2560.   Examples:
  2561.  
  2562.   o ReXX [ entry="what is %c?", window=pm ] Calculate Clipboard. Output to
  2563.     PM-Viewer
  2564.  
  2565.   o ReXX [ entry="what is %c?", window=pm ] Calculate Clipboard and replace with
  2566.     new value.
  2567.  
  2568.   Attributes:
  2569.   ┌────┬────────────┬───────────────┬──────────────────────────────┬──────────┐
  2570.   │    │Attribute   │Value          │Explanation                   │Default   │
  2571.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2572.   │  1 │entry       │[text string]  │Name of the menu entry        │ReXX      │
  2573.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2574.   │    │rexxfile    │[filename]     │Exec this file                │interp.cmd│
  2575.   ├────┼────────────┼───────────────┼──────────────────────────────┼──────────┤
  2576.   │    │rexxparamete│string         │This is the argument for ReXX │&         │
  2577.   │    │            │               │                              │(clipboard│
  2578.   └────┴────────────┴───────────────┴──────────────────────────────┴──────────┘
  2579.      
  2580.    Advanced topics  99/2+
  2581.  
  2582.   This section explains how to control FeelX from your own application and how
  2583.   to write FeelX programs for other users.
  2584.  
  2585.    Writing FeelX "programs" for other users  100/3 
  2586.  
  2587.   I hope FeelX is not very difficult to program. But I assume there are enough
  2588.   users that don't want to program for configuration at all. They might profit
  2589.   from the work of other users.
  2590.  
  2591.   On the other hand it might be possible that you "programmed" a nice menu or
  2592.   actionbar and want to make it available to other users. In opposite to the
  2593.   workplace shell where it is difficult to interchange the configuration of the
  2594.   WPS and its menus you can easiliy interchange FeelX-Programs because of the
  2595.   textual nature of the configuration.
  2596.  
  2597.   You can replace a specific configuration by renaming it to feelx.go or by
  2598.   starting feelx file.go. You can enhance a feelx.go by appending your file to
  2599.   the feelx.go file. Since there might be name-conflicts it is recommended
  2600.   either to use anonymous objects or to use "unusual" names like
  2601.   MyActionbar_Prompts. You can query the current path of FeelX with the API
  2602.   FxQueryFeelXPath.
  2603.  
  2604.   If you like programming FeelX, I'd be glad if you help other users that have
  2605.   more problems. You're very welcome write "programs" for FeelX.
  2606.  
  2607.   If you have a nice tip for FeelX objects let other know or write me a note.
  2608.   Maybe I'll integrate it in the documentation.
  2609.  
  2610.   Note:
  2611.  
  2612.    1. Programming actionbars is a little bit tricky because you're currently not
  2613.       allowed to use references to other menus. Instead use instances of these
  2614.       menus (e.g. MyMenu[] instead of MyMenu) or (much better) use anonymous
  2615.       objects or (best) simply don't share one submenu for different menus or
  2616.       actionbars. E.g use cut and paste to produce Actionbar1_Submenu and
  2617.       Actionbar2_Submenu instead of using one common menu. (This can be easiliy
  2618.       tested).
  2619.  
  2620.    2. If you make a file available to other users have a look at the portability
  2621.       section of the function-reference...
  2622.  
  2623.    Interfacing FeelX  101/3 
  2624.  
  2625.   FeelX supports some interfaces you can use to integrate your favourite
  2626.   application. You're very welcome to do so.
  2627.  
  2628.   There are three ways to interface FeelX and to enhance FeelX by a new
  2629.   (object-)type:
  2630.  
  2631.    1. Using the program directive
  2632.  
  2633.    2. Using the dll directive
  2634.  
  2635.    3. Using the API
  2636.  
  2637.   Integrating a program
  2638.  
  2639.   You can integrate a program by defining a new object. Have a look at the
  2640.   ReXXobject supplied with the toolkit.inc file:  
  2641.  
  2642.   ReXX: =program[
  2643.                  name="callrx.exe"
  2644.                  entry="ReXX"
  2645.                  rexxfile="calc.cmd"
  2646.                  parameters="<rexxfile> <rexxparameter>"
  2647.                  ]
  2648.   It supplies defaults for the main attributes (name, entry) and sets a
  2649.   parameter string. The parameter string makes usages of other attributes
  2650.   (rexxfile, rexxparameters) with are syntactical replaces at load-time. The
  2651.   user can now use the object ReXX and its attributes entry, rexxfile,
  2652.   rexxparameters without knowing that ReXX is a program object(!) The program
  2653.   callrx.exe is integrated seamlessly and transparent into the language. For
  2654.   example the user might program:  
  2655.  
  2656.   item : =ReXX[entry = " ReXX :% c "
  2657.                rexxfile="g:\rexx\interp.cmd"
  2658.                rexxparameter="&"
  2659.                window=pm
  2660.         ]
  2661.   to call the ReXX object (resp. the associated program with the file interp.cmd
  2662.   and the clipboard(&) as a parameter). The output will be directed into a small
  2663.   PM viewer. The menu entry is ReXX followed by the contents of the clipboard.
  2664.  
  2665.   Let's have another example. The FeelX package contains a program called wo.exe
  2666.   to search (in a fault-tolerant way) the contents of the hard disk for a
  2667.   specific file.
  2668.  
  2669.   wo is a typical example of an easy non-PM program. It does not need any input
  2670.   (except the command line arguments) and does not need a specific environment
  2671.   (e.g. the path). Assume you have written the program wo and want to have it
  2672.   integrated seamlessly into FeelX ta make it available to all FeelX users :-)
  2673.  
  2674.   First define an object called Wo (look at the toolkit.inc file):  
  2675.  
  2676.   Wo : =program[
  2677.          title="wo"
  2678.          name="wo.exe"
  2679.          parameters="-p c-:[Which file?]"
  2680.          window=pm
  2681.          entry="Wo?"
  2682.        ]
  2683.   Now the user can easily enhance it menus by just entering item=Wo or item=wo[]
  2684.   or item=wo [ entry="Where is" ].
  2685.  
  2686.   If this is not enough, use the FxQueryFeelXPath API-function to locate the
  2687.   feelx.go file. Add the definition above and the lines:
  2688.   Tools:= Tools [
  2689.           item= program [
  2690.                  entry="Wo"                   /* The menu entry           */
  2691.                  name="wo.exe"                /* wo should be in the path */
  2692.                  parameters="-p -n c-:[Which file]"
  2693.                                               /* Prompt for file          */
  2694.                  window=pm                    /* redirect to PM-window    */
  2695.                  title="wo"                   /* Title of the PM-window   */
  2696.                 ] /* end of program */
  2697.           ] /* end of Tools */
  2698.   If the user has defined a menu called Tools this will be enhanced by the Wo
  2699.   entry.
  2700.  
  2701.   Note:
  2702.  
  2703.    1. A wrong entry may corrupt the feelx.go file. Never append anything to the
  2704.       feelx.go file without asking the user and without making a bakup of
  2705.       feelx.go and toolkit.inc
  2706.  
  2707.    2. If you are using the FeelX-API consider that if you use loadtime linkage
  2708.       of the API the program will not run without feelxdll.dll. You must use
  2709.       DosLoadModule and DosQueryProcAddr if your program should run with and
  2710.       without FeelX.
  2711.  
  2712.   Integrating a DLL
  2713.  
  2714.   FeelX supports an easy to use interface to any DLL. A DLL template is supplied
  2715.   with the testdll.c file. Have a look at this file. It's easy to understand.
  2716.  
  2717.   Example: Assume that you want to write a tool that turns on and of the
  2718.   animation of WPS folders on opening. You want to have a tool that is added to
  2719.   a menu where the mnu entry is checked when animation is on and unchecked when
  2720.   animation is off. This is not an easy task when using the Workplace Shell and
  2721.   SOM but it is almost trivial when using FeelX.
  2722.  
  2723.   You need two functions in your DLL. One function is called by FeelX when the
  2724.   menu is built up. This function can be used to check the menu entry (or
  2725.   disable it). The other function is called when the menu item is selected. The
  2726.   functions can have every name you want.
  2727.  
  2728.   Here is the almost complete(!) example (rest trivial):
  2729.  
  2730.      void _System _Export showToggle(HWND menu, int id)
  2731.        {
  2732.        setMenuAttrib(menu, (USHORT)id, MIA_CHECKED, queryAnimation());
  2733.        }
  2734.  
  2735.      void _System _Export animation(int x, int y, HWND hwnd, HWND frame,
  2736.             int argc, char *args[], char *vals[])
  2737.        {
  2738.        DosBeep(100,50);
  2739.        setAnimation(!queryAnimation());
  2740.        }
  2741.  
  2742.   The only thing you need are two functions to set and quuery animation.
  2743.  
  2744.   Now you can integrate your DLL into FeelX, i.e. define an object for FeelX:  
  2745.  
  2746.   Animation: =dll[
  2747.                     entry="Animation"
  2748.                     fun="animation"
  2749.                     dll="anidll"
  2750.                     menufun="showToggle"
  2751.                    ]
  2752.   Now the DLL is "registered" on start-up and the user can integrate it into the
  2753.   menu by using the Animation object.
  2754.  
  2755.   Serious examples for using this feature are hiding and displaying a tool
  2756.   program or its title bar (clock, virtual desktops, screen savers, ...)  
  2757.  
  2758.   Using FeelX objects
  2759.  
  2760.   You can use every FeelX object as an entry point from an external program use
  2761.   the FxExecObject API function to do so. Assume you want to write a WPS program
  2762.   where the FeelX-Tools menu pops up when the user double-clicks on the icon.
  2763.   The wpOpen method may look like this:  
  2764.  
  2765.   SOM_Scope HWND   SOMLINK wpToolsMenu_wpOpen(WPToolsMenu *somSelf,
  2766.                   HWND hwndCnr,
  2767.                   ULONG ulView,
  2768.                   ULONG param)
  2769.   {
  2770.   if (ulView==MY_OPEN)
  2771.      {
  2772.      FxExecObject("Tools");
  2773.      return 0;
  2774.      }
  2775.   else
  2776.      return (parent_wpOpen(somSelf,hwndCnr,ulView,param));
  2777.   }
  2778.   (BTW. I know that this is bad WPS-style ... - just an example).
  2779.  
  2780.   As you can see there are a lot of possiblilities use FeelX for other programs
  2781.   and to enhance FeelX with other programs. I hope you have fun using these
  2782.   features.
  2783.  
  2784.    The FeelX API  102/3 
  2785.  
  2786.    You can use the following functions:  
  2787.  
  2788.   BOOL            FxIsFeelXRunning();
  2789.   char            *FxQueryFeelXPath();
  2790.   HWND            FxQueryWndProc();
  2791.   HWND            FxQueryPID();
  2792.   BOOL            FxSaveSettings();
  2793.   BOOL            FxLoadSettings();
  2794.   BOOL            FxDefaultSettings(FEELXPARAMETERS *);
  2795.   BOOL            FxJournalRecord();
  2796.   BOOL            FxReleaseJournalRecord();
  2797.   BOOL            FxPlayback(struct PlaybackMessages *);
  2798.   BOOL            FxAddFront(HWND h);
  2799.   BOOL            FxQueryFront(HWND h);
  2800.   BOOL            FxDeleteFront(HWND h);
  2801.   BOOL            FxAddAltCutPaste(HWND h);
  2802.   BOOL            FxQueryAltCutPaste(HWND h);
  2803.   BOOL            FxDeleteAltCutPaste(HWND h);
  2804.   BOOL            FxExecObject(char *);
  2805.   BOOL            FxAssignHotkey(HWND h, char *);
  2806.  
  2807.   BOOL            FxQueryFeelXStatus();
  2808.   BOOL            FxQueryActivateAll();
  2809.   BOOL            FxQueryMark();
  2810.   int             FxQueryWndFront();
  2811.   ULONG           FxQueryHideTimeOut();
  2812.   BOOL            FxQueryFolders();
  2813.   BOOL            FxQueryStaticMenus();
  2814.   BOOL            FxQueryWinlist();
  2815.   BOOL            FxQueryMini();
  2816.   int             FxQueryMarkButton();
  2817.   ULONG           FxQueryMarkFlags();
  2818.   ULONG           FxQueryMarkAltFlags();
  2819.   int             FxQueryPasteButton();
  2820.   BOOL            FxQueryPasteDBClick();
  2821.   ULONG           FxQueryPasteFlags();
  2822.   ULONG           FxQueryPasteCtrlLFFlags();
  2823.   ULONG           FxQueryPasteAltFlags();
  2824.  
  2825.   BOOL            FxSetFeelXStatus(BOOL);
  2826.   BOOL            FxSetActivateAll(BOOL);
  2827.   BOOL            FxSetMark(BOOL);
  2828.   BOOL            FxSetWndFront(int);
  2829.   BOOL            FxSetHideTimeOut(ULONG);
  2830.   BOOL            FxSetFolders(BOOL);
  2831.   BOOL            FxSetStaticMenus(BOOL);
  2832.   BOOL            FxSetWinlist(BOOL);
  2833.   BOOL            FxSetMini(BOOL);
  2834.   BOOL            FxSetMarkButton(int);
  2835.   BOOL            FxSetMarkFlags(ULONG);
  2836.   BOOL            FxSetMarkAltFlags(ULONG);
  2837.   BOOL            FxSetPasteButton(int);
  2838.   BOOL            FxSetPasteDBClick(BOOL);
  2839.   BOOL            FxSetPasteFlags(ULONG);
  2840.   BOOL            FxSetPasteCtrlLFFlags(ULONG);
  2841.   BOOL            FxSetPasteAltFlags(ULONG);
  2842.  
  2843.   I think the names are almost self-explaining. If you have questions send me a
  2844.   note.
  2845.  
  2846.    Ideas  103/3 
  2847.  
  2848.   This section shows some ideas how to program FeelX. Have a look at the
  2849.   examples.go file  
  2850.  
  2851.   /* Assume that you do not paste with the middle (3rd mouse button)           
  2852.   */
  2853.   /* Use the following statement to paste with the middle mouse button with CR 
  2854.   */
  2855.  
  2856.   Shell3:= keyin [ string="%c\n" ]
  2857.  
  2858.   /* The following statement implements a popup-menu-windowlist on             
  2859.   */
  2860.   /* Ctrl-Shift-Esc. (Use behind an other Hotkeys definition)                  
  2861.   */
  2862.  
  2863.   Hotkeys:= Hotkeys [ esc=mwinlist [] ]
  2864.  
  2865.   /* You can simply get help about a specific topic with the following fragment
  2866.   */
  2867.   /* Mark WinCreateWindow in your text and execute the following instruction   
  2868.   */
  2869.  
  2870.   Help:= program [
  2871.             entry="Help!!"                        /* the menu entry            
  2872.   */
  2873.             name="view.exe"                       /* the help viewer of OS/2   
  2874.   */
  2875.             parameters="PMFUN.INF+PMWIN.INF &"    /* the references and        
  2876.   */
  2877.          ] /* end of program */                   /* & (=Clipboard)            
  2878.   */
  2879.    
  2880.    Additional programs  104/1+
  2881.  
  2882.   The FeelX package does not only contain the FeelX program but also some tools
  2883.   that make it easier to use OS/2. This section explains how to use these tools.
  2884.  
  2885.    FxOpt  105/2 
  2886.  
  2887.   FxOpt - change FeelX options  
  2888.  
  2889.   This program allows you to change the settings of FeelX without a WPS-object.
  2890.   Use this program if you don't want to install the WPS object (why??), if you
  2891.   use FeelX as a WPS replacement or if you want to automate setting the values
  2892.   in a batch file.
  2893.  
  2894.   You can also use this program to call some of the FeelX API functions.
  2895.  
  2896.   If you change any parameters: First change them (e.g. fxopt mark:off) and if
  2897.   you want to have these parameters whenever FeelX starts, type fxopt save to
  2898.   save them in your os2.ini file.
  2899.  
  2900.   There is no problem to use FxOpt in conjunction with the WPS object.
  2901.  
  2902.   This program can also be used from a DOS session. But currently you cannot run
  2903.   it from 2 DOS sessions simultanously.
  2904.  
  2905.   run fxopt without parameters to display the current settings. This looks
  2906.   similar to the following picture:
  2907.   ┌─────────────────────────────────────────────────────────────────────────────┐
  2908.  
  2909.   │ FXOPT v1.1 - Display and change settings of FeelX v1.1                     
  2910.   │
  2911.   ├───────────────────────────────────┬─────────────────────────────────────────┤
  2912.  
  2913.   │ General settings:                 │   More general settings:               
  2914.   │
  2915.   │  Sliding focus:   on              │    activate all controls:    on        
  2916.   │
  2917.   │  quick marking:   on              │    window into foreground:   w/Shift   
  2918.   │
  2919.   │  hide pointer:    on              │    static windowlist:        yes       
  2920.   │
  2921.   │  hide timeout:    10              │    static menus:             yes       
  2922.   │
  2923.   │  Hotkey flags:    S, C            │    show Minnie on startup:   yes       
  2924.   │
  2925.   │  FS - Hotkeys:    no              │    strip CR/LF on marking:   yes       
  2926.   │
  2927.   │                                   │    folders -> foreground:    yes       
  2928.   │
  2929.   ├───────────────────────────────────┼─────────────────────────────────────────┤
  2930.  
  2931.   │ Marking Settings:                 │   Pasting settings:                    
  2932.   │
  2933.   │  button:          1               │    button:                   1         
  2934.   │
  2935.   │  flags:           none            │    flags:                    none      
  2936.   │
  2937.   │  alternate flags: S               │    alternate flags:          S         
  2938.   │
  2939.   │  [S=shift, C=Ctrl, A=Alt]         │    double-click:             yes       
  2940.   │
  2941.   ├───────────────────────────────────┼─────────────────────────────────────────┤
  2942.  
  2943.   │ FeelX process information:        │ FeelX & tools are                      
  2944.   │
  2945.   │  process ID:      13              │   (c) 1993, 1994 by Felix von Normann  
  2946.   │
  2947.   │  window handle:   10e02320        │                 94036 Passau, Germany  
  2948.   │
  2949.   └───────────────────────────────────┴─────────────────────────────────────────┘
  2950.  
  2951.   All parameters can be changed with Fxopt or the WPS object. To get help start
  2952.   fxopt -? The following parameters are currently available: (if values are
  2953.   available they are separated by a colon. E.g. fxopt mark:on)
  2954.   ┌───────────────┬──────────────────────────────┬──────────┬──────────┐
  2955.   │Parameter      │Description                   │Values    │Default   │
  2956.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2957.   │on             │turn FeelX on                 │          │          │
  2958.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2959.   │off            │turn FeelX off                │          │          │
  2960.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2961.   │load           │load FeelX settings from      │          │          │
  2962.   │               │os2.ini                       │          │          │
  2963.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2964.   │save           │save FeelX settings to os2.ini│          │          │
  2965.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2966.   │delete         │delete FeelX from os2.ini     │          │          │
  2967.   │               │(this may be useful if your   │          │          │
  2968.   │               │settings are corrupt)         │          │          │
  2969.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2970.   │quit           │quit FeelX                    │          │          │
  2971.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2972.   │feelx          │turn status of sliding focus  │on        │on        │
  2973.   │               │on (you can also specify      │          │          │
  2974.   │               │focus).                       │          │          │
  2975.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2976.   │               │turn status of sliding focus  │off       │          │
  2977.   │               │off                           │          │          │
  2978.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2979.   │               │toggle status of sliding focus│toggle    │          │
  2980.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2981.   │hide           │Hide the mouse pointer        │on        │          │
  2982.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2983.   │               │Do not hide the mouse pointer │off       │off       │
  2984.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2985.   │               │Hide after x seconds          │x         │10        │
  2986.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2987.   │winlist        │persistent windowlist         │on        │on        │
  2988.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2989.   │               │no persistent windowlist      │off       │          │
  2990.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2991.   │minnie         │show Minnie on program start  │on        │on        │
  2992.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2993.   │               │do not show Minnie            │off       │          │
  2994.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2995.   │mark           │turn marking on               │on        │on        │
  2996.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2997.   │               │turn quick marking off        │off       │          │
  2998.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  2999.   │all            │activate all controls (even   │on        │on        │
  3000.   │               │pushbuttons).                 │          │          │
  3001.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3002.   │               │activate only windows         │          │          │
  3003.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3004.   │menus          │menus are static              │on        │on        │
  3005.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3006.   │               │menus are more like X and like│off       │          │
  3007.   │               │FeelX v1.0                    │          │          │
  3008.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3009.   │stripcr        │Strip CR/LF on marking        │on        │on        │
  3010.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3011.   │               │Add CR/LF after merking       │off       │          │
  3012.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3013.   │folder         │move folder into foreground   │on        │on        │
  3014.   │               │when the user clicks on its   │          │          │
  3015.   │               │contents                      │          │          │
  3016.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3017.   │               │do not move folders into the  │off       │          │
  3018.   │               │foreground                    │          │          │
  3019.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3020.   │mark           │mark with button 1 (left      │1         │1         │
  3021.   │               │button)                       │          │          │
  3022.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3023.   │               │mark with button 2(right one) │2         │          │
  3024.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3025.   │               │mark with button 3(middle one)│3         │          │
  3026.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3027.   │paste          │paste button                  │(like     │1         │
  3028.   │               │                              │mark)     │          │
  3029.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3030.   │mflags         │define flags for marking (e.g.│none      │none      │
  3031.   │               │mflags:sc or mflags:none)     │          │          │
  3032.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3033.   │               │s=shift                       │s         │          │
  3034.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3035.   │               │a=alt                         │a         │          │
  3036.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3037.   │               │c=ctrl                        │c         │          │
  3038.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3039.   │pflags         │define flags for pasting      │see above │none      │
  3040.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3041.   │amflags        │define alternate flags for    │see above │s         │
  3042.   │               │marking                       │          │          │
  3043.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3044.   │apflags        │define alternate flags for    │see above │s         │
  3045.   │               │pasting                       │          │          │
  3046.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3047.   │pdbflags       │paste with double-click       │on        │on        │
  3048.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3049.   │               │paste with single-click       │off       │          │
  3050.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3051.   │exec           │"start" object x (e.g.pmkill  │x         │          │
  3052.   │               │or MenuLL)                    │          │          │
  3053.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3054.   │altcustpaste   │define current shell as       │on        │          │
  3055.   │               │alternate marking shell       │          │          │
  3056.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3057.   │               │default marking               │off       │          │
  3058.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3059.   │top            │force current shell to stay on│on        │          │
  3060.   │               │top                           │          │          │
  3061.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3062.   │               │normal                        │off       │          │
  3063.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3064.   │               │assign this shell the hotkey x│x (any    │          │
  3065.   │               │                              │alphanum  │          │
  3066.   │               │                              │char that │          │
  3067.   │               │                              │can be    │          │
  3068.   │               │                              │reached on│          │
  3069.   │               │                              │the       │          │
  3070.   │               │                              │keyboard  │          │
  3071.   │               │                              │without   │          │
  3072.   │               │                              │shift     │          │
  3073.   │               │                              │(e.g.     │          │
  3074.   │               │                              │k,k,q))   │          │
  3075.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3076.   │hflags         │hotkey shift combination      │sca (see  │sc        │
  3077.   │               │                              │above)    │          │
  3078.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3079.   │fshotkey       │Enable Fullscreen hotkeys     │on        │          │
  3080.   │               │(don't use this if FeelX is a │          │          │
  3081.   │               │WPS replacement)              │          │          │
  3082.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3083.   │               │Disable Fullscreen hotkeys    │off       │off       │
  3084.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3085.   │delhotkey      │delete a hotkey               │[key]     │          │
  3086.   ├───────────────┼──────────────────────────────┼──────────┼──────────┤
  3087.   │               │delete all hotkey             │all       │          │
  3088.   └───────────────┴──────────────────────────────┴──────────┴──────────┘
  3089.  
  3090.    FG  106/2 
  3091.  
  3092.   FG - manipulate VIO shells  
  3093.  
  3094.   This program can be used to push a shell into the foreground or the background
  3095.   from a batch file.
  3096.  
  3097.   This program requires popuppm.exe to be running. If you use fg very often you
  3098.   should place popuppm.exe in your start-up folder. This is done neither by the
  3099.   installation proc nor by FeelX. You must do it "by hand".
  3100.  
  3101.   fg is now able to switch to a full-screen session but you must run fg -fg in a
  3102.   full-screen session. You cannot switch automatically to a full-screen session
  3103.   if the PM hangs.
  3104.  
  3105.   This program does also work in a DOS session. There can only be one Dos-FG at
  3106.   a time. When starting from a Dos-session the window looses its focus. You must
  3107.   explicitly get it back by fg -fg -focus.
  3108.  
  3109.   Type fg -? to get the following help:
  3110.   FG - change active shell parameters                   (c) '94 Felix von
  3111.   Normann
  3112.  
  3113.   Usage: FG [options] [program [program options]]
  3114.                      (please make sure that popupPM is running!)
  3115.   Options: (default: -focus -fg)
  3116.    -min          minimize (with program: restore old position)
  3117.    -max          maximize
  3118.    -restore      restore if minimized (with program: restore old position)
  3119.    -pos:[x],[y]  change position (values can be negative!)
  3120.                  x: x-position (decimal) or "left" or "right"
  3121.                  y: y-position (decimal) or "top" or "bottom"
  3122.    -xpos:[x],[y] do not adjust on byte boundary (not for VIO shells)
  3123.    -size:x,y     change size
  3124.    -focus        set focus
  3125.    -nofocus      do not set focus
  3126.    -fg           move to the front (with program: restore old position)
  3127.    -bg           move to the background (with program: restore old position)
  3128.    -top          window is always top window (undo with -notop)
  3129.    -pause        wait for any key (receive focus - wait for key - loose focus)
  3130.    -flash        let the titlebar flash 5 times (w/o sound!)
  3131.    -hwnd:hex     change parameters for window with handle "hex"
  3132.    -hwnd:wps     change parameters for the Workplaces Shell (use with caution!!)
  3133.    
  3134.    popuppm  107/2 
  3135.  
  3136.   popuppm - used by FG  
  3137.  
  3138.   This program is required by fg.exe. It must be started before fg is used.
  3139.   Place it in your start-up folder if you use fg sometimes.
  3140.  
  3141.    wpopen  108/2 
  3142.  
  3143.   wpOpen - open WPS objects  
  3144.  
  3145.   A small program that opens the default view for a specific object. An object
  3146.   name can be e.g. <WP_MOUSE> for the mouse object. You can omit < and >, you
  3147.   can write the name in lower-cace and omit the WP_ (e.g. wpopen mouse)
  3148.  
  3149.   If you do not specify any parameters wpopen opens the current directory as a
  3150.   folder. You can open othe directories by specifiing the fully qualified name
  3151.   (e.g. wpopen c:\os2\dll).
  3152.  
  3153.   For help start wpopen -?
  3154.  
  3155.    wo  109/2 
  3156.  
  3157.   Wo - fault-tolerant file search  
  3158.  
  3159.   wo (german: where) was written because I needed a tool to scan all partitions
  3160.   of my hard-drive (That is C: to G:) for a specific file. In addition I
  3161.   frequently forget the names of my files. I know it is similar to clipbrd.exe
  3162.   but I don't know if it is clpbrd.exe or clipboard.exe (on HPFS) or
  3163.   clipbrd.exe. (OOh, I'm getting older...) I don't need a PM-wo, I don't need
  3164.   the ability to search the files for a string and I don't need a high
  3165.   performance search program.
  3166.  
  3167.   wo is a simple, small, fault-tolerant program that exactly does this job.
  3168.  
  3169.   To scan drives D:-F: for config.sys type wo d-f:config.sys
  3170.  
  3171.   To scan all drives for config.sys type wo c-:config.sys
  3172.  
  3173.   If wo does not find any exact matches it lists the 5 best matches. The first
  3174.   one is the best match, the last one is the worst.
  3175.  
  3176.   wo does not do a phonetical search, it does not employee any theoretical
  3177.   proved algorithm like agrep. It does a simple text replacement, is worthy only
  3178.   for short words (filenames), but it is small and fast enough on my system.
  3179.   Maybe you find it useful too.
  3180.  
  3181.   type wo for help
  3182.  
  3183.    ischild  110/2 
  3184.  
  3185.   isChild - is this a child shell?  
  3186.  
  3187.   A very simple program. It's return code is 0 if the current shell command
  3188.   processor is not a child on another one's.
  3189.  
  3190.    line  111/2 
  3191.  
  3192.   line - change no of lines in a VIO shell  
  3193.  
  3194.   Call line with a number of lines. This changes the number of lines in a shell.
  3195.   Example: line 10
  3196.  
  3197.   Type line for help.
  3198.  
  3199.    mgbox  112/2 
  3200.  
  3201.   msgbox - display a message box  
  3202.  
  3203.   A trivial program. Simply pops a a message box with a text
  3204.  
  3205.   Type msgbox for help.
  3206.  
  3207.    font  113/2 
  3208.  
  3209.   font - change the font of the VIO shell  
  3210.  
  3211.   This program changes the font of a shell. Before starting font have a look at
  3212.   the font dialog of a shell. There are listed a lot of fonts. Count
  3213.   (zero-based) the entry where your favourite font is. Assume this is the second
  3214.   (=1, if zero-based). start font 1 from your batch file to switch to that small
  3215.   font.
  3216.  
  3217.   Type font -? for help.
  3218.  
  3219.   Some users told me that font makelist does not work or hang up the system.
  3220.   This has not been solved now since it runs fine on my system... Be careful
  3221.   when using the parameter makelist. All others seem to work.
  3222.  
  3223.    callrx  114/2 
  3224.  
  3225.   callrx - execute a ReXX command  
  3226.  
  3227.   This program calls a Rexx-program and prints the return-value of the
  3228.   ReXX-program to stdout. The name of the ReXX-program is the first parameter
  3229.   while the next parameters are delegated to the ReXX-program.
  3230.  
  3231.   Type callrx for help.
  3232.  
  3233.    fxexec  115/2 
  3234.  
  3235.   fxExec - execute a FeelX object  
  3236.  
  3237.   This is a small program to "execute" a specific object. E.g. fxexec FeelX or
  3238.   fxexec pmkill or fxexec B1Desktop.
  3239.  
  3240.    Trouble shooting & Workarounds  116/1+
  3241.  
  3242.   If you've ever trouble with this program refer to this section.
  3243.  
  3244.    My mouse pointer is lost  117/2 
  3245.  
  3246.   There is a simple workaround: Just load the e.exe or any other program that
  3247.   uses a multi-line-entry-field.
  3248.  
  3249.    My system does not shutdown  118/2 
  3250.  
  3251.   I don't know wether this is a bug of FeelX or OS/2. If your shutdown does not
  3252.   end you must press Ctrl-Alt-Del to avoid chkdsk when the system is booted
  3253.   next. As far as I know no data will be lost
  3254.  
  3255.    My system is flickering  119/2 
  3256.  
  3257.   Open the WPS object and deselect "activate all controls" or analog with fxopt.
  3258.  
  3259.    An active window does not accept data  120/2 
  3260.  
  3261.   The window is probably not active it just have the colors as if it were
  3262.   active. Click on the desktop and move back into the window.
  3263.  
  3264.    My program does not accept the clipboard as an entry  121/2 
  3265.  
  3266.   Use & as a parameter not %c
  3267.  
  3268.    There is a menu-entry missing  122/2 
  3269.  
  3270.   Make sure that the type is defined (x:=type[]).
  3271.  
  3272.    My menu does not disappear  123/2 
  3273.  
  3274.   Press ESC
  3275.  
  3276.    Problems with networks  124/2 
  3277.  
  3278.   Some users told me that their system sometimes hangs when using FeelX v1.0 in
  3279.   a network - especially on the server.
  3280.  
  3281.   I don't have any network and I don't have one available. Therefore this
  3282.   situation is very difficult to reproduce and test and debug. I tried to make
  3283.   the code more stable (even though other did not had similar problems).
  3284.  
  3285.    The EPM pops up  125/2 
  3286.  
  3287.   This seems to be a problem of the EPM. Whenever it receives the focus it
  3288.   pushes itself into the foreground. Sorry, I don't have any ideas now how to
  3289.   solve the problem.
  3290.  
  3291.    Keyin does not work  126/2 
  3292.  
  3293.   OS/2 2.0 might have problems with keyin in DOS shells. Due to a peculiarity of
  3294.   the way shell are pasting keyin does not work. I.e. Dos shells paste about
  3295.   4000 characters. To avoid this specify the dos=false attribute.
  3296.  
  3297.    Problems with the WPS object  127/2 
  3298.  
  3299.   I tried to be careful when creating the WPS object. If was programmed using
  3300.   OS/2 2.1 and TOOLKIT21. I cannot exclude that there might be problems with
  3301.   OS/2 2.0. If so use uninstal.exe and use fxopt.exe to change the parameters.
  3302.  
  3303.    Program is not started  128/2 
  3304.  
  3305.   If the program is not in the PATH (config.sys) you must specify the fully
  3306.   qualified name in the name-attribute - no matter whether the path-attribute is
  3307.   set or not.
  3308.  
  3309.      129/0 
  3310.  
  3311.   Felix von Normann
  3312.   Innstr. 82
  3313.   94036 Passau
  3314.   Germany
  3315.   e-mail: normann@kirk.fmi.uni-passau.de
  3316.  
  3317.      130/0 
  3318.  
  3319.   To remove a shadow open the folder, take the icon with the right mouse button
  3320.   (=press the button), move the shadow over the shredder and drop it there by
  3321.   releasing the right mouse button.
  3322.  
  3323.