QTIPS - Use of Mouse
Version 3 Technical Highlights - Mouse_Subs
Version 3 Technical Highlights - INRECT
QTIPS - Use of Mouse
Advanced Revelation Assembler Interface Module - Yves Pattyn, Technical Manager, Distribase, France
Version 3 Technical Highlights - Input.Char
QTIPS - Moving Objects the EASY way.
Menus and Menu Drivers
QTIPS - Postscript Driver Problem
QTIPS - Interrupt Proof Error Messages
RTP Series - RTP57
File Variables
Reader's Clinic - Volume Pointer Record
REVMEDIA Revisted
Utility Diskette # 4
VERBatim - V119
VERBatim - V125
VERBatim - V118
Advanced Revelation Assembler Interface Module - Yves Pattyn, Technical Manager, Distribase, France
QTIPS - Menus Without an Action Bar
Playing with Scan Codes
QTIPS - Compiling Protection Code
QTIPS - Invalid Code and Command
QTIPS - Code/Command Help
Compiling 64K on a Shoestring by Blaise Wrenn (LexStat Systems Ltd)
@ATTACK - @Break
QTIPS - Break-On Date Fields
A RevTechie Replies - And Miscellaneous Jottings - Mike Pope - Revelation Technologies (UK) Ltd
Reader's Clinic - Suppressing Break-On Columns (Again!)
A RevTechie Replies - Mike Pope - Revelation Technologies (UK) Ltd
QTIPS - BREAK-ON Headings
The End of the Line - Mike Pope and Hal Wyman
QTIPS - RLIST Average / Total Results
What's New (and un(der)documented!) In 2.12
@ATTACK - @Scribe.State
Reader's Clinic - Scribe Replace Processes in Window
Redefining Keys
Referential Integrity
@ATTACK - @Edit.Keys
@ATTACK - @Environ.Keys
@ATTACK - @Int.Const
@ATTACK - @Move.Keys
@ATTACK - @Priority.Int
@ATTACK - @Macro.Keys
@ATTACK - @Macro.Mode
Playing with Scan Codes
Uncommon Knowledge - WC_Unkeys%
Uncommon Knowledge - WC_Except_Keys%
Uncommon Knowledge - WC_Soft_Keys%
Reader's Clinic - Screen Width
Screen Grabber
Reader's Clinic - Slow Multivalued Screen Display
Utility Diskette # 4
@ATTACK - @Help.Level
QTIPS - Using @Upper.Case and @Lower.Case with Foreign Languages
Base Conversions
Utility Diskette # 3 - Part I
Sorting out Collation Sequences by Mike Pope
What's New (and un(der)documented!) In 2.12
QTIPS - Border.Colour
QTIPS - Overriding Menu Colours
Utility Diskette # 3 - Part II
QTIPS - Query Windows - Changing Colours
QTIPS - DOSTime
VERBatim - V11
@ATTACK - @Backgrnd.Time
@ATTACK - @Index.Time
QTIPS - Time-outs in Windows
Reader's Clinic - Dynamic Screen Display
VERBatim - V65
QTIPS - Securing Menus
QTIPS - Invalid Code and Command
Uncommon Knowledge - WC_Soft_Keys%
Utility Diskette # 4
Uncommon Knowledge - Window_Common% in Paint - Part I
RevTi Just Wanna Have Fun
Uncommon Knowledge - Window_Common% in Paint - Part III
Reader's Forum - Numeric Precision in R/Basic - Hal Wyman
@ATTACK - @Return.Value
Utility Diskette # 3 - Part I
QTIPS - Moving Objects the EASY way.
Menus and Menu Drivers
Caching in on the Frames Array - Mike Pope
What's New (and un(der)documented!) In 2.12
DOS Interfacing (Part II)
Vroom
Vroom - Window Processing
Reader's Forum
VROOM - Doubling MFS Write Speed
@ATTACK - @CPU.Type
Reader's Clinic - Scaled Masked Decimal Conversions
Reader's Clinic - Line Length > 256 Characters
QTIPS - String Space
QTIPS - String Space Format Errors
Reader's Forum - Numeric Precision in R/Basic - Hal Wyman
VERBatim - V70
VERBatim - V124
@ATTACK - @Attrbt.Ptr
@ATTACK - @Query.Table
REVMEDIA Revisited
Uncommon Knowledge - WC_Table_Exit_Mode%
QTIPS - New Catalyst Option
Version 3 Technical Highlights - Deleting Tables Programmatically
Version 3 Technical Highlights - Aliasing Tables Programmatically
Version 3 TCL Subroutines - Creating Tables
Version 3 TCL Subroutines - Deleting Tables
Version 3 TCL Subroutines - Aliasing Tables
Symbol Table Structure

RevMedia FKB

