home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
progmisc
/
dblib201.zip
/
MUSCLICK.TXT
< prev
next >
Wrap
Text File
|
1993-02-24
|
6KB
|
119 lines
--------------------------------------------------------------------------------
MusClick.TXT
The documentation below is for the .BIN file: MUSCLICK.BIN
and is taken from the header for MusClick.ASM.
--------------------------------------------------------------------------------
Programmers: Jay Parsons (Jparsons)
and Ken Chan (HazMatZak)
Inspiration: Bowen Moursund (Bowen)
and the folks at BORBBS
Date: July 6, 1992
Version: 1.1
dBASE usage syntax, after LOAD musclick:
cSuccess = call( "MUSCLICK", "I", [<arg2>] ) && install
cSuccess = call( "MUSCLICK", "U" ) && uninstall
store chr( 255 ) TO cMRow, cMCol
call MUSCLICK with cMRow, cMCol && report row, col
nMRow = asc( cMRow )
nMCol = asc( cMCol )
A call with "I" must be made to install the alternate mouse
event handler for this to work. After that call, this .bin
will push a Ctrl-PgUp, or the character specified in the optional
<arg2> argument to the "I" call, into the BIOS buffer when
the left mouse button is released. The <arg2> character must be
a chr() value from 1 to 254, or the argument may be a string
composed of two chr() values, the first of which is chr(255) and
the second of which is the chr() value of the second (high) byte
of an extended code for a key or key combination that has no
ASCII value.
For example, a call with a second argument of chr(255) + chr(97)
will stuff Ctrl-F4. It is likely that you will want to use a
key or key combination that has an inkey() and that works with
ON KEY. Note that the extended codes are always positive
and not always the same as the inkey() values.
The installation call will return "T" if successful, and "F" if not.
If the BIOS buffer happens to be full when the mouse button is
released, the click will go unreported, but the row and column
will be updated.
If you wish a default character different from Ctrl-PgUp, change
the DEFAULTKEY value before assembly. For an extended code,
set it to the value of the second byte * 256 (100h). The ESC key
is the only key that will attract dBASE's attention in the middle
of a dBASE operation such as "LIST" or "INDEX". However, that
operation will be cancelled if ESC is pressed, so consider what is
going on and whether you want to have it recognize a click.
Calls to get the row and column must have the first argument
be chr(255), and must have a second argument. Both MUST be variables.
A call to find the row and column if no "I" call has been made,
or no clicks have occurred, will return chr(255) for each.
The row and column reported are those as of the last click, which are
not necessarily those current at the time of the call. They are
determined by dividing the values in pixels reported by the mouse
by 8 each and ignoring any remainder.
After one call has been made to get the mouse row and column,
subsequent calls to get the row and column will return chr(254) for
each if no click has occurred since the previous call. This allows
the dBASE program to differentiate between actual keypresses
and "keypresses" made by this routine to report mouse clicks.
The recommended way to test for an actual mouse click is to see if the
row value returned is below 200; all row values 200 and above are
reserved for future expansion (only 254 and 255 are currently used).
A call with "U" should be made to uninstall the alternate event
handler before installing it with a different key, and also before
ending the dBASE program for safety. Repeated calls to install
the handler without uninstalling it will overwrite the address of
the dBASE handler and prevent restoring it.
The dBASE mouse-event handler is disabled while the one in this
.bin is installed. Consequently, dBASE will not know of the
current mouse position or click status, and calls to the .bins
in the recent Technotes article, uploaded as MOUSE_FU.TXT, will
not return correct information. Use this .bin or those, but not
both at once.
Following are as specified by Microsoft for its mouse:
Register usage on call of an alternate event handler
AX = condition mask ( bits 0-4 set for events occurred )
BX = button state ( bit 0 set if left button pressed;
bit 1 if right; bit 2, center.) <unused>
CX = horizontal mouse cursor coordinate in pixels
DX = vertical " " " " "
SI = last horizontal mickey count ( vertical? ) <unused>
DI = last vertical mickey count ( horizontal? ) <unused>
DS = mouse driver data segment <unused>
Event mask bits, 1 to respond to that event:
0 = mouse has moved ( value 1 )
1 = left button pressed ( value 2 )
2 = left button released ( value 4 )
3 = right button pressed ( value 8 )
4 = right button released ( value 16 )
Thus, if our handler were to be called whenever the mouse moved
or either button were released, the mask would be 10101, or
16 + 4 + 1, decimal value 21, rather than the 4 we use because
we care only about release of the left button.
If an event not specified in our event mask occurs, our handler
will not be called at all. If the left button is released, it
will be called. AX, the condition mask, will report all events
that have occurred, not only the one specified in the event mask.
--------------------------------------------------------------------------------
End of File: MUSCLICK.TXT
--------------------------------------------------------------------------------