Commit Graph

21735 Commits

Author SHA1 Message Date
Carlos Garnacho
ec5d127cd2 wayland: Emit wp_tablet_pad_group.buttons after focus changes
The buttons grabbed by the compositor might have changed in between,
so just broadcast the button array again.
2016-07-20 19:27:24 +02:00
Carlos Garnacho
1c1785ea6e wayland: Check serial on wp_tablet_pad.set_feedback
We must lookup the mode switch serial for the group where the button
belongs to. Also, avoid the changes if the client requests setting
the feedback for buttons owned by the compositor.
2016-07-20 19:27:24 +02:00
Carlos Garnacho
aef997f7a1 wayland: Export function to tell whether a button belongs to a pad group 2016-07-20 19:27:24 +02:00
Carlos Garnacho
27477cbd30 wayland: Check serial on wp_tablet_pad_strip.set_feedback 2016-07-20 19:27:24 +02:00
Carlos Garnacho
ed73efa63f wayland: Check serial on wp_tablet_pad_ring.set_feedback 2016-07-20 19:27:24 +02:00
Carlos Garnacho
98f26bf01a wayland: Fix label lookup on >1 strips/rings
We assumed that each group could only have 1 strip and/or ring, because
accounting is performed per group, so we could not assume the real
index for anything above 1. Get rid of this restriction, now that
MetaWaylandTabletPad does its own accounting of rings/strips, alongside
groups.
2016-07-20 19:27:24 +02:00
Carlos Garnacho
edda88a7dd wayland: Move strips/rings management back to MetaWaylandTabletPad
This is best for 2 reasons:
- It's feels cleaner doing first creation of rings/strips and then
  the group assignment. The other option is making groups iterate
  other all rings/strips and selectively skip those not meant for
  it, which sounds somewhat redundant.
- Some minimal accounting of rings/strips without group restrictions
  is needed for meta_wayland_tablet_pad_get_label().

