Florian Müllner
fe09a3c4e2
backends: Add missing guards to libwacom calls
2016-07-22 23:20:47 +02:00
Carlos Garnacho
ee6867611f
configure: Bump gsettings-desktop-schemas/wayland-protocol versions
...
Those versions are required for tablet v2 protocol support.
2016-07-22 19:03:12 +02:00
Piotr Drąg
207c11d1f7
Updated POTFILES.in
2016-07-22 15:03:16 +02:00
Carlos Garnacho
c6beb1cfc5
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-22 13:31:09 +02:00
Carlos Garnacho
b34fe72bb7
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-22 13:31:09 +02:00
Carlos Garnacho
18f301cec9
wayland: Export function to tell whether a button belongs to a pad group
2016-07-22 13:31:09 +02:00
Carlos Garnacho
406677e2a0
wayland: Check serial on wp_tablet_pad_strip.set_feedback
2016-07-22 13:31:09 +02:00
Carlos Garnacho
4f25057413
wayland: Check serial on wp_tablet_pad_ring.set_feedback
2016-07-22 13:31:09 +02:00
Carlos Garnacho
2f492c133c
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-22 13:31:09 +02:00
Carlos Garnacho
138a47b8f9
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-22 13:31:09 +02:00
Carlos Garnacho
62e4954c96
wayland: Add method to relate a pad strip to its group
2016-07-22 13:31:09 +02:00
Carlos Garnacho
062b696df2
wayland: Add method to relate a pad ring to its group
2016-07-22 13:31:09 +02:00
Carlos Garnacho
5effde59f6
backends: Implement the "show osd" pad action
...
Just call back into meta_display_request_show_osd().
2016-07-22 13:31:09 +02:00
Carlos Garnacho
76595af8af
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-22 13:31:09 +02:00
Carlos Garnacho
21c8911254
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-22 13:31:09 +02:00
Carlos Garnacho
35554555e0
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-22 13:31:09 +02:00
Carlos Garnacho
e2ad8700a9
backends: Export function to query the mapped MetaMonitorInfo of a tablet
...
Or NULL if the tablet is mapped to the full desktop size.
2016-07-22 13:31:09 +02:00
Carlos Garnacho
323c608b0c
backends: Export call to retrieve the base GSettings for a tablet
2016-07-22 13:31:09 +02:00
Carlos Garnacho
0efe076a0a
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-22 13:31:09 +02:00
Carlos Garnacho
6f7f98540f
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-22 13:31:09 +02:00
Carlos Garnacho
56632d2ef7
backends: Add function to retrieve the label for a pad button action
...
As those are specified by settings.
2016-07-22 13:31:09 +02:00
Carlos Garnacho
6296d30e1a
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-22 13:31:09 +02:00
Carlos Garnacho
ed16b40c98
meta: Add MetaPadActionType enum
...
This will be used on lookups to the current action assigned to
any element in a tablet pad.
2016-07-22 13:31:09 +02:00
Carlos Garnacho
7bba20e536
wayland: Hook MetaWaylandTabletPad to pad button actions management
...
These are handled by the MetaInputSettings, so hook the events emitted
to it.
2016-07-22 13:31:09 +02:00
Carlos Garnacho
8e6244238d
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-22 13:31:09 +02:00
Carlos Garnacho
ba9ec00694
wayland: Add update() phase to MetaWaylandTabletPad
...
This will be needed to update internal state of pad groups.
2016-07-22 13:31:09 +02:00
Carlos Garnacho
08cda496f8
wayland: Apply pressure settings before sending wp_tablet_tool.pressure
2016-07-22 13:31:09 +02:00
Carlos Garnacho
f9552bb9c0
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-22 13:31:09 +02:00
Carlos Garnacho
7e267e9b01
wayland: Implement stylus button actions
...
Those just send different BTN_ keycodes.
2016-07-22 13:31:09 +02:00
Carlos Garnacho
fbb4c0b831
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-22 13:31:09 +02:00
Carlos Garnacho
d7faab76e0
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-22 13:31:09 +02:00
Carlos Garnacho
b7892ba1c5
backends: Disable keep-aspect and output mapping on relative devices
...
Those settings make no sense there, so should be made ineffective.
2016-07-22 13:31:09 +02:00
Carlos Garnacho
ab2d2af176
backends: Implement set_tablet_mapping() in native backend
...
We can now just set the mapping through clutter_input_device_set_mapping()
2016-07-22 13:31:09 +02:00
Carlos Garnacho
80674fc9e4
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-22 13:31:09 +02:00
Carlos Garnacho
9587a60da4
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-22 13:31:09 +02:00
Carlos Garnacho
73958aeb59
backends: Add private getter for the MetaInputSettings
...
We will need to fetch information from it at certain places.
2016-07-22 13:31:09 +02:00
Carlos Garnacho
77b33a86b8
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-22 13:31:09 +02:00
Carlos Garnacho
f3b94d9a78
wayland: Implement wp_tablet.path
...
Now that we have clutter_input_device_get_device_node(), it is trivial
to implement.
2016-07-22 13:31:09 +02:00
Carlos Garnacho
af8b938f92
clutter/x11: Set device node information in XI2 devices
2016-07-22 13:31:09 +02:00
Carlos Garnacho
1496a7ead3
clutter/evdev: Set device node information to evdev devices
2016-07-22 13:31:09 +02:00
Carlos Garnacho
e7e62ee4a4
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-22 13:31:09 +02:00
Carlos Garnacho
f6e471fca4
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-22 13:31:09 +02:00
Carlos Garnacho
1dd121002f
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-22 13:31:09 +02:00
Carlos Garnacho
526fdca3fb
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-22 13:31:09 +02:00
Carlos Garnacho
220ac7c8f2
backends: Add empty stubs for tablet configuration
...
Those will be called when configuring tablets.
2016-07-22 13:31:09 +02:00
Carlos Garnacho
5ea39e0e77
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-22 13:31:09 +02:00
Carlos Garnacho
1c23d4bc51
clutter/evdev: Set tool IDs
2016-07-22 13:31:09 +02:00
Carlos Garnacho
2e6bfa8bae
clutter: Add ClutterInputDeviceTool:id property
2016-07-22 13:31:09 +02:00
Carlos Garnacho
a59170c09f
clutter: Fix ClutterInputDeviceTool:serial setter/getter
...
The argument is internally handled as a uint64, but only exposed in
API as guint.
2016-07-22 13:31:09 +02:00
Carlos Garnacho
aa9b2c5494
configure: Check for libwacom
...
It will be used for some advanced tablet features, which we can't
get solely from libinput.
2016-07-22 13:31:09 +02:00