>       Does anyone know how I can get a program to run when a certain key
> is pressed?  Not an application, just a normal program written in OPL.
> I want to run the program when I press the Psion-Shift-1 key.

Briefly, you need to have *two* programs: one that is the real program 
that you want to run, and another that sits in the background, waiting 
for this particular keypress.

In order to receive a keypress even when you are in background, you have 
to "capture" that keypress, using call($c58d).  This takes two 
parameters, in the BX and CX "registers".  The BX value is the keycode 
you want to capture, and the CX is regarded as split into CL (the low 
byte) and CH (the high byte).  To cut a long story short, set CH as $e in 
all cases.  Set CL to be the modifiers you want to match.

In your case, there is the additional complication that Psion-1 generates 
the "unexpected" value (W_KEY_OFF) of $2003.

Thus to capture Psion-Shift-1, put the following into your program:

    if call($c58d,$2003,$e0a)
      print "Failed to capure key"
    endif
    As a simple example, write a 9 line program which starts out as above 
and then has

    while 1
      get
      beep 5,320
    endwh

Run it, press a few keys, hear the beeps, then task away and try 
Shift-Psion-1.

Regards, DavidW
