diff --git a/src/systems/userinput/bindings/keyboard-mouse-user.js b/src/systems/userinput/bindings/keyboard-mouse-user.js index 1f067d4447effc86541b93d26fb32ffaba5e471b..06c9b4f6a81a401ca8c3c40994d837e2dd6946d5 100644 --- a/src/systems/userinput/bindings/keyboard-mouse-user.js +++ b/src/systems/userinput/bindings/keyboard-mouse-user.js @@ -3,6 +3,8 @@ import { sets } from "../sets"; import { xforms } from "./xforms"; const wasd_vec2 = "/var/mouse-and-keyboard/wasd_vec2"; +const keyboardCharacterAcceleration = "/var/mouse-and-keyboard/keyboardCharacterAcceleration"; +const arrows_vec2 = "/var/mouse-and-keyboard/arrows_vec2"; const dropWithRMB = "/vars/mouse-and-keyboard/drop_with_RMB"; const dropWithEsc = "/vars/mouse-and-keyboard/drop_with_esc"; @@ -35,6 +37,16 @@ export const keyboardMouseUserBindings = { }, xform: xforms.rising }, + { + src: { + w: paths.device.keyboard.key("arrowup"), + a: paths.device.keyboard.key("arrowleft"), + s: paths.device.keyboard.key("arrowdown"), + d: paths.device.keyboard.key("arrowright") + }, + dest: { vec2: arrows_vec2 }, + xform: xforms.wasd_to_vec2 + }, { src: { w: paths.device.keyboard.key("w"), @@ -46,7 +58,15 @@ export const keyboardMouseUserBindings = { xform: xforms.wasd_to_vec2 }, { - src: { value: wasd_vec2 }, + src: { + first: wasd_vec2, + second: arrows_vec2 + }, + dest: { value: keyboardCharacterAcceleration }, + xform: xforms.add_vec2 + }, + { + src: { value: keyboardCharacterAcceleration }, dest: { value: paths.actions.characterAcceleration }, xform: xforms.copy }, diff --git a/src/systems/userinput/bindings/oculus-touch-user.js b/src/systems/userinput/bindings/oculus-touch-user.js index d386016c27497b4c3faeae1fcc3d413f3a0476fd..6967a2628f8aafd20be2b7ba4a7ddd3b2f0d1b9d 100644 --- a/src/systems/userinput/bindings/oculus-touch-user.js +++ b/src/systems/userinput/bindings/oculus-touch-user.js @@ -47,6 +47,8 @@ const leftJoyY = `${name}left/joyY`; const leftJoyYCursorMod = `${name}left/joyYCursorMod`; const oculusTouchCharacterAcceleration = `${name}characterAcceleration`; const keyboardCharacterAcceleration = "/var/keyboard/characterAcceleration"; +const wasd_vec2 = "/var/keyboard/wasd_vec2"; +const arrows_vec2 = "/var/keyboard/arrows_vec2"; const keyboardBoost = "/var/keyboard-oculus/boost"; const rightBoost = "/var/right-oculus/boost"; const leftBoost = "/var/left-oculus/boost"; @@ -224,6 +226,16 @@ export const oculusTouchUserBindings = { dest: { value: oculusTouchCharacterAcceleration }, xform: xforms.compose_vec2 }, + { + src: { + w: paths.device.keyboard.key("arrowup"), + a: paths.device.keyboard.key("arrowleft"), + s: paths.device.keyboard.key("arrowdown"), + d: paths.device.keyboard.key("arrowright") + }, + dest: { vec2: arrows_vec2 }, + xform: xforms.wasd_to_vec2 + }, { src: { w: paths.device.keyboard.key("w"), @@ -231,9 +243,17 @@ export const oculusTouchUserBindings = { s: paths.device.keyboard.key("s"), d: paths.device.keyboard.key("d") }, - dest: { vec2: keyboardCharacterAcceleration }, + dest: { vec2: wasd_vec2 }, xform: xforms.wasd_to_vec2 }, + { + src: { + first: wasd_vec2, + second: arrows_vec2 + }, + dest: { value: keyboardCharacterAcceleration }, + xform: xforms.add_vec2 + }, { src: { first: oculusTouchCharacterAcceleration, diff --git a/src/systems/userinput/bindings/vive-user.js b/src/systems/userinput/bindings/vive-user.js index 0e20233c7ff606ee29914e0d5293173404302491..74833b02f2f31b6394930ca2ed27e9bad85138ee 100644 --- a/src/systems/userinput/bindings/vive-user.js +++ b/src/systems/userinput/bindings/vive-user.js @@ -69,6 +69,8 @@ const k = name => { const keyboardSnapRight = k("snap-right"); const keyboardSnapLeft = k("snap-left"); const keyboardCharacterAcceleration = k("characterAcceleration"); +const wasd_vec2 = k("wasd_vec2"); +const arrows_vec2 = k("arrows_vec2"); const keyboardBoost = k("boost"); const teleportLeft = [ @@ -314,6 +316,16 @@ export const viveUserBindings = { dest: { value: lCharacterAcceleration }, xform: xforms.copyIfTrue }, + { + src: { + w: paths.device.keyboard.key("arrowup"), + a: paths.device.keyboard.key("arrowleft"), + s: paths.device.keyboard.key("arrowdown"), + d: paths.device.keyboard.key("arrowright") + }, + dest: { vec2: arrows_vec2 }, + xform: xforms.wasd_to_vec2 + }, { src: { w: paths.device.keyboard.key("w"), @@ -321,9 +333,17 @@ export const viveUserBindings = { s: paths.device.keyboard.key("s"), d: paths.device.keyboard.key("d") }, - dest: { vec2: keyboardCharacterAcceleration }, + dest: { vec2: wasd_vec2 }, xform: xforms.wasd_to_vec2 }, + { + src: { + first: wasd_vec2, + second: arrows_vec2 + }, + dest: { value: keyboardCharacterAcceleration }, + xform: xforms.add_vec2 + }, { src: { first: lCharacterAcceleration,