var keyboardShortcuts = false; function cancelJog() { socket.emit('stop', true) } $(document).ready(function() { if (localStorage.getItem('continuousJog')) { if (JSON.parse(localStorage.getItem('continuousJog')) == true) { $('#jogTypeContinuous').prop('checked', true) allowContinuousJog = true; $('.distbtn').hide() } else { $('#jogTypeContinuous').prop('checked', false) allowContinuousJog = false; $('.distbtn').show(); } } $('#jogTypeContinuous').on('click', function() { if ($(this).is(':checked')) { localStorage.setItem('continuousJog', true); allowContinuousJog = true; $('.distbtn').hide(); } else { localStorage.setItem('continuousJog', false); allowContinuousJog = false; $('.distbtn').show(); } }); if (localStorage.getItem('keyboardShortcuts')) { keyboardShortcuts = JSON.parse(localStorage.getItem('keyboardShortcuts')); } else { keyboardShortcuts = { xP: "right", //X+ xM: "left", //X- yP: "up", //Y+ yM: "down", //Y- zP: "pageup", //Z+ zM: "pagedown", //Z- stepP: "+", // Increase Step Size stepM: "-", // Decrease Step Size estop: "esc", // Abort / Emergency playpause: "space", // Start, Pause, Resume unlockAlarm: "end", // Clear Alarm home: "home", // Home All setzeroxyz: "insert" // Set ZERO XYZ } } bindKeys() }); function bindKeys() { // Clear all current binds $(document).unbind('keydown'); // console.log("Refreshing Keybindings") // Bind for Electron Devtools document.addEventListener('keydown', function(evt) { if (evt.which === 123) { try { var focusedWindow = require('electron').remote.getCurrentWindow(); if (focusedWindow.isDevToolsOpened()) { focusedWindow.closeDevTools(); } else { focusedWindow.openDevTools(); } } catch (error) { console.warn(error); } } else if (evt.which === 116) { location.reload(); } }); // Bind for Jog and Control Buttons if (keyboardShortcuts.xM.length) { $(document).bind('keydown', keyboardShortcuts.xM, function(event) { if (allowContinuousJog) { if (event.target.tagName == 'TEXTAREA') return; if (!event.originalEvent.repeat) { var direction = "X-"; var feed = $('#jograte').val(); socket.emit('runCommand', "$J=G91 G21 " + direction + "1000 F" + feed + "\n"); $('#xM').click(); } } else { $('#xM').click(); } }); $(document).bind('keyup', keyboardShortcuts.xM, function(event) { if (allowContinuousJog) { cancelJog() } }); } if (keyboardShortcuts.xP.length) { $(document).bind('keydown', keyboardShortcuts.xP, function(event) { if (allowContinuousJog) { if (event.target.tagName == 'TEXTAREA') return; if (!event.originalEvent.repeat) { var direction = "X"; var feed = $('#jograte').val(); socket.emit('runCommand', "$J=G91 G21 " + direction + "1000 F" + feed + "\n"); $('#xP').click(); } } else { $('#xP').click(); } }); $(document).bind('keyup', keyboardShortcuts.xP, function(event) { if (allowContinuousJog) { cancelJog() } }); } if (keyboardShortcuts.yM.length) { $(document).bind('keydown', keyboardShortcuts.yM, function(event) { if (allowContinuousJog) { if (event.target.tagName == 'TEXTAREA') return; if (!event.originalEvent.repeat) { var direction = "Y-"; var feed = $('#jograte').val(); socket.emit('runCommand', "$J=G91 G21 " + direction + "1000 F" + feed + "\n"); $('#yM').click(); } } else { $('#yM').click(); } }); $(document).bind('keyup', keyboardShortcuts.yM, function(event) { if (allowContinuousJog) { cancelJog() } }); } if (keyboardShortcuts.yP.length) { $(document).bind('keydown', keyboardShortcuts.yP, function(event) { if (allowContinuousJog) { if (event.target.tagName == 'TEXTAREA') return; if (!event.originalEvent.repeat) { // startJog(); var direction = "Y"; var feed = $('#jograte').val(); socket.emit('runCommand', "$J=G91 G21 " + direction + "1000 F" + feed + "\n"); $('#yP').click(); } } else { $('#yP').click(); } }); $(document).bind('keyup', keyboardShortcuts.yP, function(event) { if (allowContinuousJog) { cancelJog() } }); } if (keyboardShortcuts.zM.length) { $(document).bind('keydown', keyboardShortcuts.zM, function(event) { if (allowContinuousJog) { if (event.target.tagName == 'TEXTAREA') return; if (!event.originalEvent.repeat) { // startJog(); var direction = "Z-"; var feed = $('#jograte').val(); socket.emit('runCommand', "$J=G91 G21 " + direction + "1000 F" + feed + "\n"); $('#zM').click(); } } else { $('#zM').click(); } }); $(document).bind('keyup', keyboardShortcuts.zM, function(event) { if (allowContinuousJog) { cancelJog() } }); } if (keyboardShortcuts.zP.length) { $(document).bind('keydown', keyboardShortcuts.zP, function(event) { if (allowContinuousJog) { if (event.target.tagName == 'TEXTAREA') return; if (!event.originalEvent.repeat) { // startJog(); var direction = "Z"; var feed = $('#jograte').val(); socket.emit('runCommand', "$J=G91 G21 " + direction + "1000 F" + feed + "\n"); $('#zP').click(); } } else { $('#zP').click(); } }); $(document).bind('keyup', keyboardShortcuts.zP, function(event) { if (allowContinuousJog) { cancelJog() } }); } if (keyboardShortcuts.stepM.length) { $(document).bind('keydown', keyboardShortcuts.stepM, function(e) { if (e.target.tagName == 'TEXTAREA') return; changeStepSize(-1) }); } if (keyboardShortcuts.stepP.length) { $(document).bind('keydown', keyboardShortcuts.stepP, function(e) { if (e.target.tagName == 'TEXTAREA') return; changeStepSize(1) }); } if (keyboardShortcuts.estop.length) { $(document).bind('keydown', keyboardShortcuts.estop, function(e) { socket.emit('stop', false) }); } if (keyboardShortcuts.playpause.length) { $(document).bind('keydown', keyboardShortcuts.playpause, function(e) { if (e.target.tagName == 'TEXTAREA') return; if (laststatus.comms.connectionStatus == 1 || laststatus.comms.connectionStatus == 2) { socket.emit('runJob', editor.getValue()); } else if (laststatus.comms.connectionStatus == 3) { socket.emit('pause', true); } else if (laststatus.comms.connectionStatus == 4) { socket.emit('resume', true); } }); } if (keyboardShortcuts.unlockAlarm.length) { $(document).bind('keydown', keyboardShortcuts.unlockAlarm, function(e) { if (e.target.tagName == 'TEXTAREA') return; Metro.dialog.close($('.closeAlarmBtn').parent().parent()); socket.emit('clearAlarm', 2); }); } if (keyboardShortcuts.home.length) { $(document).bind('keydown', keyboardShortcuts.home, function(e) { if (e.target.tagName == 'TEXTAREA') return; home(); }); } if (keyboardShortcuts.setzeroxyz.length) { $(document).bind('keydown', keyboardShortcuts.setzeroxyz, function(e) { if (e.target.tagName == 'TEXTAREA') return; sendGcode('G10 P1 L20 X0 Y0 Z0') }); } localStorage.setItem('keyboardShortcuts', JSON.stringify(keyboardShortcuts)); } function keyboardShortcutsEditor() { var template = `