var keyboardShortcuts; $(document).ready(function() { if (localStorage.getItem('keyboardShortcuts')) { keyboardShortcuts = JSON.parse(localStorage.getItem('keyboardShortcuts')); } else { keyboardShortcuts = { xP: "arrowright", //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'); // 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() { $('#xM').click() }); } if (keyboardShortcuts.xP.length) { $(document).bind('keydown', keyboardShortcuts.xP, function() { $('#xP').click() }); } if (keyboardShortcuts.yM.length) { $(document).bind('keydown', keyboardShortcuts.yM, function() { $('#yM').click() }); } if (keyboardShortcuts.yP.length) { $(document).bind('keydown', keyboardShortcuts.yP, function() { $('#yP').click() }); } if (keyboardShortcuts.zM.length) { $(document).bind('keydown', keyboardShortcuts.zM, function() { $('#zM').click() }); } if (keyboardShortcuts.zP.length) { $(document).bind('keydown', keyboardShortcuts.zP, function() { $('#zP').click() }); } if (keyboardShortcuts.stepM.length) { $(document).bind('keydown', keyboardShortcuts.stepM, function() { changeStepSize(-1) }); } if (keyboardShortcuts.stepP.length) { $(document).bind('keydown', keyboardShortcuts.stepP, function() { changeStepSize(1) }); } if (keyboardShortcuts.estop.length) { $(document).bind('keydown', keyboardShortcuts.estop, function() { socket.emit('stop', true) }); } if (keyboardShortcuts.playpause.length) { $(document).bind('keydown', keyboardShortcuts.playpause, function() { 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() { socket.emit('clearAlarm', 2); }); } if (keyboardShortcuts.home.length) { $(document).bind('keydown', keyboardShortcuts.home, function() { home(); }); } if (keyboardShortcuts.setzeroxyz.length) { $(document).bind('keydown', keyboardShortcuts.setzeroxyz, function() { sendGcode('G10 P1 L20 X0 Y0 Z0') }); } localStorage.setItem('keyboardShortcuts', JSON.stringify(keyboardShortcuts)); } function keyboardShortcutsEditor() { var template = `
Click below to assign a new Keyboard Shortcut / combination to a function. Ctrl, Alt and Shift can be added to create combinations.
` Metro.dialog.create({ title: " Customise Keyboard Shortcuts", content: template, width: 600, actions: [{ caption: "Save and apply", cls: "js-dialog-close success", onclick: function() { // do something keyboardShortcuts.xP = $('#xPnewKey').val() keyboardShortcuts.xM = $('#xMnewKey').val() keyboardShortcuts.yP = $('#yPnewKey').val() keyboardShortcuts.yM = $('#yMnewKey').val() keyboardShortcuts.zP = $('#zPnewKey').val() keyboardShortcuts.zM = $('#zMnewKey').val() keyboardShortcuts.stepP = $('#stepPnewKey').val() keyboardShortcuts.stepM = $('#stepMnewKey').val() keyboardShortcuts.estop = $('#stopnewKey').val() keyboardShortcuts.playpause = $('#playPausenewKey').val() keyboardShortcuts.unlockAlarm = $('#unlocknewKey').val() keyboardShortcuts.home = $('#homenewKey').val() keyboardShortcuts.setzeroxyz = $('#setzeroxyznewKey').val() bindKeys() } }, { caption: "Cancel", cls: "js-dialog-close", onclick: function() { // do nothing } } ] }); $('#keyboardAssignmentForm').bind('keydown', null, function(e) { e.preventDefault(); console.log(e) var newVal = ""; if (e.altKey) { newVal += 'alt+' } if (e.ctrlKey) { newVal += 'ctrl+' } if (e.shiftKey) { newVal += 'shift+' } if (e.key.toLowerCase() != 'alt' && e.key.toLowerCase() != 'control' && e.key.toLowerCase() != 'shift') { // Handle MetroUI naming non-standards of some keys if (e.keyCode == 32) { newVal += 'space'; } else if (e.key.toLowerCase() == 'escape') { newVal += 'esc'; } else if (e.key.toLowerCase() == 'arrowleft') { newVal += 'left'; } else if (e.key.toLowerCase() == 'arrowright') { newVal += 'right'; } else if (e.key.toLowerCase() == 'arrowup') { newVal += 'up'; } else if (e.key.toLowerCase() == 'arrowdown') { newVal += 'down'; } else { newVal += e.key.toLowerCase(); } $('.newKeyAssignment').val(newVal) } }); }