C++ SDK 2026.4 — Supported ordered mouse movement input for keyboard-initiated modal transforms
-
Hello Maxon SDK Team,
I am developing a C++ viewport transformation plugin for Cinema 4D 2026.4, using the Cinema 4D 2026.3 SDK.
The plugin supports keyboard-initiated modal Move/Rotate/Scale operations (G/R/S), without holding down a mouse button. It needs continuous mouse movement, including when the cursor wraps across viewport boundaries.
Currently, cursor positions are sampled through GetCursorPos() during viewport cursor callbacks and periodic updates. The plugin uses SetCursorPos() when wrapping is necessary.
Under rapid mouse movement, especially while holding Shift for precision transforms, we have observed cases where cursor positions appear discontinuous after a warp. A large apparent displacement can then enter the transform calculation.
We would like to replace this polling-based approach with a properly supported event-based solution, if the Cinema 4D SDK provides one.
Could you clarify the following?
Is there a supported way for a C++ plugin to continuously receive ordered mouse movement events during a keyboard-initiated modal operation, without any mouse button held down?
Can EditorWindow::BfGetInputEvent() be used for this purpose? Does it provide the original mouse event coordinates, modifier state, and reliable ordering relative to cursor repositioning performed through SetCursorPos()?
Does calling BfGetInputEvent() remove events from the queue that Cinema 4D or other plugins would otherwise process? If so, is there a supported way to preserve or forward events not owned by our plugin?
If BfGetInputEvent() is not suitable, which API or callback mechanism would Maxon recommend for this type of keyboard-initiated continuous viewport interaction? Are there specific thread, window ownership, or lifecycle restrictions?
We are specifically looking for the supported SDK input and event ownership contract, rather than a workaround based on motion thresholds, delays, or repeated cursor repositioning.
Thank you for your guidance.