CommandData and ctrl-key
-
On 09/04/2018 at 04:01, xxxxxxxx wrote:
User Information:
Cinema 4D Version: R19
Platform:
Language(s) : C++ ;---------
Hi again,I guess I already know the negating answer to this, but still hoping to get some hints or tips from this.
The context is as follows:
I have a dialog with userarea and have created a few CommandData in order to let the user switch between different drawing modes. Each CommandData represents a drawing mode.
When user switches between modes the userarea is updated, drawing information in the current requested mode.I am now playing with the idea to perform some specific actions when user switches between modes, but only when user holds the ctrl-key pressed.
I don't really want to introduce the cogwheel for each CommandData, as I don't want to present "options" to the user. I also don't want to introduce separate CommandData/Icons/menu-entries to perform the specific action when switching.
Is there a way to detect when user holds down ctrl key when pressing a CommandData icon in a palette (or in the main plugin's menu)? I doubt there is. Other options/alternatives?
I don't mind using subids per CommandData to indicate the regular switching from one mode to another or the switching + extra action. But how to steer these different subids, without providing a different icon/menu-entry per subid?
Thanks
-
On 10/04/2018 at 01:50, xxxxxxxx wrote:
Hi C4DS,
You can call GetInputState to know the current state of an input event.
For a CommandData the right place to do it is in the Execute function.virtual Bool Execute(BaseDocument* doc) { BaseContainer msg; if (GetInputState(BFM_INPUT_KEYBOARD, KEY_CONTROL, msg)) if (msg.GetBool(BFM_INPUT_VALUE)) GePrint("CTRL"); return true; };
Please let me know if you need anything else.
Cheers,
Maxime -
On 11/04/2018 at 11:54, xxxxxxxx wrote:
Thanks for that Maxime.
I didn't realize that GetInputState was available outside of GeDialog and GeUserArea context.