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