kopia lustrzana https://github.com/OpenBuilds/OpenBuilds-CONTROL
Work on #20 - Keyboard Shortcuts
rodzic
f8da3949a6
commit
857ffc5f46
|
@ -265,6 +265,13 @@
|
|||
<span class="caption grblmode">Jog<br>Widget</span>
|
||||
</button>
|
||||
|
||||
<button id="mobileBtn" class="ribbon-button" onclick="keyboardShortcutsEditor();">
|
||||
<span class="icon">
|
||||
<i class="far fa-keyboard"></i>
|
||||
</span>
|
||||
<span class="caption grblmode">Keyboard<br>Shortcuts</span>
|
||||
</button>
|
||||
|
||||
<span class="title">Control</span>
|
||||
</div>
|
||||
<div class="group estop" style="width: 100px;">
|
||||
|
@ -1003,6 +1010,7 @@
|
|||
<script type="text/javascript" src="js/grblsettings.js"></script>
|
||||
<script type="text/javascript" src="js/metroactions.js"></script>
|
||||
<script type="text/javascript" src="js/jog.js"></script>
|
||||
<script type="text/javascript" src="js/keyboard.js"></script>
|
||||
<script type="text/javascript" src="js/calibrate.js"></script>
|
||||
<script type="text/javascript" src="js/widget.js"></script>
|
||||
|
||||
|
|
|
@ -11,23 +11,6 @@ $(document).ready(function() {
|
|||
safeToUpdateSliders = true;
|
||||
});
|
||||
|
||||
|
||||
// $("#frocell").hover(function() {
|
||||
// safeToUpdateSliders = false;
|
||||
// // console.log(safeToUpdateSliders)
|
||||
// }, function() {
|
||||
// safeToUpdateSliders = true;
|
||||
// // console.log(safeToUpdateSliders)
|
||||
// });
|
||||
//
|
||||
// $("#trocell").hover(function() {
|
||||
// safeToUpdateSliders = false;
|
||||
// // console.log(safeToUpdateSliders)
|
||||
// }, function() {
|
||||
// safeToUpdateSliders = true;
|
||||
// // console.log(safeToUpdateSliders)
|
||||
// });
|
||||
|
||||
$("#xPos").click(function() {
|
||||
$("#xPos").hide()
|
||||
$("#xPosInput").show().focus().val(laststatus.machine.position.work.x)
|
||||
|
@ -240,6 +223,75 @@ $(document).ready(function() {
|
|||
|
||||
});
|
||||
|
||||
function changeStepSize(dir) {
|
||||
if (jogdist == 0.1) {
|
||||
if (dir == 1) {
|
||||
jogdist = 1;
|
||||
$('.distbtn').removeClass('bd-openbuilds')
|
||||
$('#dist1').addClass('bd-openbuilds')
|
||||
$('.jogdist').removeClass('fg-openbuilds')
|
||||
$('.jogdist').addClass('fg-gray')
|
||||
$('#dist1label').removeClass('fg-gray')
|
||||
$('#dist1label').addClass('fg-openbuilds')
|
||||
}
|
||||
if (dir == -1) {
|
||||
// do nothing
|
||||
}
|
||||
} else if (jogdist == 1) {
|
||||
if (dir == 1) {
|
||||
jogdist = 10;
|
||||
$('.distbtn').removeClass('bd-openbuilds')
|
||||
$('#dist10').addClass('bd-openbuilds')
|
||||
$('.jogdist').removeClass('fg-openbuilds')
|
||||
$('.jogdist').addClass('fg-gray')
|
||||
$('#dist10label').removeClass('fg-gray')
|
||||
$('#dist10label').addClass('fg-openbuilds')
|
||||
}
|
||||
if (dir == -1) {
|
||||
jogdist = 0.1;
|
||||
$('.distbtn').removeClass('bd-openbuilds')
|
||||
$('#dist01').addClass('bd-openbuilds')
|
||||
$('.jogdist').removeClass('fg-openbuilds')
|
||||
$('.jogdist').addClass('fg-gray')
|
||||
$('#dist01label').removeClass('fg-gray')
|
||||
$('#dist01label').addClass('fg-openbuilds')
|
||||
}
|
||||
} else if (jogdist == 10) {
|
||||
if (dir == 1) {
|
||||
jogdist = 100;
|
||||
$('.distbtn').removeClass('bd-openbuilds')
|
||||
$('#dist100').addClass('bd-openbuilds')
|
||||
$('.jogdist').removeClass('fg-openbuilds')
|
||||
$('.jogdist').addClass('fg-gray')
|
||||
$('#dist100label').removeClass('fg-gray')
|
||||
$('#dist100label').addClass('fg-openbuilds')
|
||||
}
|
||||
if (dir == -1) {
|
||||
jogdist = 1;
|
||||
$('.distbtn').removeClass('bd-openbuilds')
|
||||
$('#dist1').addClass('bd-openbuilds')
|
||||
$('.jogdist').removeClass('fg-openbuilds')
|
||||
$('.jogdist').addClass('fg-gray')
|
||||
$('#dist1label').removeClass('fg-gray')
|
||||
$('#dist1label').addClass('fg-openbuilds')
|
||||
}
|
||||
} else if (jogdist == 100) {
|
||||
if (dir == 1) {
|
||||
// do nothing
|
||||
}
|
||||
if (dir == -1) {
|
||||
jogdist = 10;
|
||||
$('.distbtn').removeClass('bd-openbuilds')
|
||||
$('#dist10').addClass('bd-openbuilds')
|
||||
$('.jogdist').removeClass('fg-openbuilds')
|
||||
$('.jogdist').addClass('fg-gray')
|
||||
$('#dist10label').removeClass('fg-gray')
|
||||
$('#dist10label').addClass('fg-openbuilds')
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function jog(dir, dist, feed = null) {
|
||||
if (feed) {
|
||||
socket.emit('jog', dir + ',' + dist + ',' + feed);
|
||||
|
|
|
@ -0,0 +1,224 @@
|
|||
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: "+",
|
||||
stepM: "-",
|
||||
estop: 'esc'
|
||||
}
|
||||
}
|
||||
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)
|
||||
});
|
||||
}
|
||||
localStorage.setItem('keyboardShortcuts', JSON.stringify(keyboardShortcuts));
|
||||
}
|
||||
|
||||
function keyboardShortcutsEditor() {
|
||||
|
||||
var template = `
|
||||
<form id="keyboardAssignmentForm">
|
||||
<div class="row mb-1">
|
||||
<label class="cell-sm-4">Instructions</label>
|
||||
<div class="cell-sm-8">
|
||||
Click below to assign a new Keyboard Shortcut / combination to a function. Ctrl, Alt and Shift can be added to create combinations.
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="cell-sm-4">E-Stop / Abort</label>
|
||||
<div class="cell-sm-5">
|
||||
<input type="text" class="keyboardshortcutinput" readonly id="stopnewKey" value="` + keyboardShortcuts.estop + `" onclick="$('.keyboardshortcutinput').removeClass('alert').removeClass('newKeyAssignment'); $('#stopnewKey').addClass('alert').addClass('newKeyAssignment')">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="cell-sm-4">Jog X-</label>
|
||||
<div class="cell-sm-5">
|
||||
<input type="text" class="keyboardshortcutinput" readonly id="xMnewKey" value="` + keyboardShortcuts.xM + `" onclick="$('.keyboardshortcutinput').removeClass('alert').removeClass('newKeyAssignment'); $('#xMnewKey').addClass('alert').addClass('newKeyAssignment')">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="cell-sm-4">Jog X+</label>
|
||||
<div class="cell-sm-5">
|
||||
<input type="text" class="keyboardshortcutinput" readonly id="xPnewKey" value="` + keyboardShortcuts.xP + `" onclick="$('.keyboardshortcutinput').removeClass('alert').removeClass('newKeyAssignment'); $('#xPnewKey').addClass('alert').addClass('newKeyAssignment')">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="cell-sm-4">Jog Y-</label>
|
||||
<div class="cell-sm-5">
|
||||
<input type="text" class="keyboardshortcutinput" readonly id="yMnewKey" value="` + keyboardShortcuts.yM + `" onclick="$('.keyboardshortcutinput').removeClass('alert').removeClass('newKeyAssignment'); $('#yMnewKey').addClass('alert').addClass('newKeyAssignment')">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="cell-sm-4">Jog Y+</label>
|
||||
<div class="cell-sm-5">
|
||||
<input type="text" class="keyboardshortcutinput" readonly id="yPnewKey" value="` + keyboardShortcuts.yP + `" onclick="$('.keyboardshortcutinput').removeClass('alert').removeClass('newKeyAssignment'); $('#yPnewKey').addClass('alert').addClass('newKeyAssignment')">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="cell-sm-4">Jog Z-</label>
|
||||
<div class="cell-sm-5">
|
||||
<input type="text" class="keyboardshortcutinput" readonly id="zMnewKey" value="` + keyboardShortcuts.zM + `" onclick="$('.keyboardshortcutinput').removeClass('alert').removeClass('newKeyAssignment'); $('#zMnewKey').addClass('alert').addClass('newKeyAssignment')">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="cell-sm-4">Jog Z+</label>
|
||||
<div class="cell-sm-5">
|
||||
<input type="text" class="keyboardshortcutinput" readonly id="zPnewKey" value="` + keyboardShortcuts.zP + `" onclick="$('.keyboardshortcutinput').removeClass('alert').removeClass('newKeyAssignment'); $('#zPnewKey').addClass('alert').addClass('newKeyAssignment')">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="cell-sm-4">Decrease Step Size</label>
|
||||
<div class="cell-sm-5">
|
||||
<input type="text" class="keyboardshortcutinput" readonly id="stepMnewKey" value="` + keyboardShortcuts.stepM + `" onclick="$('.keyboardshortcutinput').removeClass('alert').removeClass('newKeyAssignment'); $('#stepMnewKey').addClass('alert').addClass('newKeyAssignment')">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="cell-sm-4">Increase Step Size</label>
|
||||
<div class="cell-sm-5">
|
||||
<input type="text" class="keyboardshortcutinput" readonly id="stepPnewKey" value="` + keyboardShortcuts.stepP + `" onclick="$('.keyboardshortcutinput').removeClass('alert').removeClass('newKeyAssignment'); $('#stepPnewKey').addClass('alert').addClass('newKeyAssignment')">
|
||||
</div>
|
||||
</div>
|
||||
</form>`
|
||||
|
||||
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()
|
||||
bindKeys()
|
||||
}
|
||||
},
|
||||
{
|
||||
caption: "Cancel",
|
||||
cls: "js-dialog-close",
|
||||
onclick: function() {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
$('#keyboardAssignmentForm').bind('keydown', null, function(e) {
|
||||
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)
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
|
@ -69,23 +69,6 @@ $(document).ready(function() {
|
|||
// alert('success! - rightclicked line ' + (editor.getSelectionRange().start.row + 1));
|
||||
}, false);
|
||||
|
||||
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();
|
||||
}
|
||||
});
|
||||
|
||||
var fileOpen = document.getElementById('file');
|
||||
if (fileOpen) {
|
||||
fileOpen.addEventListener('change', readFile, false);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "OpenBuildsCONTROL",
|
||||
"version": "1.0.153",
|
||||
"version": "1.0.154-beta",
|
||||
"license": "AGPL-3.0",
|
||||
"description": "Machine Interface Driver for OpenBuilds",
|
||||
"author": "github.com/openbuilds <webmaster@openbuilds.com>",
|
||||
|
|
Ładowanie…
Reference in New Issue