SDGT - The Single Display
Groupware Toolkit |
|
The SDG Toolkit is a framework for designing single display
groupware applications. SDGT is a COM object designed for managing multiple
mice and keyboards.
To learn more about the SDG Toolkit read our CSCW
Paper
 |
Download |
Please note that the new version of the SDG Toolkit requires Windows XP
and Microsoft Visual Studio .NET
Please click on the "Download Now" link to obtain the latest
version of the SDG Toolkit. Please extract the SDG Toolkit dll file to
some directory on your hard drive. No registration of the dll is required
but you must remember where you saved this file on the Hard Drive.
[ Download ][
Documentation ][ Example
][
Source
]
Please send bug reports to sdgt-bugs@edwardtse.com
[ Archives ]
 |
Overview |
The SDG Toolkit simplifies Single Display Groupware development
by providing the following features.
- Automatic detection of all USB and
serial mice and keyboards present in the system
- Event-based interface for detecting mouse movements and button clicks, and
keyboard events
- Display of multiple cursors, one for each mouse
- Individually customizable cursors (loaded from .bmp, .cur
and .ani files), hotspots and
text labels/fonts
- X and Y Coordinates relative to any window
- Movement Restriction to the window
- For table top displays where orientation matters, cursor
text labels can be rotated, and mouse movements can be set relative to the
different sides of the table (see figure above).
Limitations:
- Only works with Windows XP and requires Visual Studio
.NET!
- Cursors are not removed when mice are unplugged
- The keyboard implementation is currently undergoing
reconstruction.
|
| |
 |
sdgControl |
Manages all mice and keyboards in the system, eg the events they
generate as well as their generic properties.
Properties
|
Property |
Access |
Description |
| LastMouseClick
as Integer |
Get by Reference |
Returns the last
mouse that sent a Mouse Down event. Usually used to see which mouse
was used to click a traditional non - SDG widget. However this is not
reliable and may disappear in future versions. |
|
LastKeyboardPress as Integer |
Get by Reference |
Returns the last
keyboard that sent a key down event. Usually used to see which
keyboard was used to type into a traditional non - SDG widget. |
|
TotalKeyboards as Integer |
Get by Reference |
The total number of keyboards present on the system
|
|
TotalMice as Integer |
Get by Reference |
The total number of mice present on the system
|
Methods
|
Signature
|
Description
|
| Dispose
() |
Destroys
the current sdgControl and returns the system cursor to it's original state. |
| Keyboard
(ID as Integer) as sdgKeyboard |
The sdgKeyboard
corresponding to the specified index is set or returned |
| Mouse (ID as
Integer) as sdgMouse |
The
sdgMouse corresponding to the specified index is set or returned |
| setRelativeTo
(f* as Form) |
Sets all of the absolute screen coordinates to be relative to the
windows form specified in f rather that returning screen coordinates. |
| SystemMouseFollow
(ID as Integer) |
Forces the system
mouse cursor to follow the sdgMouse specified by ID |
| SystemMousePark
(p as Point) |
Forces the system
mouse cursor to park itself at location p |
Events
|
Signature
|
Description
|
| OnMouseDown (sender
as object, e
as sdgMouseEventArgs ) |
Raised when a mouse button is
pressed |
| OnMouseUp (sender as
object, e
as sdgMouseEventArgs ) |
Raised when a mouse button is
released |
| OnMouseMove (sender as
object, e
as sdgMouseEventArgs ) |
Raised when any mouse event is
received |
| OnMouseWheel (sender as
object, e
as sdgMouseEventArgs ) |
Raised when the mouse wheel is
moved. Wheel delta is measured in detantes eg., one notch of the mouse wheel |
| OnNewMouseDetected
(sender as object, e as sdgMouseEventArgs
) |
Raised when the new mouse
fires it's first event. Since serial mice are supported it is not
possible to know when a new mouse has been attached. |
| OnKeyDown (sender as
object, e
as sdgKeyEventArgs ) |
Raised when any mouse event is
received |
| OnKeyPress (sender as
object, e
as sdgKeyPressEventArgs ) |
Raised when the mouse wheel is
moved. Wheel delta is measured in detantes eg., one notch of the mouse wheel |
| OnKeyUp
(sender as object, e as sdgKeyEventArgs
) |
Raised when the new mouse
fires it's first event. Since serial mice are supported it is not
possible to know when a new mouse has been attached. |
 |
sdgMouse |
The SDG Mouse controls an individual mouse cursor. Static cursor
images are loadable from .bmp and .cur files. Animated cursors
are loadable from .ani files. Below is an illustration of an
animated cursor with text

