ButtonNode
-
class ButtonNode
Bases:
DataNode
This is the primary interface to on/off button devices associated with a
ClientBase
. This creates a node that connects to the named button device, if it exists, and provides hooks to the user to read the state of any of the sequentially numbered buttons associated with that device.It also can associate an arbitrary
ButtonHandle
with each button; when buttons are associated withButtonHandles
, this node will put appropriate up and down events on the data graph for each button state change.Inheritance diagram
-
explicit ButtonNode(ClientBase *client, std::string const &device_name)
-
explicit ButtonNode(InputDevice *device)
-
ButtonNode(ButtonNode const&) = default
-
ButtonHandle get_button_map(int index) const
Returns the
ButtonHandle
that was previously associated with the given index number by a call toset_button_map()
, orButtonHandle::none()
if no button was associated.
-
bool get_button_state(int index) const
Returns true if the indicated button (identified by its index number) is currently known to be down, or false if it is up or unknown.
-
static TypeHandle get_class_type(void)
-
int get_num_buttons(void) const
Returns the number of buttons known to the
ButtonNode
. This includes those buttons whose state has been seen, as well as buttons that have been associated with aButtonHandle
even if their state is unknown. This number may change as more buttons are discovered.
-
bool is_button_known(int index) const
Returns true if the state of the indicated button is known, or false if we have never heard anything about this particular button.
-
bool is_valid(void) const
Returns true if the
ButtonNode
is valid and connected to a server, false otherwise.
-
void set_button_map(int index, ButtonHandle button)
Associates the indicated
ButtonHandle
with the button of the indicated index number. When the given button index changes state, a correspondingButtonEvent
will be generated with the givenButtonHandle
. PassButtonHandle::none()
to turn off any association.It is not necessary to call this if you simply want to query the state of the various buttons by index number; this is only necessary in order to generate
ButtonEvents
when the buttons change state.
-
explicit ButtonNode(ClientBase *client, std::string const &device_name)