# Input Sources
Cornerstone Tools provides support for a number of input sources which can be used to create interactive tools.
Currently, we provide four input sources: mouse, mouseWheel, touch, and keyboard. Each of these input sources triggers a number of events which can be used by tools. This section will explain the events triggered by each of these input sources.
# Common Event Data
Each of the input types triggers separate events for use by tools. The following properties are common to all events:
Property | Type | Meaning |
---|---|---|
event | Event (opens new window) | The original browser event which caused the Cornerstone Tools event to be fired. |
element | Element (opens new window) | The DOM Element for the Cornerstone Enabled Element which is the target of this event. |
viewport | Viewport | The Cornerstone Viewport object for the specific Enabled Element at the time the event was fired. |
image | Image | The Cornerstone Image object for the specific Enabled Element at the time the event was fired. |
type | String | Event.type (opens new window) |
# Coordinates
Coordinates are currently represented as:
Object {
page: { x: Number, y: Number },
image: { x: Number, y: Number },
client: { x: Number, y: Number },
canvas: { x: Number, y: Number }
}
# Mouse Input Source
The mouse input source triggers the following events:
Event Name | Meaning |
---|---|
cornerstonetoolsmousedown | ** Mouse Down ** This is fired from the browser's mousedown (opens new window) event. |
cornerstonetoolsmouseup | ** Mouse Up ** This is fired from the browser's mouseup (opens new window) event. |
cornerstonetoolsmousedownactivate | Mouse Down, and no tool is present at the current location to respond to the event. |
cornerstonetoolsmousedrag | ** Mouse move while mouse button held down ** |
cornerstonetoolsmousemove | ** Mouse move without mouse button held down ** |
cornerstonetoolsmouseclick | ** Mouse Click ** |
cornerstonetoolsmousedoubleclick | Two mouse clicks in quick succession. This is fired from the browser's dblclick (opens new window) event. |
# Event Data
The mouse input events include the following event data:
Property | Type | Meaning |
---|---|---|
which | Number | The jQuery 'which' value for the mouse buttons which were held down when the event occurred. These are computed from the event.buttons (opens new window) values here (opens new window). In future iterations (possibly 3.0) of Cornerstone Tools, we plan to deprecate the 'which' value in favour of the 'buttons' value. |
startPoints | Cornerstone Coordinates | The starting coordinates for the mouse event (e.g., for a cornerstonetoolsmousemove event, this is the location where the initial mouseDown event started). |
currentPoints | Cornerstone Coordinates | The current coordinates |
lastPoints | Cornerstone Coordinates | The final coordinates |
deltaPoints | Cornerstone Coordinates | The change in coordinates |
ctrlKey | Boolean | MouseEvent.ctrlKey (opens new window) |
metaKey | Boolean | MouseEvent.metaKey (opens new window) |
shiftKey | Boolean | MouseEvent.shiftKey (opens new window) |
Note: ctrlKey, metaKey, and shiftKey are only currently included in eventData for cornerstonetoolsmousemove events.
# Usage
const element = document.querySelector('.my-cornerstone-element');
// Enable mouse input
cornerstoneTools.mouseInput.enable(element);
// Disable mouse input
cornerstoneTools.mouseInput.disable(element);
# MouseWheel Input Source
The mouse input source triggers the following events:
Event Name | Meaning |
---|---|
cornerstonetoolsmousewheel | ** Mouse Wheel ** This is fired from the browser's mousewheel (opens new window) event. |
# Event Data
The cornerstonetoolsmousewheel event includes the following event data:
Property | Type | Meaning |
---|---|---|
pageX | Number | pageX (opens new window) |
pageY | Number | pageX (opens new window) |
imageX | Number | The X (horizontal) coordinate (in image pixels) at which the mouse was clicked, relative to the left edge of the image. |
imageY | Number | The Y (vertical) coordinate (in image pixels) at which the mouse was clicked, relative to the top of the image. |
direction | Number | -1 to represent negative 'wheelDelta', +1 to represent positive 'wheelDelta' |
# Usage
const element = document.querySelector('.my-cornerstone-element');
// Enable mouse wheel input
cornerstoneTools.mouseWheelInput.enable(element);
// Disable mouse wheel input
cornerstoneTools.mouseWheelInput.disable(element);
# Touch Input Source
The touch input source triggers the following events:
Event Name | Meaning |
---|---|
cornerstonetoolstouchstart | ** Touch Start ** This is fired from the browser's touchstart (opens new window) event. |
cornerstonetoolstouchend | ** Touch End ** This is fired from the browser's touchend (opens new window) event. |
cornerstonetoolstouchactive | Mouse Down, and no tool is present at the current location to respond to the event. Note: Needs to be renamed to cornerstonetoolstouchactivate |
cornerstonetoolstouchdrag | ** Touch Move ** This is fired from the browser's touchend (opens new window) event. |
cornerstonetoolstouchdragend | ** Dragging has stopped ** This is fired from the Hammer.js panend (opens new window) event. |
cornerstonetoolstouchpinch | ** Pinch ** This is fired from the Hammer.js pinchmove (opens new window) event. |
cornerstonetoolstouchrotate | ** Rotation ** This is fired from the Hammer.js rotatemove (opens new window) event. |
cornerstonetoolstouchpress | ** Long press on a location without significant movement ** |
cornerstonetoolstap | ** Quick tap (opens new window) on a location ** |
cornerstonetoolsdoubletap | ** Two taps (opens new window) in quick succession ** |
cornerstonetoolsmultitouchstart | Equivalent to cornerstonetoolstouchstart, but fired if there are multiple pointers on screen. |
cornerstonetoolsmultitouchstartactive | Equivalent to cornerstonetoolstouchactive, but fired if there are multiple pointers on screen. |
cornerstonetoolsmultitouchdrag | Equivalent to cornerstonetoolstouchdrag, but fired if there are multiple pointers on screen. |
# Event Data
The touch input events include the following event data:
Property | Type | Meaning |
---|---|---|
currentPoints | Cornerstone Coordinates | The current coordinates |
lastPoints | Cornerstone Coordinates | The final coordinates |
deltaPoints | Cornerstone Coordinates | The change in coordinates |
isTouchEvent | Boolean | Always present and always True for touch events. This property is being used in certain tools to change behaviour depending on whether or not the input event is a touch event. |
direction | Number | For cornerstonetoolstouchpinch events, this is -1 for "pinchout" and +1 for 'pinchin'. |
scale | Number | For cornerstonetoolstouchpinch events, the ratio of change in the scale (opens new window) ((current - previous) / previous) for a 'pinchmove' sourced event. |
numPointers | Number | For multi-touch events, this is the number of pointers which were touching the screen while this event was fired. |
rotation | Number | For cornerstonetoolstouchrotate events, this is the rotation (opens new window) (in degrees) that has been performed. |
# Usage
const element = document.querySelector('.my-cornerstone-element');
// Enable touch input
cornerstoneTools.touchInput.enable(element);
// Disable touch input
cornerstoneTools.touchInput.disable(element);
# Keyboard Input Source
The keyboard input source triggers the following events:
Event Name | Meaning |
---|---|
cornerstonetoolskeydown | This is fired from the browser's [keydown (opens new window) event. |
cornerstonetoolskeyup | This is fired from the browser's [keyup (opens new window) event. |
cornerstonetoolskeypress | This is fired from the browser's [keypress (opens new window) event. |
# Event Data
The keyboard input events include the following event data:
Property | Type | Meaning |
---|---|---|
currentPoints | Cornerstone Coordinates | The current coordinates |
keyCode | Number | KeyboardEvent.keyCode (opens new window) |
which | Number | The jQuery 'which' value for the mouse buttons which were held down when the event occurred. These are computed from the event.buttons (opens new window) values here (opens new window). In future iterations (possibly 3.0) of Cornerstone Tools, we plan to deprecate the 'which' value in favour of the 'buttons' value. |
# Usage
const element = document.querySelector('.my-cornerstone-element');
// Enable keyboard input
cornerstoneTools.keyboardInput.enable(element);
// Disable keyboard input
cornerstoneTools.keyboardInput.disable(element);