### Class

# Gtk PadController

#### Description [src]

    final class Gtk.PadController : Gtk.EventController {
      /* No available fields */
    }

`GtkPadController` is an event controller for the pads found in drawing tablets.

Pads are the collection of buttons and tactile sensors often found around the stylus-sensitive area.

These buttons and sensors have no implicit meaning, and by default they perform no action. `GtkPadController` is provided to map those to `GAction` objects, thus letting the application give them a more semantic meaning.

Buttons and sensors are not constrained to triggering a single action, some `GDK_SOURCE_TABLET_PAD` devices feature multiple “modes”. All these input elements have one current mode, which may determine the final action being triggered.

Pad devices often divide buttons and sensors into groups. All elements in a group share the same current mode, but different groups may have different modes. See gdk_device_pad_get_n_groups() and gdk_device_pad_get_group_n_modes().

Each of the actions that a given button/strip/ring performs for a given mode is defined by a `GtkPadActionEntry`. It contains an action name that will be looked up in the given `GActionGroup` and activated whenever the specified input element and mode are triggered.

A simple example of `GtkPadController` usage: Assigning button 1 in all modes and pad devices to an “invert-selection” action:

    GtkPadActionEntry *pad_actions[] = {
      { GTK_PAD_ACTION_BUTTON, 1, -1, "Invert selection", "pad-actions.invert-selection" },
      …
    };

    …
    action_group = g_simple_action_group_new ();
    action = g_simple_action_new ("pad-actions.invert-selection", NULL);
    g_signal_connect (action, "activate", on_invert_selection_activated, NULL);
    g_action_map_add_action (G_ACTION_MAP (action_group), action);
    …
    pad_controller = gtk_pad_controller_new (action_group, NULL);

The actions belonging to rings/strips will be activated with a parameter of type `G_VARIANT_TYPE_DOUBLE` bearing the value of the given axis, it is required that those are made stateful and accepting this `GVariantType`.

#### Hierarchy

#### Ancestors

- GtkEventController
- GObject

#### Constructors

###### gtk_pad_controller_new

Creates a new `GtkPadController` that will associate events from `pad` to actions.

#### Instance methods

###### gtk_pad_controller_set_action

Adds an individual action to `controller`.

###### gtk_pad_controller_set_action_entries

A convenience function to add a group of action entries on `controller`.

##### Methods inherited from GtkEventController (12)

###### gtk_event_controller_get_current_event

Returns the event that is currently being handled by the controller.

###### gtk_event_controller_get_current_event_device

Returns the device of the event that is currently being handled by the controller.

###### gtk_event_controller_get_current_event_state

Returns the modifier state of the event that is currently being handled by the controller.

###### gtk_event_controller_get_current_event_time

Returns the timestamp of the event that is currently being handled by the controller.

###### gtk_event_controller_get_name

Gets the name of `controller`.

###### gtk_event_controller_get_propagation_limit

Gets the propagation limit of the event controller.

###### gtk_event_controller_get_propagation_phase

Gets the propagation phase at which `controller` handles events.

###### gtk_event_controller_get_widget

Returns the `GtkWidget` this controller relates to.

###### gtk_event_controller_reset

Resets the `controller` to a clean state.

###### gtk_event_controller_set_name

Sets a name on the controller that can be used for debugging.

###### gtk_event_controller_set_propagation_limit

Sets the event propagation limit on the event controller.

###### gtk_event_controller_set_propagation_phase

Sets the propagation phase at which a controller handles events.

#### Properties

###### Gtk.PadController:action-group

No description available.

###### Gtk.PadController:pad

No description available.

##### Properties inherited from GtkEventController (4)

###### Gtk.EventController:name

The name for this controller, typically used for debugging purposes.

###### Gtk.EventController:propagation-limit

The limit for which events this controller will handle.

###### Gtk.EventController:propagation-phase

The propagation phase at which this controller will handle events.

###### Gtk.EventController:widget

The widget receiving the `GdkEvents` that the controller will handle.

#### Class structure

    struct GtkPadControllerClass {
      /* no available fields */
    }