Properties
|
Property |
Access |
Description |
| X as Integer |
Get, Put by Reference |
Returns or sets the current X
coordinate of the cursor. If the X coordinate is set the cursor will
be moved to the corresponding location |
| Xabs as Integer |
Get, Put by Reference
|
Returns or sets the absolute X
value of the cursor even if the the sdgControl has it's coordinates set
relative a windows form.. |
| Y as Integer |
Get, Put by Reference |
Returns or sets the current Y
coordinate of the cursor. If the Y coordinate is set the cursor will
be moved to the corresponding location |
| Yabs as Integer |
Get, Put by Reference
|
Returns or sets the absolute Y
value of the cursor even if the the sdgControl has it's coordinates set
relative a windows form. |
| DegreeRotation as
Integer |
Get, Put by Reference |
For table top displays:
Returns or sets the movement orientation of the cursor
movement and position in degrees clockwise.
This feature is useful for table top display in which one user is
kitty-corner or across the table from another user |
| CursorImageRotation as
Integer |
Get, Put by Reference |
Returns or sets the
rotation of the cursor image only. It does not change the
orientation of the movement as DegreeRotation.
Can be used
with the Cardinal Directions Enumeration (eg., g.CursorImageRotation = (int)
CardinalDirections.East)
|
| Font as Drawing.Font |
Get, Put by Reference |
Returns or sets the text font |
| FrameIndex as Integer |
Get, Put by Reference |
For animated cursors only:
Returns or Sets the current frame in an animated cursor. Ignored if an
animated cursor is not used. |
|
LastMouseButton as Integer |
Get by Reference |
Returns a
enumerated value (System.Windows.Forms.MouseButtons) corresponding to the
last mouse button that was pressed |
| Location
as Point |
Get by Reference |
Returns the
current |
| Picture as String |
Get, Put by Value |
The file path of the image
used to represent the cursor for the current mouse. It must be a .cur or .ani file. Note: Rotated Custom cursors is currently
not supported. If you desperately want it, send me mail and I'll
implement it. |
| HotSpot as
Point |
Get, Put by
Reference |
Returns or sets the cursor X
hotspot location |
| Text as String |
Get, Put by Value |
Sets the text caption for the
cursor |
| TextFont as String |
Get, Put by
Reference |
Sets the font of the cursors
text label. Text Font will default to Arial if that font is not found. |
| TextLocation as Point |
Get, Put by Reference |
Returns or sets the location
of the text caption relative to the top left corner of the cursor |
| TextX as long |
Get, Put by Reference |
Returns or sets the location
of the X text caption relative to the top left corner of the cursor |
| TextY as long |
Get,Put By Reference |
Returns the location
of the Y text caption relative to the top left corner of the cursor |
| TotalFrames
as long |
Get by Reference |
For animated cursors only:
Returns the total number of frames in an animated cursor. Example:
g(2).FrameIndex = (g(2).FrameIndex + 1) Mod TotalFrames |
Methods
|
Signature
|
Description
|
| setRelativeTo (f* as
Form) |
Sets all of the absolute screen coordinates to be relative to the
windows form specified in f rather that returning screen coordinates. |
|
|
Events
|
Signature
|
Description
|
| OnMouseDown
(sender as object, e
as sdgMouseEventArgs ) |
Raised when this mouse button is
pressed |
| OnMouseUp (sender as
object, e
as sdgMouseEventArgs ) |
Raised when this mouse button is
released |
| OnMouseMove (sender as
object, e
as sdgMouseEventArgs ) |
Raised when any mouse event is
received from this mouse |
| OnMouseWheel (sender as
object, e
as sdgMouseEventArgs ) |
Raised when the mouse wheel is
moved on this mouse. Wheel delta is measured in détentes (one notch of the mouse wheel) |
 |
SDGMouseEventArgs |
Properties
|
Property |
Access |
Description |
| X as Integer |
Get by Reference |
Returns the current X
coordinate of the cursor. This is relative to the form if
specified. |
| Y as Integer |
Get by Reference |
Returns the current Y
coordinate of the cursor. This is relative to the form if specified. |
| ID as Integer |
Get by Reference |
Returns the ID of
the current mouse |
| Button as
Forms.MouseButttons |
Get by Reference |
Returns the
current button pressed if any. If multiple buttons are pressed
simultaneously then the result is the logical or of all the specified
values. |
| Delta as
Integer |
Get by Reference |
Returns the number
of détentes the mouse wheel was moved. |
 |
SDGKeyEventArgs |
Properties
|
Property |
Access |
Description |
|
Alt as Boolean |
Get by Reference |
Returns the
current state of the Alt button |
|
Control as Boolean |
Get by Reference |
Returns the
current state of the Control button |
|
Shift as Boolean |
Get by Reference |
Returns the
current state of the Shift button |
|
Handled as Boolean |
Get by Reference |
Return a boolean value determining whether or not this
keyboard event has been handled by another widget. |
| ID as Integer |
Get by Reference |
Returns the ID of
the current keyboard |
|
KeyCode as Keys |
Get by Reference |
Returns the
virtual key code of the key just pressed without the
addition of modifiers (eg., shift, control, alt) |
|
KeyData as
Keys |
Get by Reference |
Returns the virtual key code of the key just pressed with
the addition of modifiers (eg., shift, control, alt) |
|
KeyValue as
Integer |
Get by Reference |
Returns
a number representing the ASCII character that was just
pressed |
|
Modifiers as
Keys |
Get by Reference |
Returns the modifiers used in the previous key press (eg.,
shift, control, alt) |
|
KeyValue as
Integer |
Get by Reference |
Returns
a number representing the ASCII character that was just
pressed |
 |
SDGKeyPressEventArgs |
Properties
|
Property |
Access |
Description |
|
Handled as Boolean |
Get by Reference |
Return a boolean value determining whether or not this
keyboard event has been handled by another widget. |
|
KeyChar as Char |
Get by Reference |
Returns the
Ascii character corresponding to the button pressed.. |
|
ID as Integer |
Get by Reference |
Returns the ID of
the current keyboard |
|
|
|
|
License Terms |
|