mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 22:28:37 +02:00
make window shortcuts work on OSX
This commit is contained in:
parent
0248323bee
commit
2c715bf592
4 changed files with 87 additions and 22 deletions
|
@ -12,7 +12,8 @@
|
||||||
|
|
||||||
/* global Script, SelectionDisplay, LightOverlayManager, CameraManager, Grid, GridTool, EntityListTool, Vec3, SelectionManager,
|
/* global Script, SelectionDisplay, LightOverlayManager, CameraManager, Grid, GridTool, EntityListTool, Vec3, SelectionManager,
|
||||||
Overlays, OverlayWebWindow, UserActivityLogger, Settings, Entities, Tablet, Toolbars, Messages, Menu, Camera,
|
Overlays, OverlayWebWindow, UserActivityLogger, Settings, Entities, Tablet, Toolbars, Messages, Menu, Camera,
|
||||||
progressDialog, tooltip, MyAvatar, Quat, Controller, Clipboard, HMD, UndoStack, OverlaySystemWindow */
|
progressDialog, tooltip, MyAvatar, Quat, Controller, Clipboard, HMD, UndoStack, OverlaySystemWindow,
|
||||||
|
keyUpEventFromUIWindow:true */
|
||||||
|
|
||||||
(function() { // BEGIN LOCAL_SCOPE
|
(function() { // BEGIN LOCAL_SCOPE
|
||||||
|
|
||||||
|
@ -2706,42 +2707,44 @@ mapping.from([Controller.Hardware.Keyboard.P])
|
||||||
.when([Controller.Hardware.Keyboard.Control, !Controller.Hardware.Keyboard.Shift])
|
.when([Controller.Hardware.Keyboard.Control, !Controller.Hardware.Keyboard.Shift])
|
||||||
.to(whenReleased(function() { parentSelectedEntities(); }));
|
.to(whenReleased(function() { parentSelectedEntities(); }));
|
||||||
|
|
||||||
function keyUpEventFromUIWindow(keyUpEvent) {
|
keyUpEventFromUIWindow = function(keyUpEvent) {
|
||||||
var WANT_DEBUG_MISSING_SHORTCUTS = false;
|
var WANT_DEBUG_MISSING_SHORTCUTS = false;
|
||||||
|
|
||||||
var pressedValue = 0.0;
|
var pressedValue = 0.0;
|
||||||
// Note: For some reason the keyboardEvent for delete does not show a code, using key instead:
|
|
||||||
if ((!isOnMacPlatform && keyUpEvent.key === "Delete") || (isOnMacPlatform && keyUpEvent.code === "Backspace")) {
|
if ((!isOnMacPlatform && keyUpEvent.keyCodeString === "Delete")
|
||||||
|
|| (isOnMacPlatform && keyUpEvent.keyCodeString === "Backspace")) {
|
||||||
|
|
||||||
deleteKey(pressedValue);
|
deleteKey(pressedValue);
|
||||||
} else if (keyUpEvent.code === "KeyT") {
|
} else if (keyUpEvent.keyCodeString === "T") {
|
||||||
toggleKey(pressedValue);
|
toggleKey(pressedValue);
|
||||||
} else if (keyUpEvent.code === "KeyF") {
|
} else if (keyUpEvent.keyCodeString === "F") {
|
||||||
focusKey(pressedValue);
|
focusKey(pressedValue);
|
||||||
} else if (keyUpEvent.code === "KeyG") {
|
} else if (keyUpEvent.keyCodeString === "G") {
|
||||||
gridKey(pressedValue);
|
gridKey(pressedValue);
|
||||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.code === "KeyX") {
|
} else if (keyUpEvent.ctrlKey && keyUpEvent.keyCodeString === "X") {
|
||||||
selectionManager.cutSelectedEntities();
|
selectionManager.cutSelectedEntities();
|
||||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.code === "KeyC") {
|
} else if (keyUpEvent.ctrlKey && keyUpEvent.keyCodeString === "C") {
|
||||||
selectionManager.copySelectedEntities();
|
selectionManager.copySelectedEntities();
|
||||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.code === "KeyV") {
|
} else if (keyUpEvent.ctrlKey && keyUpEvent.keyCodeString === "V") {
|
||||||
selectionManager.pasteEntities();
|
selectionManager.pasteEntities();
|
||||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.code === "KeyD") {
|
} else if (keyUpEvent.ctrlKey && keyUpEvent.keyCodeString === "D") {
|
||||||
selectionManager.duplicateSelection();
|
selectionManager.duplicateSelection();
|
||||||
} else if (keyUpEvent.ctrlKey && !keyUpEvent.shiftKey && keyUpEvent.code === "KeyZ") {
|
} else if (keyUpEvent.ctrlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") {
|
||||||
undoHistory.undo();
|
undoHistory.undo();
|
||||||
} else if (keyUpEvent.ctrlKey && !keyUpEvent.shiftKey && keyUpEvent.code === "KeyP") {
|
} else if (keyUpEvent.ctrlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") {
|
||||||
parentSelectedEntities();
|
parentSelectedEntities();
|
||||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.shiftKey && keyUpEvent.code === "KeyP") {
|
} else if (keyUpEvent.ctrlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") {
|
||||||
unparentSelectedEntities();
|
unparentSelectedEntities();
|
||||||
} else if (
|
} else if (
|
||||||
(keyUpEvent.ctrlKey && keyUpEvent.shiftKey && keyUpEvent.code === "KeyZ") ||
|
(keyUpEvent.ctrlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") ||
|
||||||
(keyUpEvent.ctrlKey && keyUpEvent.code === "KeyY")) {
|
(keyUpEvent.ctrlKey && keyUpEvent.keyCodeString === "Y")) {
|
||||||
|
|
||||||
undoHistory.redo();
|
undoHistory.redo();
|
||||||
} else if (WANT_DEBUG_MISSING_SHORTCUTS) {
|
} else if (WANT_DEBUG_MISSING_SHORTCUTS) {
|
||||||
console.warn("unhandled key event: " + JSON.stringify(keyUpEvent))
|
console.warn("unhandled key event: " + JSON.stringify(keyUpEvent))
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
var propertyMenu = new PopupMenu();
|
var propertyMenu = new PopupMenu();
|
||||||
|
|
||||||
|
@ -2756,7 +2759,6 @@ var showMenuItem = propertyMenu.addMenuItem("Show in Marketplace");
|
||||||
|
|
||||||
var propertiesTool = new PropertiesTool();
|
var propertiesTool = new PropertiesTool();
|
||||||
|
|
||||||
|
|
||||||
selectionDisplay.onSpaceModeChange = function(spaceMode) {
|
selectionDisplay.onSpaceModeChange = function(spaceMode) {
|
||||||
entityListTool.setSpaceMode(spaceMode);
|
entityListTool.setSpaceMode(spaceMode);
|
||||||
propertiesTool.setSpaceMode(spaceMode);
|
propertiesTool.setSpaceMode(spaceMode);
|
||||||
|
|
|
@ -1112,13 +1112,33 @@ function loaded() {
|
||||||
elToggleSpaceMode.innerText = "World";
|
elToggleSpaceMode.innerText = "World";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const KEY_CODES = {
|
||||||
|
BACKSPACE: 8,
|
||||||
|
DELETE: 46
|
||||||
|
};
|
||||||
|
|
||||||
document.addEventListener("keyup", function (keyUpEvent) {
|
document.addEventListener("keyup", function (keyUpEvent) {
|
||||||
if (keyUpEvent.target.nodeName === "INPUT") {
|
if (keyUpEvent.target.nodeName === "INPUT") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keyUpEvent.ctrlKey && keyUpEvent.code === "KeyA") {
|
let {code, key, keyCode, altKey, ctrlKey, shiftKey} = keyUpEvent;
|
||||||
|
|
||||||
|
let keyCodeString;
|
||||||
|
switch (keyCode) {
|
||||||
|
case KEY_CODES.DELETE:
|
||||||
|
keyCodeString = "Delete";
|
||||||
|
break;
|
||||||
|
case KEY_CODES.BACKSPACE:
|
||||||
|
keyCodeString = "Backspace";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
keyCodeString = String.fromCharCode(keyUpEvent.keyCode);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ctrlKey && keyCodeString === "A") {
|
||||||
let visibleEntityIDs = visibleEntities.map(visibleEntity => visibleEntity.id);
|
let visibleEntityIDs = visibleEntities.map(visibleEntity => visibleEntity.id);
|
||||||
let selectionIncludesAllVisibleEntityIDs = visibleEntityIDs.every(visibleEntityID => {
|
let selectionIncludesAllVisibleEntityIDs = visibleEntityIDs.every(visibleEntityID => {
|
||||||
return selectedEntities.includes(visibleEntityID);
|
return selectedEntities.includes(visibleEntityID);
|
||||||
|
@ -1142,12 +1162,13 @@ function loaded() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
let {code, key, altKey, ctrlKey, shiftKey} = keyUpEvent;
|
|
||||||
EventBridge.emitWebEvent(JSON.stringify({
|
EventBridge.emitWebEvent(JSON.stringify({
|
||||||
type: 'keyUpEvent',
|
type: 'keyUpEvent',
|
||||||
keyUpEvent: {
|
keyUpEvent: {
|
||||||
code,
|
code,
|
||||||
key,
|
key,
|
||||||
|
keyCode,
|
||||||
|
keyCodeString,
|
||||||
altKey,
|
altKey,
|
||||||
ctrlKey,
|
ctrlKey,
|
||||||
shiftKey
|
shiftKey
|
||||||
|
|
|
@ -3493,16 +3493,37 @@ function loaded() {
|
||||||
elDropdowns = document.getElementsByTagName("select");
|
elDropdowns = document.getElementsByTagName("select");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const KEY_CODES = {
|
||||||
|
BACKSPACE: 8,
|
||||||
|
DELETE: 46
|
||||||
|
};
|
||||||
|
|
||||||
document.addEventListener("keyup", function (keyUpEvent) {
|
document.addEventListener("keyup", function (keyUpEvent) {
|
||||||
if (keyUpEvent.target.nodeName === "INPUT") {
|
if (keyUpEvent.target.nodeName === "INPUT") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let {code, key, altKey, ctrlKey, shiftKey} = keyUpEvent;
|
let {code, key, keyCode, altKey, ctrlKey, shiftKey} = keyUpEvent;
|
||||||
|
|
||||||
|
let keyCodeString;
|
||||||
|
switch (keyCode) {
|
||||||
|
case KEY_CODES.DELETE:
|
||||||
|
keyCodeString = "Delete";
|
||||||
|
break;
|
||||||
|
case KEY_CODES.BACKSPACE:
|
||||||
|
keyCodeString = "Backspace";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
keyCodeString = String.fromCharCode(keyUpEvent.keyCode);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
EventBridge.emitWebEvent(JSON.stringify({
|
EventBridge.emitWebEvent(JSON.stringify({
|
||||||
type: 'keyUpEvent',
|
type: 'keyUpEvent',
|
||||||
keyUpEvent: {
|
keyUpEvent: {
|
||||||
code,
|
code,
|
||||||
key,
|
key,
|
||||||
|
keyCode,
|
||||||
|
keyCodeString,
|
||||||
altKey,
|
altKey,
|
||||||
ctrlKey,
|
ctrlKey,
|
||||||
shiftKey
|
shiftKey
|
||||||
|
|
|
@ -130,16 +130,37 @@ function loaded() {
|
||||||
EventBridge.emitWebEvent(JSON.stringify({ type: 'init' }));
|
EventBridge.emitWebEvent(JSON.stringify({ type: 'init' }));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const KEY_CODES = {
|
||||||
|
BACKSPACE: 8,
|
||||||
|
DELETE: 46
|
||||||
|
};
|
||||||
|
|
||||||
document.addEventListener("keyup", function (keyUpEvent) {
|
document.addEventListener("keyup", function (keyUpEvent) {
|
||||||
if (keyUpEvent.target.nodeName === "INPUT") {
|
if (keyUpEvent.target.nodeName === "INPUT") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let {code, key, altKey, ctrlKey, shiftKey} = keyUpEvent;
|
let {code, key, keyCode, altKey, ctrlKey, shiftKey} = keyUpEvent;
|
||||||
|
|
||||||
|
let keyCodeString;
|
||||||
|
switch (keyCode) {
|
||||||
|
case KEY_CODES.DELETE:
|
||||||
|
keyCodeString = "Delete";
|
||||||
|
break;
|
||||||
|
case KEY_CODES.BACKSPACE:
|
||||||
|
keyCodeString = "Backspace";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
keyCodeString = String.fromCharCode(keyUpEvent.keyCode);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
EventBridge.emitWebEvent(JSON.stringify({
|
EventBridge.emitWebEvent(JSON.stringify({
|
||||||
type: 'keyUpEvent',
|
type: 'keyUpEvent',
|
||||||
keyUpEvent: {
|
keyUpEvent: {
|
||||||
code,
|
code,
|
||||||
key,
|
key,
|
||||||
|
keyCode,
|
||||||
|
keyCodeString,
|
||||||
altKey,
|
altKey,
|
||||||
ctrlKey,
|
ctrlKey,
|
||||||
shiftKey
|
shiftKey
|
||||||
|
|
Loading…
Reference in a new issue