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
Carlos Garnacho
6bd06cf40b
wayland: Implement pad management in MetaWaylandTabletSeat
...
Now pads are looked up and notified upon, both on startup and
when plugging a tablet.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
01fd218e17
wayland: Implement wp_tablet_pad
...
This object represents the collection of buttons, strips and rings
in a tablet pad. All the objects created (pad, strips and rings)
share a common focus surface and have the same lifetime.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
f8c0301ecc
wayland: Implement wp_tablet_pad_group
2016-07-20 19:26:31 +02:00
Carlos Garnacho
2354643d55
wayland: Implement wp_tablet_pad_strip
...
This represents pad sliders.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
c1d1477c64
wayland: Implement wp_tablet_pad_ring
...
This object represents pad "wheels"
2016-07-20 19:26:31 +02:00
Carlos Garnacho
04629d2bc2
clutter: Handle pad button events in clutter_event_get_button()
2016-07-20 19:26:31 +02:00
Carlos Garnacho
c789459a31
clutter/evdev: Translate/emit libinput pad events
2016-07-20 19:26:31 +02:00
Carlos Garnacho
2f7602f297
clutter/evdev: Handle management of pad devices
2016-07-20 19:26:31 +02:00
Carlos Garnacho
d5459427d5
clutter: Add ::n-rings and ::n-strips property to ClutterInputDevice
...
This will only be practical for pads (and maybe generic buttonsets in
the future?), we just need to know the number as the events will also
contain a number as the identificator.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
379c6fb81a
clutter: Add pad event types
...
And their management along the pipeline.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
fc5af32cdc
clutter: Add clutter_event_get_mode_group()
...
This event can be used on pad events to find out the group they
pertain to.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
b71d7058db
clutter: Add pad event structs
...
Those map closely what we get from libinput. Button events have
been made its own separate struct, its semantics fall somewhere
in between of ClutterButtonEvent and ClutterKeyEvent, so is better
emitted as its own set.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
1d9d176c3f
clutter: Add "pad" device type
2016-07-20 19:26:31 +02:00
Carlos Garnacho
cd911584eb
wayland: Set an specific role on surfaces passed in wp_tablet_tool.set_cursor
...
This is now separated from the generic cursor one. This means that wl_surfaces
can't be shared across wl_pointer and wp_tablet_tool. This is a change in
tablet protocol v2.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
2ff629a984
wayland: Add MetaWaylandSurfaceRoleTabletCursor
...
This is a simple subclass of MetaWaylandSurfaceRoleCursor, mostly
so we can distinguish by GType, the methods in the parent class
still apply and are useful.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
b0a3c472ea
wayland: Make MetaWaylandSurfaceRoleCursor derivable
2016-07-20 19:26:31 +02:00
Carlos Garnacho
7ecbca6291
wayland: Make additional data in MetaWaylandSurfaceRoleCursor private
...
This will help subclassing it.
2016-07-20 19:26:31 +02:00
Carlos Garnacho
780c66fa73
wayland: Use wl_fixed_t for angle arguments in wp_tablet_tool
...
This is a change in tablet protocol v2
2016-07-20 19:26:31 +02:00