The BLOCKS SDK
Getting control button events

Control button events are communicated from Lightpad and Control Blocks to your application via ControlButton objects.

You can obtain an array of ControlButton pointers associated with a specific Lightpad or Control Block from its corresponding Block object using the Block::getButtons method—see the Discovering BLOCKS page for an example of how to obtain Block objects. Each pointer to a ControlButton will be valid for the lifetime of the Block object.

Once you have a ControlButton you must register as a ControlButton::Listener to receive button pressed and button released callbacks. The process for doing this is to have one of your application's classes inherit from ControlButton::Listener and override the pure virtual methods ControlButton::Listener::buttonPressed and ControlButton::Listener::buttonReleased. Then, when you register your derived class as a listener to a particular ControlButton, your overriden methods will be called when the corresponding button is pressed and released.

Registering a class derived from ControlButton::Listener with multiple ControlButton objects is done as follows:

class ControlButtonListenerExample : public ControlButton::Listener
{
public:
ControlButtonListenerExample (Block& block)
{
for (auto button : block->getButtons())
button->addListener (this);
}
virtual void buttonPressed (ControlButton&, sourceControlButton, Block::Timestamp timestamp) override
{
// Do something when the sourceControlButton is pressed!
}
virtual void buttonReleased (ControlButton&, sourceControlButton, Block::Timestamp timestamp) override
{
// Do something when the sourceControlButton is released!
}
};

When your overriden buttonPressed or buttonReleased methods are called you have access to two paramters: a reference to the ControlButton that generated this event and timestamp for the event.

You will find multiple examples of control button listeners in the Example Applications pages.