mirror of
https://github.com/overte-org/overte.git
synced 2025-04-15 09:49:41 +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,
|
||||
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
|
||||
|
||||
|
@ -2706,42 +2707,44 @@ mapping.from([Controller.Hardware.Keyboard.P])
|
|||
.when([Controller.Hardware.Keyboard.Control, !Controller.Hardware.Keyboard.Shift])
|
||||
.to(whenReleased(function() { parentSelectedEntities(); }));
|
||||
|
||||
function keyUpEventFromUIWindow(keyUpEvent) {
|
||||
keyUpEventFromUIWindow = function(keyUpEvent) {
|
||||
var WANT_DEBUG_MISSING_SHORTCUTS = false;
|
||||
|
||||
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);
|
||||
} else if (keyUpEvent.code === "KeyT") {
|
||||
} else if (keyUpEvent.keyCodeString === "T") {
|
||||
toggleKey(pressedValue);
|
||||
} else if (keyUpEvent.code === "KeyF") {
|
||||
} else if (keyUpEvent.keyCodeString === "F") {
|
||||
focusKey(pressedValue);
|
||||
} else if (keyUpEvent.code === "KeyG") {
|
||||
} else if (keyUpEvent.keyCodeString === "G") {
|
||||
gridKey(pressedValue);
|
||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.code === "KeyX") {
|
||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.keyCodeString === "X") {
|
||||
selectionManager.cutSelectedEntities();
|
||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.code === "KeyC") {
|
||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.keyCodeString === "C") {
|
||||
selectionManager.copySelectedEntities();
|
||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.code === "KeyV") {
|
||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.keyCodeString === "V") {
|
||||
selectionManager.pasteEntities();
|
||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.code === "KeyD") {
|
||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.keyCodeString === "D") {
|
||||
selectionManager.duplicateSelection();
|
||||
} else if (keyUpEvent.ctrlKey && !keyUpEvent.shiftKey && keyUpEvent.code === "KeyZ") {
|
||||
} else if (keyUpEvent.ctrlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") {
|
||||
undoHistory.undo();
|
||||
} else if (keyUpEvent.ctrlKey && !keyUpEvent.shiftKey && keyUpEvent.code === "KeyP") {
|
||||
} else if (keyUpEvent.ctrlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") {
|
||||
parentSelectedEntities();
|
||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.shiftKey && keyUpEvent.code === "KeyP") {
|
||||
} else if (keyUpEvent.ctrlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") {
|
||||
unparentSelectedEntities();
|
||||
} else if (
|
||||
(keyUpEvent.ctrlKey && keyUpEvent.shiftKey && keyUpEvent.code === "KeyZ") ||
|
||||
(keyUpEvent.ctrlKey && keyUpEvent.code === "KeyY")) {
|
||||
(keyUpEvent.ctrlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") ||
|
||||
(keyUpEvent.ctrlKey && keyUpEvent.keyCodeString === "Y")) {
|
||||
|
||||
undoHistory.redo();
|
||||
} else if (WANT_DEBUG_MISSING_SHORTCUTS) {
|
||||
console.warn("unhandled key event: " + JSON.stringify(keyUpEvent))
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var propertyMenu = new PopupMenu();
|
||||
|
||||
|
@ -2756,7 +2759,6 @@ var showMenuItem = propertyMenu.addMenuItem("Show in Marketplace");
|
|||
|
||||
var propertiesTool = new PropertiesTool();
|
||||
|
||||
|
||||
selectionDisplay.onSpaceModeChange = function(spaceMode) {
|
||||
entityListTool.setSpaceMode(spaceMode);
|
||||
propertiesTool.setSpaceMode(spaceMode);
|
||||
|
|
|
@ -1112,13 +1112,33 @@ function loaded() {
|
|||
elToggleSpaceMode.innerText = "World";
|
||||
}
|
||||
}
|
||||
|
||||
const KEY_CODES = {
|
||||
BACKSPACE: 8,
|
||||
DELETE: 46
|
||||
};
|
||||
|
||||
document.addEventListener("keyup", function (keyUpEvent) {
|
||||
if (keyUpEvent.target.nodeName === "INPUT") {
|
||||
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 selectionIncludesAllVisibleEntityIDs = visibleEntityIDs.every(visibleEntityID => {
|
||||
return selectedEntities.includes(visibleEntityID);
|
||||
|
@ -1142,12 +1162,13 @@ function loaded() {
|
|||
}
|
||||
|
||||
|
||||
let {code, key, altKey, ctrlKey, shiftKey} = keyUpEvent;
|
||||
EventBridge.emitWebEvent(JSON.stringify({
|
||||
type: 'keyUpEvent',
|
||||
keyUpEvent: {
|
||||
code,
|
||||
key,
|
||||
keyCode,
|
||||
keyCodeString,
|
||||
altKey,
|
||||
ctrlKey,
|
||||
shiftKey
|
||||
|
|
|
@ -3493,16 +3493,37 @@ function loaded() {
|
|||
elDropdowns = document.getElementsByTagName("select");
|
||||
}
|
||||
|
||||
const KEY_CODES = {
|
||||
BACKSPACE: 8,
|
||||
DELETE: 46
|
||||
};
|
||||
|
||||
document.addEventListener("keyup", function (keyUpEvent) {
|
||||
if (keyUpEvent.target.nodeName === "INPUT") {
|
||||
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({
|
||||
type: 'keyUpEvent',
|
||||
keyUpEvent: {
|
||||
code,
|
||||
key,
|
||||
keyCode,
|
||||
keyCodeString,
|
||||
altKey,
|
||||
ctrlKey,
|
||||
shiftKey
|
||||
|
|
|
@ -130,16 +130,37 @@ function loaded() {
|
|||
EventBridge.emitWebEvent(JSON.stringify({ type: 'init' }));
|
||||
});
|
||||
|
||||
const KEY_CODES = {
|
||||
BACKSPACE: 8,
|
||||
DELETE: 46
|
||||
};
|
||||
|
||||
document.addEventListener("keyup", function (keyUpEvent) {
|
||||
if (keyUpEvent.target.nodeName === "INPUT") {
|
||||
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({
|
||||
type: 'keyUpEvent',
|
||||
keyUpEvent: {
|
||||
code,
|
||||
key,
|
||||
keyCode,
|
||||
keyCodeString,
|
||||
altKey,
|
||||
ctrlKey,
|
||||
shiftKey
|
||||
|
|
Loading…
Reference in a new issue