Internally Construct uses pointer events rather than mouse events, and pointer events have a weird quirk where if you hold two mouse buttons, the first button is a pointerdown event, but the second button fires a pointermove event with different buttons. As Construct supports running in a web worker without direct access to input events, it posts pointer events from the DOM to the worker, and synthesises mouse events based on pointer events, but it has the same limitation. So yeah, I guess that's an awkward compatibility difference.
I can think of two possible solutions to this:
- Use pointer events and watch for the button changes in a pointermove event. Construct adds a non-standard
lastButtons
property which helps identify new mouse button presses. (Using pointer events also makes it possible to support touch input with the same code.)
- Turn off worker mode and use the real browser events in the DOM (i.e.
document.addEventListener()
rather than runtime.addEventListener()
).