Commit Graph

41 Commits

Author SHA1 Message Date
Mike Blumenkrantz dc073c1ea3 wayland: fix num/caps lock handling in events
locks are not the same as modifiers, and the corresponding event flag must
be set based on whichever value(s) are set instead of yolo mixing and matching

@fix

ref T5737
2017-08-18 15:24:37 -04:00
Derek Foreman 33439865de elput: Fix synthetic relative motion events based on abs events
libinput won't actually give us this info, and logs an error instead.
We can't synthesize based on pointer position due to pointer
warping.

So we must track abs reports and use previous abs reports to
synthesize rel events.
2017-07-28 16:48:38 -05:00
Derek Foreman 27f88b534a elput: Fix multiple open/close of drm devices
When I added the code to probe drm devices to ensure they're
modeset capable (ref 414d406b3b)
I didn't realize elput didn't allow us to open and close more than
one drm device at startup without blowing up libinput.

This is a somewhat dirty hack to rough that in.

The problem is that open/close the device during startup will
result in an async "gone" callback from logind, which then kicks
off an input shutdown.  We need to try harder to only do that
shutdown when it makes sense.
2017-07-24 16:06:52 -05:00
Chris Michael 8fdb4e0d8d elput: Fix support for setting keyboard led(s)
Small patch to update keyboard led(s) when caps, numlock, etc are
pressed. This patch adds some fields to internal (non-API exposed)
structures inside our private header (of a BETA-API library) and thus
should still be ok during freeze.

Fixes T5655

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-07-10 14:14:06 -04:00
Mike Blumenkrantz ad0aae8f8d elput: remove keymap mmap+event
this was originally intended to allow some code to be moved out of the
compositor, but the idea turned out to be unfeasible since multiple
display backends need to be supported and not all related components
will provide similar functionality
2017-06-16 12:23:08 -04:00
Chris Michael 26af19b543 elput: Add API function to swap dx & dy axis from pointer motion event
Small patch which adds an API function that can be called to swap x
and y axis and invert them according to rotation angle.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-08 10:03:36 -04:00
Chris Michael 06b8a76954 elput: Minor formatting fix
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-08 10:03:06 -04:00
Mike Blumenkrantz bc346d367f elput: send extra pointer motion event on first button press after resume
ensure state is reapplied by other components
2017-06-02 18:23:43 -04:00
Mike Blumenkrantz f220f086b9 elput: move pointer coords into seat struct
@fix
2017-06-02 18:23:43 -04:00
Mike Blumenkrantz 4c7c613e76 elput: add refcounting for seats/devices
ensure lifetimes persist through events

@fix
2017-06-02 18:23:42 -04:00
Mike Blumenkrantz ed4e54ebe2 wayland/drm: create evas_devices and add device pointer to input events
this is still semi-broken if a seat has many pointer-ish type devices since
pointer devices in ecore-evas were never correctly implemented to be 1:1 with
seat:cursor relationships

@feature
2017-05-26 16:27:43 -04:00
Mike Blumenkrantz d4ce9b1ac3 elput: store output w/h and apply to devices on creation
fix async device initialization for devices which need this (e.g., touchpads)

@fix
2017-05-26 16:27:43 -04:00
Mike Blumenkrantz e34088d74e elput: rename and make public Elput_Device_Caps enum 2017-05-26 16:27:43 -04:00
Mike Blumenkrantz e8fe0bcc47 elput/drm: redo xkb context/keymap setting
context and keymap need to be set at the same time in order to effectively
update keyboard state, and active group should be accessible through api
as well

preserve old function ABI to ensure old binaries don't crash
2017-05-26 16:27:42 -04:00
Mike Blumenkrantz 6ddcd48fde elput: implement compose sequences
@feature

fix T5006
2017-05-26 16:27:42 -04:00
Mike Blumenkrantz f7ae2a7de8 elput: fix key/keyname strings in key events
todo: move all this duplicated code somewhere
2017-05-26 16:27:42 -04:00
Mike Blumenkrantz ba1ab3a8b1 elput: store device pressure for use in events 2017-05-26 16:27:42 -04:00
Mike Blumenkrantz 679872a800 elput: group tablet input devices into pointer devices
this is consistent with x11 behavior as well as the behavior of other toolkits
under wayland

