summaryrefslogtreecommitdiff
path: root/libevdev/libevdev.c
Commit message (Collapse)AuthorAgeFilesLines
* Add two helper functions to check event type/codePeter Hutterer2013-07-041-0/+15
| | | | | | | These aren't really that useful since they're just one or two lines in code, but it saves callers from accidentally misplacing braces, etc. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Sync the initial slot state from the devicePeter Hutterer2013-07-031-9/+19
| | | | | | libevdev_get_slot_value() needs to return the correct value from the outset. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* If we don't have anything to sync, don't add a EV_SYN eventPeter Hutterer2013-07-021-3/+6
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Switch to a state machine to handle incomplete syncsPeter Hutterer2013-07-021-10/+21
| | | | | | | | A caller may start syncing but switch back to normal half-way through the sync. In that case, we need to drop all sync events and continue with regular events only. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add a flag for blocking readPeter Hutterer2013-07-021-8/+11
| | | | | | | | Not all clients need nonblocking read, so add a flag to read in blocking mode. In that mode, events are only read from the fd when the queue is empty. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* If the caller doesn't sync when it should, process all events regardlessPeter Hutterer2013-07-021-4/+6
| | | | | | | libevdev needs to maintain the correct state of the device, even if the caller decides to drop all delta events after a SYN_DROPPED. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Don't sync mt axes that don't existPeter Hutterer2013-07-011-0/+6
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Don't deliver events that are filteredPeter Hutterer2013-07-011-11/+15
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Disallow disabling of EV_SYNPeter Hutterer2013-07-011-1/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Require data be NULL when enabling a non-EV_ABS axisPeter Hutterer2013-07-011-0/+3
| | | | | | In the future this may change, but for now enforce that callers use NULL. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Drop code for kernel-enabling bitsPeter Hutterer2013-06-301-60/+1
| | | | | | | | We can't enable axes on devices at runtime in the kernel, not even for uinput devices. So this API can't work anyway, remove it before someone thinks it does work. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Change signature for kernel_enable_event_code to match enable_event_codePeter Hutterer2013-06-291-3/+13
| | | | | | They do essentially the same thing, so the function signature should be null. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Return -1 for failing to enable/disable bitsPeter Hutterer2013-06-291-6/+6
| | | | | | as the documentation says Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add a FIXME to log a warning messagePeter Hutterer2013-06-281-0/+2
| | | | | | | When a sync is complete and the first event is a SYN_DROPPED again, we have a problem. Log that so that the process can print a warning. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add a flag for forcing a SYN_DROPPED eventPeter Hutterer2013-06-281-1/+8
| | | | | | | | uinput doesn't route a SYN_DROPPED, so we neeed to handle fds in a rather complicated manner. For tests, avoid this and instead force the library to sync if a specific flag is given. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Require a flag for normal mode tooPeter Hutterer2013-06-271-0/+3
| | | | | | Makes the whole thing more explicit. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Init dev->grabbed as LIBEVDEV_UNGRABPeter Hutterer2013-06-271-0/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Replace a few malloc + strcpy with strdupPeter Hutterer2013-06-271-6/+3
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Don't return a NULL name, ever.Peter Hutterer2013-06-271-1/+1
| | | | | | Even if the device is not yet initialized (which would be a caller bug, but still) Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Slots are now definitely zero-indexed, see recent kernel patchPeter Hutterer2013-06-271-1/+1
| | | | | | doc: specify that ABS_MT_SLOT must have a minimum of 0 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add an API to get the repeat valuesPeter Hutterer2013-06-261-0/+14
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add the remaining ev bitsPeter Hutterer2013-06-261-0/+25
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add function to get max value for a given ev typePeter Hutterer2013-06-261-0/+9
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix type_to_mask to return -1Peter Hutterer2013-06-261-3/+3
| | | | | | EV_SYN doesn't have a max, so 0 is not enough. returning 0 on failure is a bad idea, as mask is unset.
* Add functions to enable axis on the device in the kernelPeter Hutterer2013-06-041-8/+50
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Move utility functions to a separate headerPeter Hutterer2013-06-041-85/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Protect against NULL device on log handlerPeter Hutterer2013-06-041-0/+3
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Expose API for retrieving event namesPeter Hutterer2013-06-041-0/+31
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Allow libevdev_free on a NULL pointer.Peter Hutterer2013-06-041-0/+3
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Skip over ABS_MT_SLOT when syncing MT axis valuesPeter Hutterer2013-06-031-0/+3
| | | | | | The slot event is already on the queue. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix invalid abs_info readPeter Hutterer2013-06-031-1/+2
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fill in the last event time for synced eventsPeter Hutterer2013-06-031-8/+9
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Let the name be dynamically allocatedPeter Hutterer2013-06-031-1/+10
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Expose phys/uniq to the callerPeter Hutterer2013-06-031-0/+44
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Export version fields as wellPeter Hutterer2013-06-031-0/+14
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Rename pid/vid to product-id and vendor-idPeter Hutterer2013-06-031-2/+2
| | | | | | Slightly more expressive and it's not that painful to type. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add a FIXME for lack of O_NONBLOCKPeter Hutterer2013-06-031-0/+4
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add a fixme: if we're dropping sync event, libedev loses state info tooPeter Hutterer2013-06-031-1/+5
| | | | | | | | If a client doesn't care about syncing that's one thing, but libevdev functions still need to return the right _current_ (i.e. synced) value. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Don't allow re-setting the fdPeter Hutterer2013-06-031-11/+2
| | | | | | | If a caller needs to re-init a device, libevdev_new_from_fd() is a better choice. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Change libevdev_grab to take an enumPeter Hutterer2013-05-311-2/+8
| | | | | | | | | | Enum values fo 3 and 4 to avoid callers using true/false values for grabbing and ungrabbing. If the evdev mute ioctl is merged, we can extend this without having to worry about breaking callers. [1] http://lwn.net/Articles/476830/ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Split libevdev_new() into _new and _new_from_fd()Peter Hutterer2013-05-311-5/+20
| | | | | | | | libevdev_new() can only fail on allocation failures, but with an fd the failure options are more. Split into a new function that can return an error code. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Free the event queue on cleanup.Peter Hutterer2013-05-311-0/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Check for allocation failure in libevdev_new()Peter Hutterer2013-05-311-0/+2
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Rename ER_SYNC flag to LIBEVDEV_READ_SYNCPeter Hutterer2013-05-301-2/+2
| | | | | | ER dated to an earlier version of this library called libevdev_read. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add a function to retrieve the current slotPeter Hutterer2013-05-301-0/+6
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Update the MT state properlyPeter Hutterer2013-05-301-1/+21
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* If a client doesn't sync when it should, drop all sync eventsPeter Hutterer2013-05-301-4/+2
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* After a SYN_DROPPED, drop all events in the queuePeter Hutterer2013-05-301-1/+18
| | | | | | | | Ideally, we could sync by pre-pending all the sync events and then pretend nothing happened but our queue is too small and likely too full for any extra events. So drop all events, then add the sync events to the queue. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Abstract the event queue awayPeter Hutterer2013-05-301-28/+18
| | | | | | | Provide a couple of handler functions to avoid erroneous queue updates. This will make it easier if we need to swap queue implementation later. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Drop the callback interface, replace with libevdev_next_eventPeter Hutterer2013-05-301-79/+69
| | | | | | | | | | | Callbacks looked good on paper, but synaptics ran into an issue already that it just couldn't easily pass around the state needed in the actual event processing function. Replace with a new interface that only returns the next event (still reading more off the fd while doing so). Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>