UNPKG

@bigfishtv/cockpit

Version:

76 lines (67 loc) 1.55 kB
/** * 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();