DocumentV4I5A1
TitleVersion 3 Technical Highlights - Mouse_Subs
KeywordsMOUSE_SUBS
TextThe Mouse_Subs routine has been fundamentally rewritten (to conform very
closely to the published specifications for the Microsoft mouse driver
based around interrupt 33 calls) since it was discussed in Volume 3 Issue 7
It now only takes 4 parameters As previously the first one is an action
code but again as this is a C or assembler routine the other parameters
vary based upon the action code

Code ³ Description ³ Param1 ³ Param2 ³ Param3
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ
0 ³ Initialize mouse driver ³ Must be null ³ Must be null ³ Must be null
³ Code returns 0 if a ³ Returns the ³ ³
³ mouse is not installed ³ number of ³ ³
³ or 1 if a mouse is ³ buttons which³ ³
³ installed and RESET ³ is always 2 ³ ³
³ ³ or Microsoft ³ ³
³ If the mouse has been ³ Mouse ³ ³
³ lost (due to PCing to ³ ³ ³
³ DOS or somesuch) it can ³ ³ ³
³ be restored WITH a ³ ³ ³
³ Ctrl Break OR by calling³ ³ ³
³ Mouse_Subs PASSING it a ³ ³ ³
³ 0 followed by a 1 ³ ³ ³
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
1 ³ Turns mouse back on ³ Must be null ³ Must be null ³ Must be null
³ AFTER it has been turned³ ³ ³
³ off WITH a code 2 ³ ³ ³
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
2 ³ Turns mouse off ³ Must be null ³ Must be null ³ Must be null
³ temporarily ³ ³ ³
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
3 ³ Returns CURRENT location³ Must be ³ Must be ³ Must be
³ and state of mouse ³ initialised ³ initialised ³ initialised
³ ³ Returns ³ Returns the ³ Returns the
³ ³ 0 No key ³ X position of³ Y position of
³ ³ being ³ the mouse ³ the mouse
³ ³ pressed ³ ³
³ ³ 1 Left key ³ ³
³ ³ being ³ ³
³ ³ pressed ³ ³
³ ³ 2 Right key ³ ³
³ ³ being ³ ³
³ ³ pressed ³ ³
³ ³ 3 Left and ³ ³
³ ³ right keys ³ ³
³ ³ being ³ ³
³ ³ pressed ³ ³
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
4 ³ Locates mouse at a given³ Must be null ³ X position ³ Y position
³ X Y position on screen ³ ³ ³
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
5 ³ Returns CURRENT location³ Must be ³ Must be ³ Must be
and 6³ and button press state ³ initialised ³ initialised ³ initialised
³ of mouse ³ Returns ³ ³
³ ³ 0 Key ³ ³
³ ³ released ³ ³
³ ³ 1 Left key ³ ³
³ ³ being ³ ³
³ ³ held down ³ ³
³ ³ 2 Right key ³ ³
³ ³ being ³ ³
³ ³ held down ³ ³
³ ³ 3 Left and ³ ³
³ ³ right keys ³ ³
³ ³ being ³ ³
³ ³ held down ³ ³
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
7 ³ Sets the X coordinates ³ Must be null ³ Leftmost X ³ Rightmost X
³ within which the mouse ³ ³ position or ³ position or
³ can operate ³ ³ rightmost X ³ leftmost X
³ ³ ³ position ³ position
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
8 ³ Sets the Y coordinates ³ Must be null ³ Leftmost Y ³ Rightmost Y
³ within which the mouse ³ ³ position or ³ position or
³ can operate ³ ³ rightmost Y ³ leftmost Y
³ ³ ³ position ³ position
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
10 ³ Permits the definition ³ Initialise to³ Set to 32512 ³ Set to the
³ of the mouse CURSOR ³ zero ³ if USING the ³ ascii value
³ character and the cursor³ ³ third ³ to use for
³ colour At the time of ³ ³ parameter to ³ the mouse
³ going to press the ³ ³ specify the ³ CURSOR E G
³ actual values have not ³ ³ character to ³ 2 for a
³ been fully understood as³ ³ use for the ³ smiley face
³ it only seems to be used³ ³ CURSOR ³ 65 for the
³ in PAINT when several ³ ³ ³ letter A etc
³ items are selected by ³ ³ Set to 30719 ³
³ "boxing" ³ ³ to RESET the ³ Set to 30464
³ ³ ³ block CURSOR ³ to RESET the
³ ³ ³ ³ block CURSOR
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
11 ³ Returns a location ³ Must be null ³ Must be ³ Must be null
³ relative to the last ³ ³ initialised ³
³ time the mouse was ³ ³ Returns the ³
³ queried Whilst this ³ ³ position of ³
³ information is not ³ ³ the mouse ³
³ stunningly useful on its³ ³ relative to ³
³ own it does provide a ³ ³ where it last³
³ good way of finding out ³ ³ was as a ³
³ whether the mouse is ³ ³ positive or ³
³ moving If the second ³ ³ negative ³
³ parameter returns a 0 ³ ³ integer ³
³ then the mouse is still ³ ³ ³
³ any other value means ³ ³ ³
³ that the mouse is moving³ ³ ³
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
15 ³ Sets the mickey to pixel³ Must be null ³ The ³ The
³ ratio that is how far ³ ³ horizontal ³ vertical
³ the mouse must move ³ ³ sensitivity ³ sensitivity
³ before the mouse CURSOR ³ ³ of the mouse ³ of the mouse
³ moves accordingly The ³ ³ The lower the³ The lower the
³ lower the value in ³ ³ number the ³ number the
³ Param2 and Param3 the ³ ³ more the ³ more the
³ more sensitive the mouse³ ³ mouse CURSOR ³ mouse cursor
³ is ³ ³ moves for a ³ moves for a
³ ³ ³ given mouse ³ given mouse
³ ³ ³ movement ³ movement
³ ³ ³ Experiment ³ Experiment
³ ³ ³ WITH values ³ WITH values
³ ³ ³ between 1 and³ between 1 and
³ ³ ³ 20 ³ 20
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
21 ³ Gets buffer size in ³ Returns ³ Must be null ³ Must be null
³ bytes required by mouse ³ buffer size ³ ³
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
26 ³ Sets mouse sensitivity ³ X value ³ Y value ³ THRESHOLD for
³ The lower the value used³ Defaults to ³ Defaults to ³ double speed
³ the less sensitive the ³ 50 ³ 50 ³ Defaults to
³ mouse is The range ³ ³ ³ 50
³ appears to be 1 to 100 ³ ³ ³
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
27 ³ Queries mouse ³ X value ³ Y value ³ THRESHOLD for
³ sensitivity ³ ³ ³ double speed
ÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
36 ³ Queries the version ³ Must be ³ Must be ³ Must be
³ number and the type of ³ initialised ³ initialised ³ initialised
³ the mouse ³ to null ³ to null ³ to null
³ ³ Returns the ³ Returns the ³
³ ³ version ³ type of ³
³ ³ number as ³ mouse ³
³ ³ what appears ³ multiplied by³
³ ³ to be a ³ 256 Thus to ³
³ ³ decimal ³ get the mouse³
³ ³ string that ³ type divide ³
³ ³ needs to be ³ by 256 and ³
³ ³ converted to ³ use the ³
³ ³ a hex string ³ figures below³
³ ³ My mouse ³ taken FROM ³
³ ³ version is ³ the ³
³ ³ 7 04 the ³ SYSINCLUDE ³
³ ³ number ³ record ³
³ ³ returned for ³ CONFIGURE ³
³ ³ this is 1796 ³ RECORD EQUS ³
³ ³ which if ³ 1 Bus ³
³ ³ printed ³ 2 Serial ³
³ ³ "MXyMD2" ³ 3 InPort ³
³ ³ gives 7 04 ³ 4 PS/2 ³
³ ³ ³ 5 HP ³
ÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Some CALLS have been omitted FROM the table above specifically those which
have little practical use for normal AREV programming Note that several of
the CALLS documented above are not currently used by AREV and thus may not
be future proof (It is considered that if AREV itself uses undocumented
routines they are far more likely to stay there!) For further information
about the missing CALLS see the Microsoft Mouse Programmer's Reference

Codes 7 and 8 are used to construct a box on the screen within which the
mouse may move Normally this would be set to the screen WIDTH and DEPTH but
there might be times when mouse movement within an area is desirable

The code 10 can be used to good effect within a LOOP in a PROGRAM when you
wish to indicate to a USER that the mouse is inactive and that INPUT FROM it
will be ignored The mouse CURSOR can be changed to another figure or even
as in the following EXAMPLE changed within the LOOP to give the illusion of
a turning bar

/* Following code for demonstration purposes only change the DELAY loop
to suit your own computer */

For z = 1 to 100
CALL MOUSE_SUBS( 10 0 32512 47 ) ; * "/"
for x = 1 to 1000 ; next
CALL MOUSE_SUBS( 10 0 32512 196 ) ; * " "
for x = 1 to 1000 ; next
CALL MOUSE_SUBS( 10 0 32512 92 ) ; * "\"
for x = 1 to 1000 ; next
CALL MOUSE_SUBS( 10 0 32512 124 ) ; * "|"
for x = 1 to 1000 ; next
next
CALL MOUSE_SUBS( 10 0 30719 30464 )


(Volume 4 Issue 5 Pages 4 7)
[revmedia/copyrigh.htm]

Page last modified: 31/01/03