Map pad devices to actions

This MR adds specific handling for tablet pads, so buttons and other features can be mapped to actions in the GIMP UI. The UI to configure pad actions is heavily inspired in the already existing UI for other input controllers, with a grab button to add/select options for pad events in a list, and edit/delete options to change the action associated, editing the action pops up a different dialog for action selection.

Besides buttons/strips/rings, some pads have mode buttons that (similarly to keyboard modifiers) allow associating multiple actions to a single button or feature. This is also expressed in the UI with a "mode" column, and fetched from the grabbed events, effectively allowing the full configuration range on such devices.

This branch so far depends on gtk!6095 (merged), fixing some issues found around detection of pad devices.

What works:

  • Configuring pad devices, mapping actions to buttons/rings/strips in all available modes.
  • Saving and restoring of that configuration
  • Applying the actions through a GtkPadController on the image toplevel windows.
  • The tracking of configuration changes and device availability to ensure GtkPadControllers are dropped and kept up-to-date wrt configuration.

What does not quite work:

  • Rings and strips are currently mapped to a single action for both directions. GtkPadController expects actions with a double argument to handle directional events from Rings/strips, while GIMP has e.g. increase/decrease pairs of actions. The mapping between these two things does not exist at the moment.

This however seems far off enough to appreciate some review on the general direction :).

Merge request reports