The rings/strips memory is now owned by MetaWaylandTabletPad instead
of groups, which is sort of meaningless since all are meant to go
at the same time.
2016-07-20 19:27:24 +02:00
Carlos Garnacho
5815259897 wayland: Add method to relate a pad strip to its group 2016-07-20 19:27:24 +02:00
Carlos Garnacho
1f7c7bdeaa wayland: Add method to relate a pad ring to its group 2016-07-20 19:27:24 +02:00
Carlos Garnacho
05a5c86203 backends: Implement the "show osd" pad action
Just call back into meta_display_request_show_osd().
2016-07-20 19:27:24 +02:00
Carlos Garnacho
c90d7a373b core: Add special case for the pad OSD in event handling
When it's active, we want wayland to stop handling (most notably key)
events.
2016-07-20 19:27:24 +02:00
Carlos Garnacho
6225cc6e60 core: Add meta_display_request_pad_osd() function
There may be external/compositor-specific reasons to trigger the
pad OSD. Expose this call so the pad OSD can be triggered looking
up the right settings, monitor, etc...
2016-07-20 19:27:24 +02:00
Carlos Garnacho
4c4b40d468 core: Add MetaDisplay:show-pad-osd signal
This is intended to be caught in the gnome-shell code, in order to
show the OSD with the pad action mapping.
2016-07-20 19:27:24 +02:00
Carlos Garnacho
02ce6c5865 backends: Export function to query the mapped MetaOutput of a tablet
Or NULL if the tablet is mapped to the full desktop size.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
522989494f backends: Export call to retrieve the base GSettings for a tablet 2016-07-20 19:26:31 +02:00
Carlos Garnacho
ab851fc6e5 backends: Implement "switch monitor" pad button action
This action remaps the tablet to each of the connected monitors,
or to the span of all monitors.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
185eabd3e3 core: Add public MetaDisplay functions to get action labels for pad buttons
This API will be used from the gnome-shell pad OSD implementation, in order
to show the actions that currently apply to every button/ring/strip in the
tablet.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
67f5b89659 backends: Add function to retrieve the label for a pad button action
As those are specified by settings.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
c7e0b87d7e meta: Add MetaPadActionType enum
This will be used on lookups to the current action assigned to
any element in a tablet pad.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
ec50fcd320 wayland: Add getters for the current feedback strings in MetaWaylandTabletPad
Each of the buttons/rings/strips may have one such feedback string, this API
makes is meant to make lookups consistent.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
982802d66c wayland: Hook MetaWaylandTabletPad to pad button actions management
These are handled by the MetaInputSettings, so hook the events emitted
to it.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
0dcca308e7 backends: Add API to trigger actions related to pad buttons
It does nothing at the moment, but can be hooked into MetaWaylandTabletPad
now. For X11, we need to trigger these for the pad events we receive from
the passive pad button grabs.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
b68247d51e wayland: Add update() phase to MetaWaylandTabletPad
This will be needed to update internal state of pad groups.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
499851d404 wayland: Apply pressure settings before sending wp_tablet_tool.pressure 2016-07-20 19:26:31 +02:00
Carlos Garnacho
ef113d708b backends: Add function to apply pressure sensitivity to tablet tools
A bezier curve is created out of the 2 control points in settings, so
the pressure is made to follow the stablished curve between 0 and 1.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
e2b8b0bf67 wayland: Implement stylus button actions
Those just send different BTN_ keycodes.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
ec2ab05d8e backends: Add function to retrieve the action mapped to an stylus button
This function will be useful for the wayland implementation, because buttons
are mapped at the time of sending those through the wire.
As x11/wayland implementations differ here, this function will be useful for
the wayland implementation, as the action is handled lat
2016-07-20 19:26:31 +02:00
Carlos Garnacho
69955471fc backends: Perform libwacom checks before applying settings
Some settings make no sense on external tablets, and others make
no sense in display/system-integrated tablets. Perform those checks
so we don't end up with possibly broken configuration.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
e59a32afa5 backends: Disable keep-aspect and output mapping on relative devices
Those settings make no sense there, so should be made ineffective.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
1c0b063855 backends: Implement set_tablet_mapping() in native backend
We can now just set the mapping through clutter_input_device_set_mapping()
2016-07-20 19:26:31 +02:00
Carlos Garnacho
0cd46afa8f clutter/evdev: Optionally report abs/rel motions for tablet tools
Depending on clutter_input_device_get_mapping(), or whether the current
tool is either cursor or lens (those don't make any sense in absolute
mode), relative motions will be reported.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
c73cc5138b clutter: Add clutter_input_device_[gs]et_mapping()
This function call only applies to tablets, and thus will error
out unless it's called with CLUTTER_TABLET_DEVICEs. This will
allow setting absolute/relative mapping on those on the fly, as
this is optional.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
f51972c2aa backends: Turn MetaInputSettings into a singleton
We will need to fetch information from it at certain places.
The MetaBackend still takes care of freeing it though.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
f81e0f8922 backends: Fetch libwacom information for tablets in MetaInputSettings
Given that information defines largely how such devices are to be
configured, it makes sense to have that information at hand. A getter
has been also added for the places where it could be useful, although
it will require HAVE_LIBWACOM checks in callers too.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
1bf263f038 wayland: Implement wp_tablet.path
Now that we have clutter_input_device_get_device_node(), it is trivial
to implement.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
257b16680f clutter/x11: Set device node information in XI2 devices 2016-07-20 19:26:31 +02:00
Carlos Garnacho
ed6eb8c94b clutter/evdev: Set device node information to evdev devices 2016-07-20 19:26:31 +02:00
Carlos Garnacho
95181bdbaa clutter: Add clutter_input_device_get_device_node()
This function is meant to return the device node path (eg. /dev/input/...),
which will be useful to wire up a few things.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
59be5bf3b1 backends: Add function to lookup the mapping for a given tablet
At least for wayland, this needs implementing within mutter. So add
a function to look this setting up.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
7f8932b489 backends: Store mappable devices' info in the hashtable
Instead of as closure data. We will need to store (and query) more
per-device info, so access to this struct is necessary.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
f2feb6d53d backends: Map tablets/pads, and wire to configuration vfuncs
With this, the left-handed setting works. The other configuration
vfuncs remain empty stubs, but will be correctly applied when those
are handled.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
47067e6d17 backends: Add empty stubs for tablet configuration
Those will be called when configuring tablets.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
3386e5dc39 wayland: Implement wp_tablet_tool.hardware_id_wacom
We can now fetch this info from the ClutterInputDeviceTool, so
use it to implement this event.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
384400cd24 clutter/evdev: Set tool IDs 2016-07-20 19:26:31 +02:00
Carlos Garnacho
be9997c717 clutter: Add ClutterInputDeviceTool:id property 2016-07-20 19:26:31 +02:00
Carlos Garnacho
d3be071196 configure: Check for libwacom
It will be used for some advanced tablet features, which we can't
get solely from libinput.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
de704e591b wayland: Add focus management to pads
All pads will share the same focus than the keyboard, so this means that:
- The focus changes in-sync for keyboard and all pad devices, and
- Newly plugged pads will be immediately focused on that same surface
2016-07-20 19:26:31 +02:00
Carlos Garnacho
a14f0edcae wayland: Add MetaWaylandTabletSeat API to correlate pads/tablets
All pads have one tablet, but a tablet may have multiple pads. Add
API to look things up from a MetaWaylandTablet(Pad).
2016-07-20 19:26:31 +02:00
Carlos Garnacho
bf5324a339 wayland: Add pointer from MetaWaylandTabletSeat to MetaWaylandSeat
It will be useful to backreference to the MetaWaylandSeat from tablet
code.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
9855ff010a wayland: Wire up pad device event management
The tablet manager will now lookup the correct MetaWaylandTabletSeat,
and forward the events through it.
2016-07-20 19:26:31 +02:00