@bigfishtv/cockpit
Version:
76 lines (67 loc) • 1.55 kB
JavaScript
/**
* Select Key Utilities
* @module Utilities/selectKeyUtils
*/
import keycode from 'keycode';
var shiftKeyPressed = false;
var ctrlKeyPressed = false;
/**
* @return {Boolean}
*/
export var isShiftKeyPressed = function isShiftKeyPressed() {
return shiftKeyPressed;
};
/**
* @return {Boolean}
*/
export var isCtrlKeyPressed = function isCtrlKeyPressed() {
return ctrlKeyPressed;
};
/**
* Callback to 'keydown' listener sets ctrl/shift down vars
* @param {Object} event - native key down event
*/
function handleKeyDown(event) {
switch (keycode(event)) {
case 'shift':
shiftKeyPressed = true;
break;
case 'ctrl':
ctrlKeyPressed = true;
break;
case 'command':
case 'left command':
case 'right command':
ctrlKeyPressed = true;
break;
}
}
/**
* Callback to 'keyup' listener sets ctrl/shift down vars
* @param {Object} event - native key down event
*/
function handleKeyUp(event) {
switch (keycode(event)) {
case 'shift':
shiftKeyPressed = false;
break;
case 'ctrl':
ctrlKeyPressed = false;
break;
case 'command':
case 'left command':
case 'right command':
ctrlKeyPressed = false;
break;
}
}
/**
* Attaches 'keydown' and 'keyup' event listeners to document
* @param {document} [element=document] - which element to attach event listeners to
*/
function init() {
var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
element.addEventListener('keydown', handleKeyDown);
element.addEventListener('keyup', handleKeyUp);
}
init();