@feature
2017-05-26 16:27:42 -04:00
Chris Michael 343a272328 elput: Store touch timestamp and slot
This patch adds a timestamp field to the touch structure so that we
can store it and do not have to refetch the timestamp when sending
touch events.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-12 11:11:50 -05:00
Chris Michael b2a4f45790 elput: Support suspending and resuming inputs on vt switch
This patch fixes an issue where input would stop working when you
vt-switch away and back again in a running Enlightenment Wayland
session. Basically, when we vt-switch away, we need to tell libinput
to suspend input event processing, and when we return to re-enable it.

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-21 12:46:29 -04:00
Chris Michael 20f418b8d7 elput: Add API function to support caching of existing keymap
@feature

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-27 09:17:46 -04:00
Chris Michael 65cfdaa3dd elput: Add API function to support caching of an xkb_context
@feature

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-27 09:12:53 -04:00
Chris Michael 2c043ca205 elput: Add APIs to support keyboard key remapping
This patch adds 2 new API functions which can enable keyboard key
remapping, and set which keys are to be remapped.

@feature

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-26 12:49:24 -04:00
Chris Michael 054a9c8182 elput: Add API function to calibrate input devices
This adds an API function that can be called to calibrate input
devices based on a given output size

@feature

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-26 11:43:22 -04:00
Mike Blumenkrantz 8c3f0ff640 elput: further simplify device internals
'window' and pointer max w/h attributes are set for a manager object,
so let the attributes stay there. this also resolves issues where devices
created at a later point would fail to be initialized with these attributes
2016-05-25 12:57:27 -04:00
Mike Blumenkrantz 7fdcf841f5 elput: change some functions and internal flags to enable async input setup
this sets attributes on the Elput_Manager struct so that devices created at
a later point can then have relevant attributes applied to them
2016-05-25 12:57:27 -04:00
Mike Blumenkrantz 5f088b026d elput: define and implement an async device opening interface for libinput
this adds an overly-complex method of removing blocking dbus calls from libinput's
synchronous device initialization architecture. libinput was clearly never meant
to be used in this way, but we're doing it anyway because we're efl.

 #SamsungFeatures
2016-05-25 12:57:27 -04:00
Mike Blumenkrantz 33a5d44dcf elput: remove 'sync' param from device management
unnecessarily complicates code
2016-05-25 12:57:26 -04:00
Chris Michael eec50ed7bd elput: Add API function to set left-handed device
This commit adds an API function which Enlightenment can call in order
to set an input device to be "left-handed". Mainly used for a mouse
pointer, but not specific to pointers.

@feature

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-24 09:19:04 -04:00
Chris Michael d734cd4cad elput: Add code to handle keybindings for vt switching
This patch makes elput handle receiving the key combinations for vt
switching and perform the actual switch itself. This is done so that
ecore_drm2, ecore_fb, etc, etc do not each need their own code to
handle vt switching.

@feature

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-09 12:00:35 -04:00
Chris Michael f9149c1699 elput: Add API function to switch to a given vt
This patch adds a new API function to Elput that can be used to switch
to a given VT. This allows drm2 or enlightenment to switch to a given
virtual terminal in response to keybindings.

@feature

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-09 11:35:48 -04:00
Chris Michael 54cce990d3 elput: Add API function to set pointer position on a given seat
Small patch to add an API function that can be used to set the current
pointer position on a given seat name. This function (typically) will
be used inside an Ecore_Evas to "pointer warp".

@feature

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-04 10:43:36 -04:00
Chris Michael 43360ca98a elput: Add API function to set output size on an input device
This function is used to adjust device calibration based on size of
output

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-13 14:16:17 -04:00
Chris Michael 6a7589bf78 elput: Handle various events from libinput and pass to ecore_event
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-13 14:16:17 -04:00
Chris Michael b01666075d elput: Add event structures for keymap and modifier sending events
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-13 14:16:17 -04:00
Chris Michael 3070c4cf08 elput: Add support for creating and removing devices
This patch adds start of code to create or remove input devices such
as keyboards, pointers, or touch devices.

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-13 14:16:17 -04:00
Chris Michael f832d2019c elput: Add API function to initialize and shutdown input devices
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-13 14:16:17 -04:00
Chris Michael b5422700c0 elput: Remove vt activate/restore from input manager interface
As this library is just going to deal with libinput, we don't need to
have interface functions to activate or restore a virtual terminal.

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-13 14:16:17 -04:00
Chris Michael 1ce6cd4382 elput: Add API functions to open and close an input device
This adds new API functions which can be called to open or close an input
device and take control (or release control) of said device

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-13 14:16:17 -04:00
Chris Michael ed3a1f3958 elput: Add input manager interface and APIs to connect & disconnect
This commit adds the start of the Elput Manager & Interface code. This
will be used as an inteface to various backend methods of session &
device control (ie: systemd, direct interface, etc). This will provide
various abstractions for working with libinput when opening/closing
input devices.

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-13 14:16:17 -04:00
Chris Michael f8964fcf2e elput: Initial checkin of elput library
The elput library is an efl abstraction for the libinput library which
can be used by various other subsystems (ecore_fb, ecore_drm, etc) to
handle interfacing with libinput without having to duplicate the code
in each subsystem.

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-13 14:16:17 -04:00