home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
keyboard
/
kw_1
/
!KeyWindow
/
!Help
< prev
next >
Wrap
Text File
|
1993-05-10
|
24KB
|
605 lines
Key Window (v 1.50)
-=-=-=-=-=-
by Richard G. Hallas
(See the end of this file for details of the latest
version. There are a couple of important points.)
____________________________________________________
This program provides an on-screen function keystrip
in a window. It should prove useful to owners of
A3000s, A5000s and A540s who do not have keystrip
holders on their keyboards, but it does more than
that: you can 'press' the keys by clicking on them
with the mouse, and Key Window can keep track of a
list of up to 32 keystrips, opening and closing them
automatically as you load, use & quit applications.
To use:
-------
Load by double-clicking in the usual way. If you are
in the habit of booting up a number of applications
when you switch on, then you might like to include
Key Window near the beginning of your boot-up
sequence so that it can keep track of other
applications starting up and open keystrips for
them.
Once loaded, clicking SELECT on the icon-bar icon
will open a keystrip window; either the first one
on the list, or the last one shown if you closed a
strip which was opened automatically. (If you ignore
Key Window, and load DeskEdit [for example] a
keystrip will appear anyway, since DeskEdit is
defined as one of the applications for which Key
Window has a keystrip.) The keystrip will appear
behind other windows so that it is inobtrusive, but
you can easily bring it to the front by clicking
its title bar in the usual way.
Pressing the hot-key combination <SHIFT-CTRL-TAB>
or <CTRL-SHIFT-INSERT> will toggle the keystrip
between the front and the back of the desktop.
(The hot-key may not work if an application such
as DeskEdit has the input focus; it is for this
reason that there are two version of the same
hot-key.)
In addition to opening and closing keystrips when
you load and quit applications, Key Window is also
'context sensitive', and will update the contents of
the keystrip window according to whichever program
currently owns the caret. If a program which does
not have a keystrip defined claims the caret, then
the keystrip will be closed, but if the caret is
turned off completely, then the last keystrip used
will continue to be shown.
The icon-bar menu has the usual 'Info' and 'Quit'
options, along with two others: 'Keystrips' and
'Options'. The first of these provides access to an
'Applications' submenu, and choosing an application
from this menu will open a keystrip for it.
The other icon-bar submenu, 'Options', governs how
the keystrip window will operate. The options are as
follows:
☓ 'Open at top': If this is ticked, the window will
always appear at the top of the screen; otherwise
it will appear just above the icon bar, or wherever
you put it last.
☓ 'Auto scroll': This makes the keystrip window
behave in the same way as the icon bar does when it
is full; that is, it scrolls sideways automatically
when the pointer is moved to the left and right
hand edges.
☓ 'Scroll bar': This toggles the horizontal scroll
bar and size icon; if 'Auto scroll' is selected,
then the scroll bar is unnecessary, but you may
wish to use it to get from one side to the other
more quickly.
It is not possible to deselect both 'Auto scroll'
and 'Scroll bar' at the same time, since it would
obviously then be impossible to move from one side
of the keystrip to the other.
☓ 'Compress': This option will force the entire
strip to fit onto the screen. Obviously, since the
key labels have space for 16 characters, the fully-
annotated keystrip cannot be fitted on the screen
(except with very large screen modes indeed). If
you select this option, the full window will cease
to scroll, and will be sqaushed to fit whichever
screen mode you are using. Any key labels which are
wholly visible will be centred in their slots as
usual, but labels which overflow their slots will
be justified to the left, so that you can at least
see how they begin. In all standard screen modes it
is possible to see almost 6 characters in a
compressed strip. If you do happen to be using a
very large screen mode which can accommodate the
whold strip without having to scroll, then the
Compress option will be turned off in that mode,
and you won't be able to turn it on again (it will
appear shaded until you select a mode which could
use it). <F12> and <CTRL-SHIFT-F12> are usually
automatically given the respective labels "Command
Line" and "Exit Desktop". In Compress mode, these
will appear as "* CLI" and "Exit", but if you save
a strip the full labels will be used. If these two
keypresses are being used for other purposes, and
therefore have different labels from standard, the
new labels will not be affected by the Compress
mode.
The last two options are separated from the others
by a dotted line, and they govern the way the
'context switching' aspects of the program work.
☓ 'Sense caret': If this option is selected, the
keystrip will be fully context sensitive, and as
the input focus moves between windows, the keystrip
will change to reflect its position. (Note that for
the sake of simplicity, the program's menu refers
to the 'caret' when it actually means the 'input
focus'; there doesn't really have to be a physical
caret. A good example is of this Draw Plus, which
only shows a caret when entering text objects; the
keystrip nevertheless still applies.)
☓ 'Sense apps': If this option is selected, Key
Window will open and close strips as applications
are loaded and quit. Since this could potentially
interfere with the context switching option above,
then if the 'Sense caret' option is on, the 'Sense
Apps' option will only work if a keystrip is not
currently in use.
All this makes Key Window sound very complicated,
but you should find it quite easy and natural to
use.
Regardless of the state of these options, whenever
the window is opened, or the screen mode is changed,
it will appear behind the other windows, and will
resize itself to fit the current width of the
screen. The default settings of these options can be
defined by editing the !Run file; see that file for
details, and also later in this !Help file.
On to the keystrip window itself. Clicking any of
the key definitions with SELECT or ADJUST will
'press' that key. If you are not using the 'context
switching' features you should remember that the
same key is pressed regardless of whatever strip is
showing; you may for example have the keystrip for
Edit on the screen, but if you are currently using
Impression, then clicking on <CTRL-F4> will bring up
the Find/Replace box rather than doing an Indent
Block in Edit. This seems obvious, but it's easy to
forget. They're the same keys, regardless of how
they're labelled.
Since <CTRL-SHIFT-F12> is a dangerous keystroke (it
normally exits the desktop), I have made the icon as
difficult to click by accident as possible. To
activate it, you must click on it with both SELECT
and ADJUST simultaneously. (The easiest way of doing
this is probably to hold down SELECT and then click
ADJUST.)
The keystrip window has its own menu so you can edit
the strips and create new ones. The menu options are
as follows; I shall deal with them in turn:
☓ Edit item: this is context-sensitive, and only
appears when you click over a key label. Enter the
contents in the submenu leaf; up to 16 characters
are allowed for each, even when the strip is
compressed (you just won't be able to see all the
text).
☓ Edit title: this allows you to edit the title of
the keystrip; the title will be used in the
keystrip window and in the 'Applications' menu.
☓ Get strip: this is the same as the 'Keystrips'
option on the icon-bar menu, and updates the window
with whichever keystrip you choose. Any unsaved
contents of the keystrip window will be lost if you
use this option. The only difference here is that
the keystrip is opened at the front, whereas it is
opened at the back when you select a strip from the
icon-bar menu. You should note that if the 'Sense
caret' option is on, then using either of these
application keystrip menus will lose the input
focus. If it didn't, then the keystrip would change
back to the one needed for the current application
as soon as you had selected a different one.
☓ Clear strip: this blanks the strip to give you a
fresh start. The two usual functions of F12
(Command Line & Exit Desktop) are entered for you
automatically, but you can delete them if you wish.
Note that if you are entering a strip in Compress
mode, "Command Line" and "Exit Desktop" will be
abbreviated to "* CLI" and "Exit". However, this is
for display purposes only, and if you save a strip
the full labels will be saved in the file (unless,
of course, you have replaced them with something
else).
☓ Open with?: entering a taskname (as it appears in
the Task Display window) into this submenu will
make that strip open and close automatically when
you use a particular application. Leave the option
blank if you do not wish this to happen, but
remember that this will disable the context switch
facilities for that particular application.
☓ Save strip: there are two ways of saving
keystrips, which you must choose from the submenu
(clicking on 'Save strip' alone will do nothing).
Firstly, 'Replace old' will overwrite the existing
definition with your edited version, so you can
easily add to a strip or correct it. (This option
is unavailable if you have used 'Clear strip'.)
Secondly, 'Create new' will save a totally new
keystrip and add it to the 'Applications' menu.
Notes on saving new strips
--------------------------
When saving a new strip, the data is saved into a
text file within the 'Data' directory in the
!KeyWindow application directory. If you use the
'Create new' save option, Key Window will save the
file with a numeric filename, starting at number
'0'. If '0' exists, then it uses '1', and so on. If
there are 32 files in the directory, then Key Window
will not allow you to save a new strip, only
overwrite existing ones. When Key Window starts up,
it reads in the contents of all the files in the
'Data' directory, in the order in which they appear
in the directory viewer; this is also the order they
will appear in the 'Applications' menu. If you want
a particular strip to always be first on the
'Applications' list (and therefore be the default
one to use when you click on the icon-bar icon) you
should make sure it is the first to appear in the
directory viewer; using the name '!' should ensure
this. It doesn't actually matter what you call the
files; the program just uses numerics for the sake
of simplicity.
If you wish to create your function key files in
DeskEdit, say, and not with Key Window itself, the
file format is as follows:
☓ The first line is the title of the application
(max. 20 characters) to appear in the window title
and 'Applications' menu.
☓ The second line is either blank or a taskname
(max. 19 characters) for the strip to open
automatically.
☓ The remainder of the file has up to 12 lines, one
for each key. If a line is blank, that key will
have no labels. Not all 12 keys need to be defined:
you use only as many lines as the keystrip
requires.
Each line has up to four entries, separated by
commas: for the key alone, and in conjunction with
Shift, Ctrl and Ctrl-Shift. You need only enter as
many labels as necessary, so you can finish a line
before Ctrl-Shift, for example. Each line should
therefore contain 0 to 3 commas. Note that if, say,
a particular key has no function alone, but has a
function in conjunction with Shift, the definition
line should start with a comma.
Note also that although spurious commas are not
necessary, they do not matter, and indeed if you
save a definition file from the program, every line
it produces will contain three commas.
Setting options with <KeyWindow$Flags>
--------------------------------------
Key Window can be made to start up every time with a
certain combination of options already in effect.
You must edit the !Run file in the application
directory to achieve this. Alter the number in the
line 'Set KeyWindow$Flags 51' (The value of 51 is
the default if you omit this line or enter an
illegal value). The variable sets the default state
for the six settings which can be temporarily
toggled on and off in the 'Options' submenu.
The <KeyWindow$Flags> variable is a decimal number
in the range 0 to 63, which is calculated from the
following set of bits, which mean, when they are
set:
Bit 0: Always open keystrip at top of screen.
Bit 1: Scroll strip when pointer reaches edges.
Bit 2: Show horizontal scroll bar, along with a
resize icon and a toggle size icon.
Bit 3: Always compress keystrip to fit screen.
Bit 4: Context sensitive: applications gaining
the caret will open new strips.
Bit 5: Load sensitive: applications starting up
and quitting will open and close strips.
So, for example, if you wanted just 'Open at top' &
'Compress' on by default, you would use the value 9,
since you would be setting bits 0 and 6, and 9 is
the decimal equivalent of binary 1001.
Do note that the bits are in descending order:
namely, bit 0 is the one on the right.
Note also that any values with bits one and two both
set to zero are invalid, since they would mean that
both the 'Auto scroll' and the 'Scroll bar' options
were off, and the program will not allow this. The
smallest value you may use is 2, and if you try to
use an illegal value the program will automatically
turn on 'Auto scroll' for you.
If you examine the !Run file further, you will find
another variable, <KeyWindow$DummyMessage>. This is
a message number for internal use. It should always
be an unassigned message; if at some point in the
future this message is assigned a use, it will be
necessary to amend this variable to avoid conflicts.
This is very unlikely, though.
Finally
-------
So there you have it - what I hope is a useful
program! This is PUBLIC DOMAIN SOFTWARE and as such
may be distributed quite freely, just as long as it
is not modified or tampered with in any way, and all
the associated files are kept together unmodified.
The !KeyWindow directory should contain the
following files:
!Boot
!Help (This file)
!Run
!RunImage
!Sprites
!Sprites22
Data
Source
Sprites
Sprites22
Templates
The Data sub-directory should contain a full set of
32 keystrips, numbered 100-131. You should examine
these and delete the ones you don't need in your own
working copy, but if you pass this application on,
please supply all the keystrips. Note that if you
don't delete some of the keystrips Key Window will
not let you add any more, as you can only have a
maximum of 32 available at any one time.
(Note: The default keystrips provided are all for
commercial applications, except for three public
domain items: Draw Plus by Jonathan Marten, Zap by
Dominic Symes and DisAssem by Henrik Pedersen. All
three of these applications are excellent, and are
readily available through public domain libraries.)
I hope you like this program and find it useful. If
you do, send me a disc with some PD software on it,
and I'll return your disc with the other PD things
I've written on it, and the latest version of this
program if it has been updated. Remember to let me
know which version number you have, and if you find
any bugs, please TELL ME! I try to support all my
programs, and will correct any bugs I know about.
So please send letters, discs, bug reports and
suggestions (none too rude, please!) to the
following address:
Richard G. Hallas,
31 Skelton Crescent,
Crosland Moor,
Huddersfield,
West Yorkshire,
HD4 5PN
ENGLAND
Version revisions:
-=-=-=-=-=-=-=-=-=-
The following versions have been made available in
the public domain:
Version 1.00: First release version, sent to APDL.
This was only sensitive to applications loading and
quitting, not to the movement of the caret between
windows. Its only option was 'Open at top'.
Version 1.06: this provides the additional hot-key
<CTRL-SHIFT-INSERT> (duplicating <CTRL-SHIFT-TAB>),
since DeskEdit 1.20 now uses <CTRL-SHIFT-TAB> for
one of its own features. The hot-key now toggles the
window between front and back, rather than just
bringing it to the front as in version 1.00.
Version 1.06 also corrects a small bug which caused
the window to reopen upon a mode change or return to
the desktop, when it had previously been closed by
the user.
Clicking on the icon with Adjust does the same as
Select, but also provides a little animation! (This
has always happened, but was undocumented for
version 1.00.) I like these little touches!
Version 1.07: Small cosmetic changes have been made
to the Keystrip menu to bring it in line with normal
RISC OS standards. The two Edit submenus used to
have red borders and no titles, and the Save strip
submenu also used to have no title bar. Thanks to
Mark Moxon of RISC Developments for his comments.
Version 1.12: There are numerous modifications in
this version: the system variable <KeyWindow$Flags>
replaces <KeyWindow$Top> in previous versions, and
provides two more options, 'Auto scroll' and 'Scroll
bar'. The 'Open at top' option on the main icon-bar
menu has been replaced by, and moved onto, a new
'Options' submenu, which also contains the two other
options provided by the <KeyWindow$Flags> variable.
(All the menu items are now at the correct 44 OS
units height, whereas they were previously only 40
units high.)
The Keystrip window itself now behaves more sensibly
in that it can scroll itself when the pointer pushes
up to its edges, in the same way as the icon-bar. It
is meant to mimic the icon-bar, and will 'sense' the
pointer at a similar horizontal position.
For this reason, the horizontal scroll bar is much
less necessary, and can now be toggled on and off.
In the default state, the program leaves it switched
off, which looks neater and saves a little space on
the desktop.
Key-combination labels have been added to the right
hand edge of the window, and are identical to the
ones at the left.
My thanks must go to Henrik Pedersen for his very
useful and helpful suggestions, some of which are
implemented in version 1.12, notably the 'Auto
scroll' feature. I can't imagine why I didn't think
of this myself! Other suggestions will have to wait
for a later version, when I have time to think about
them.
Version 1.25: Credit must once again go to Henrik
Pedersen, this time for showing me how to read the
taskname of the application owning the caret. It's
actually very easy to do, but I had managed to miss
it every time I had consulted the PRM! Version 1.25
represents a completely new way of operating for Key
Window, and this is the way I wanted it to work in
the first instance. The facility to read the caret
owner's taskname enables it to be wholly context
sensitive, whereas previous versions simply opened
and closed strips as applications were loaded and
quit.
The <KeyWindow$Flags> system variable and the
'Options' submenu have both been extended to take
account of the new context options. Also, a very
small but perfectly formed bug which has been around
since the first version, and which meant that the
strip didn't resize upon a mode change if it was
closed, has finally been killed, and a very minor
deficiency (not exactly a bug) concerning reopening
the same strip has been corrected from previous
versions.
Version 1.32: This is the first version to sport the
'Compress' option. Such a feature was suggested by
Rob Sherratt and David Pilling; my thanks to them
for their helpful comments. Minor modifications have
been made to the Templates file in order to avoid
scaling problems in certain modes, and Key Window
will now also justify the text intelligently within
the key labels.
A small bug in the Templates file has also now been
fixed: all the key label icons previously had a
button-type of Click/Drag, and these have now been
changed to just Click, because I found that holding
a mouse button down could cause a click to register
twice, which was quite undesirable. The button-type
Click ensures one click only being registered.
The single exception to this modification is the key
label for <CTRL-SHIFT-F12>, which requires the
Double/Click/Drag button type for its safety
precaution feature to work. This safety feature has
also been changed slightly in this version, from a
sort of double-drag-click within the icon to a click
with both SELECT and ADJUST together. This is safer,
more reliable and less temperamental.
The save routine has been slightly modified in this
version to ensure that if automatic F12 labels are
being used, the full label is saved, rather than the
shorter version used in the Compress mode display.
Version 1.40: I'm supposed to be working on Key
Window 2 at this point, but I'm not being able to
find time to get down to it. Therefore I've fixed
the bugs I knew about in version 1.32, and added
some high resolution sprites for RISC OS 3 users. I
also created some icons for use with the Pinboard.
Full help on menus for RISC OS 3 has been added too.
Three small bugs corrected: trying to open a strip
for a task which doesn't have one defined now sounds
a beep rather than flashing a strip on and off the
screen. Defining a 16-character key label no longer
obliterates the label for the next key along. Strips
now take the size of the title bar into account when
different window tools are in use by RISC OS 3. I
also found a fourth problem which I'm sure wasn't
there under RISC OS 2: the checking of files in the
keystrip data directory wasn't working, and so newly
defined keystrips were overwriting existing ones.
Not a happy situation! I've therefore used a better
checking procedure, and the problem has gone away.
I suspect that results from certain OS_File calls
have changed with RISC OS 3, as this area of Key
Window (which used to work) has not, so far as I can
remember, been changed.
Version 1.50: Prior to this version, Key Window used
to interfere with the auto-save document feature in
Impression, preventing it from working. This was due
to the use of a dummy message to follow which task
owned the caret. However, I have discovered how to
do this a better way, and so the dummy message has
now gone (which is good) and the program no longer
upsets any other applications. You can, therefore,
now rely on Impression's auto-save whilst Key Window
is running. This is the most important, but least
visible, change in this version.
A second change is the addition of 3D templates.
In order to use these, you must have (a) RISC OS 3·1
or later fitted, and (b) have the 'desktop 3D'
option switched on. (This is achieved by setting bit
1 of CMOS RAM byte 140.) There have been a few other
changes to the templates so they work OK with the
new Acorn desktop (with shaded window backgrounds).
Due to some scaling problems with the 3D borders,
the 'compress' options's workings have been modified
slightly, but this should not be noticeable. A small
bug has also been fixed which used to cause the key
label validation strings to sometimes get over-
written; a similar case with the keystrips menu has
also been fixed. I don't think there are any other
bugs left in this version (I hope).
NB There will certainly be a Key Window 2 at some
future point, but finding time to write it is a
major problem. This version (1.50) is therefore a
stop-gap: the new version will have many extra
features, but I don't intend altering Key Window 1
any further now unless I discover any remaining
bugs.
One final point of note is that Key Window is now
supplied with a full 32 keystrips, meaning you can't
add any more without deleting some first. I intend
that Key Window 2 will be able to handle any number
of keystrips (and even have more than one per
application, for applications which directly support
this feature), and they will be stored in a similar
way to fonts in a font directory. Watch this space.
- R.G.H.