Blame doc/html/group__init.html

Packit 57e92c
Packit 57e92c
Packit 57e92c
<html xmlns="http://www.w3.org/1999/xhtml">
Packit 57e92c
    <head>
Packit 57e92c
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
Packit 57e92c
        
Packit 57e92c
        <meta name="viewport" content="width=device-width, initial-scale=1">
Packit 57e92c
        <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
Packit 57e92c
        <meta name="generator" content="Doxygen 1.8.15"/>
Packit 57e92c
        <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
Packit 57e92c
        <title>libevdev: Initialization and setup</title>
Packit 57e92c
        
Packit 57e92c
        <script type="text/javascript" src="dynsections.js"></script>
Packit 57e92c
        <link href="search/search.css" rel="stylesheet" type="text/css"/>
Packit 57e92c
<script type="text/javascript" src="search/searchdata.js"></script>
Packit 57e92c
<script type="text/javascript" src="search/search.js"></script>
Packit 57e92c
        <link href="doxygen.css" rel="stylesheet" type="text/css" />
Packit 57e92c
        <link href="bootstrap.css" rel="stylesheet" type="text/css"/>
Packit 57e92c
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
Packit 57e92c
<link href="libevdevdoxygen.css" rel="stylesheet" type="text/css"/>
Packit 57e92c
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
Packit 57e92c
        <script type="text/javascript" src="doxy-boot.js"></script>
Packit 57e92c
    </head>
Packit 57e92c
    <body>
Packit 57e92c
        <nav class="navbar navbar-default" role="navigation">
Packit 57e92c
            
Packit 57e92c
                
Packit 57e92c
                    libevdev 1.8.0
Packit 57e92c
                
Packit 57e92c
            
Packit 57e92c
        </nav>
Packit 57e92c
        
Packit 57e92c
            
Packit 57e92c
                
Packit 57e92c
                    
Packit 57e92c
                        
Packit 57e92c
                            
Packit 57e92c
Packit 57e92c
Packit 57e92c
<script type="text/javascript">
Packit 57e92c
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
Packit 57e92c
var searchBox = new SearchBox("searchBox", "search",false,'Search');
Packit 57e92c
/* @license-end */
Packit 57e92c
</script>
Packit 57e92c
<script type="text/javascript" src="menudata.js"></script>
Packit 57e92c
<script type="text/javascript" src="menu.js"></script>
Packit 57e92c
<script type="text/javascript">
Packit 57e92c
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
Packit 57e92c
$(function() {
Packit 57e92c
  initMenu('',true,false,'search.php','Search');
Packit 57e92c
  $(document).ready(function() { init_search(); });
Packit 57e92c
});
Packit 57e92c
/* @license-end */</script>
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
     onmouseover="return searchBox.OnSearchSelectShow()"
Packit 57e92c
     onmouseout="return searchBox.OnSearchSelectHide()"
Packit 57e92c
     onkeydown="return searchBox.OnSearchSelectKey(event)">
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
        name="MSearchResults" id="MSearchResults">
Packit 57e92c
</iframe>
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
  
Packit 57e92c
Enumerations |
Packit 57e92c
Functions  
Packit 57e92c
  
Packit 57e92c
Initialization and setup
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c

Initialization, initial setup and file descriptor handling.

Packit 57e92c
More...

Packit 57e92c
Packit 57e92c

Packit 57e92c
Enumerations
Packit 57e92c
enum  libevdev_grab_mode { LIBEVDEV_GRAB, 
Packit 57e92c
LIBEVDEV_UNGRAB
Packit 57e92c
 }
Packit 57e92c
 
Packit 57e92c
Packit 57e92c

Packit 57e92c
Functions
Packit 57e92c
struct libevdev * libevdev_new (void)
Packit 57e92c
 Initialize a new libevdev device.  More...
Packit 57e92c
 
Packit 57e92c
int libevdev_new_from_fd (int fd, struct libevdev **dev)
Packit 57e92c
 Initialize a new libevdev device from the given fd.  More...
Packit 57e92c
 
Packit 57e92c
void libevdev_free (struct libevdev *dev)
Packit 57e92c
 Clean up and free the libevdev struct.  More...
Packit 57e92c
 
Packit 57e92c
int libevdev_grab (struct libevdev *dev, enum libevdev_grab_mode grab)
Packit 57e92c
 Grab or ungrab the device through a kernel EVIOCGRAB.  More...
Packit 57e92c
 
Packit 57e92c
int libevdev_set_fd (struct libevdev *dev, int fd)
Packit 57e92c
 Set the fd for this struct and initialize internal data.  More...
Packit 57e92c
 
Packit 57e92c
int libevdev_change_fd (struct libevdev *dev, int fd)
Packit 57e92c
 Change the fd for this device, without re-reading the actual device.  More...
Packit 57e92c
 
Packit 57e92c
int libevdev_get_fd (const struct libevdev *dev)
Packit 57e92c
 
Packit 57e92c
Packit 57e92c

Detailed Description

Packit 57e92c

Initialization, initial setup and file descriptor handling.

Packit 57e92c

These functions are the main entry points for users of libevdev, usually a caller will use this series of calls:

Packit 57e92c
struct libevdev *dev;
int err;
dev = libevdev_new();
if (!dev)
return ENOMEM;
err = libevdev_set_fd(dev, fd);
if (err < 0) {
printf("Failed (errno %d): %s\n", -err, strerror(-err));

libevdev_set_fd() is the central call and initializes the internal structs for the device at the given fd. libevdev functions will fail if called before libevdev_set_fd() unless documented otherwise.

Packit 57e92c

Enumeration Type Documentation

Packit 57e92c
Packit 57e92c

◆ libevdev_grab_mode

Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
      
Packit 57e92c
        
Packit 57e92c
          enum libevdev_grab_mode
Packit 57e92c
        
Packit 57e92c
      
Packit 57e92c
Packit 57e92c
Packit 57e92c
EnumeratorLIBEVDEV_GRAB 

Grab the device if not currently grabbed.

Packit 57e92c
Packit 57e92c
LIBEVDEV_UNGRAB 

Ungrab the device if currently grabbed.

Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c

Function Documentation

Packit 57e92c
Packit 57e92c

◆ libevdev_change_fd()

Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
      
Packit 57e92c
        
Packit 57e92c
          int libevdev_change_fd 
Packit 57e92c
          (
Packit 57e92c
          struct libevdev * 
Packit 57e92c
          dev, 
Packit 57e92c
        
Packit 57e92c
        
Packit 57e92c
          
Packit 57e92c
          
Packit 57e92c
          int 
Packit 57e92c
          fd 
Packit 57e92c
        
Packit 57e92c
        
Packit 57e92c
          
Packit 57e92c
          )
Packit 57e92c
          
Packit 57e92c
        
Packit 57e92c
      
Packit 57e92c
Packit 57e92c
Packit 57e92c

Change the fd for this device, without re-reading the actual device.

Packit 57e92c

If the fd changes after initializing the device, for example after a VT-switch in the X.org X server, this function updates the internal fd to the newly opened. No check is made that new fd points to the same device. If the device has changed, libevdev's behavior is undefined.

Packit 57e92c

libevdev does not sync itself after changing the fd and keeps the current device state. Use libevdev_next_event with the LIBEVDEV_READ_FLAG_FORCE_SYNC flag to force a re-sync.

Packit 57e92c

The example code below illustrates how to force a re-sync of the library-internal state. Note that this code doesn't handle the events in the caller, it merely forces an update of the internal library state.

The fd may be open in O_RDONLY or O_RDWR.

Packit 57e92c

After changing the fd, the device is assumed ungrabbed and a caller must call libevdev_grab() again.

Packit 57e92c

It is an error to call this function before calling libevdev_set_fd().

Packit 57e92c
Parameters
Packit 57e92c
  
Packit 57e92c
    devThe evdev device, already initialized with libevdev_set_fd() 
Packit 57e92c
    fdThe new fd
Packit 57e92c
  
Packit 57e92c
  
Packit 57e92c
Packit 57e92c
Returns
0 on success, or -1 on failure.
Packit 57e92c
See also
libevdev_set_fd
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c

◆ libevdev_free()

Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
      
Packit 57e92c
        
Packit 57e92c
          void libevdev_free 
Packit 57e92c
          (
Packit 57e92c
          struct libevdev * 
Packit 57e92c
          dev)
Packit 57e92c
          
Packit 57e92c
        
Packit 57e92c
      
Packit 57e92c
Packit 57e92c
Packit 57e92c

Clean up and free the libevdev struct.

Packit 57e92c

After completion, the struct libevdev is invalid and must not be used.

Packit 57e92c

Note that calling libevdev_free() does not close the file descriptor currently associated with this instance.

Packit 57e92c
Parameters
Packit 57e92c
  
Packit 57e92c
    devThe evdev device
Packit 57e92c
  
Packit 57e92c
  
Packit 57e92c
Packit 57e92c
Note
This function may be called before libevdev_set_fd().
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c

◆ libevdev_get_fd()

Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
      
Packit 57e92c
        
Packit 57e92c
          int libevdev_get_fd 
Packit 57e92c
          (
Packit 57e92c
          const struct libevdev * 
Packit 57e92c
          dev)
Packit 57e92c
          
Packit 57e92c
        
Packit 57e92c
      
Packit 57e92c
Packit 57e92c
Parameters
Packit 57e92c
  
Packit 57e92c
    devThe evdev device
Packit 57e92c
  
Packit 57e92c
  
Packit 57e92c
Packit 57e92c
Returns
The previously set fd, or -1 if none had been set previously.
Packit 57e92c
Note
This function may be called before libevdev_set_fd().
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c

◆ libevdev_grab()

Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
      
Packit 57e92c
        
Packit 57e92c
          int libevdev_grab 
Packit 57e92c
          (
Packit 57e92c
          struct libevdev * 
Packit 57e92c
          dev, 
Packit 57e92c
        
Packit 57e92c
        
Packit 57e92c
          
Packit 57e92c
          
Packit 57e92c
          enum libevdev_grab_mode 
Packit 57e92c
          grab 
Packit 57e92c
        
Packit 57e92c
        
Packit 57e92c
          
Packit 57e92c
          )
Packit 57e92c
          
Packit 57e92c
        
Packit 57e92c
      
Packit 57e92c
Packit 57e92c
Packit 57e92c

Grab or ungrab the device through a kernel EVIOCGRAB.

Packit 57e92c

This prevents other clients (including kernel-internal ones such as rfkill) from receiving events from this device.

Packit 57e92c

This is generally a bad idea. Don't do this.

Packit 57e92c

Grabbing an already grabbed device, or ungrabbing an ungrabbed device is a noop and always succeeds.

Packit 57e92c

A grab is an operation tied to a file descriptor, not a device. If a client changes the file descriptor with libevdev_change_fd(), it must also re-issue a grab with libevdev_grab().

Packit 57e92c
Parameters
Packit 57e92c
  
Packit 57e92c
    devThe evdev device, already initialized with libevdev_set_fd() 
Packit 57e92c
    grabIf true, grab the device. Otherwise ungrab the device.
Packit 57e92c
  
Packit 57e92c
  
Packit 57e92c
Packit 57e92c
Returns
0 if the device was successfully grabbed or ungrabbed, or a negative errno in case of failure.
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c

◆ libevdev_new()

Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
      
Packit 57e92c
        
Packit 57e92c
          struct libevdev* libevdev_new 
Packit 57e92c
          (
Packit 57e92c
          void 
Packit 57e92c
          )
Packit 57e92c
          
Packit 57e92c
        
Packit 57e92c
      
Packit 57e92c
Packit 57e92c
Packit 57e92c

Initialize a new libevdev device.

Packit 57e92c

This function only allocates the required memory and initializes the struct to sane default values. To actually hook up the device to a kernel device, use libevdev_set_fd().

Packit 57e92c

Memory allocated through libevdev_new() must be released by the caller with libevdev_free().

Packit 57e92c
See also
libevdev_set_fd
Packit 57e92c
Packit 57e92c
libevdev_free 
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c

◆ libevdev_new_from_fd()

Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
      
Packit 57e92c
        
Packit 57e92c
          int libevdev_new_from_fd 
Packit 57e92c
          (
Packit 57e92c
          int 
Packit 57e92c
          fd, 
Packit 57e92c
        
Packit 57e92c
        
Packit 57e92c
          
Packit 57e92c
          
Packit 57e92c
          struct libevdev ** 
Packit 57e92c
          dev 
Packit 57e92c
        
Packit 57e92c
        
Packit 57e92c
          
Packit 57e92c
          )
Packit 57e92c
          
Packit 57e92c
        
Packit 57e92c
      
Packit 57e92c
Packit 57e92c
Packit 57e92c

Initialize a new libevdev device from the given fd.

Packit 57e92c

This is a shortcut for

Packit 57e92c
int err;
struct libevdev *dev = libevdev_new();
err = libevdev_set_fd(dev, fd);
Parameters
Packit 57e92c
  
Packit 57e92c
    fdA file descriptor to the device in O_RDWR or O_RDONLY mode. 
Packit 57e92c
    [out]devThe newly initialized evdev device.
Packit 57e92c
  
Packit 57e92c
  
Packit 57e92c
Packit 57e92c
Returns
On success, 0 is returned and dev is set to the newly allocated struct. On failure, a negative errno is returned and the value of dev is undefined.
Packit 57e92c
See also
libevdev_free
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c

◆ libevdev_set_fd()

Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
      
Packit 57e92c
        
Packit 57e92c
          int libevdev_set_fd 
Packit 57e92c
          (
Packit 57e92c
          struct libevdev * 
Packit 57e92c
          dev, 
Packit 57e92c
        
Packit 57e92c
        
Packit 57e92c
          
Packit 57e92c
          
Packit 57e92c
          int 
Packit 57e92c
          fd 
Packit 57e92c
        
Packit 57e92c
        
Packit 57e92c
          
Packit 57e92c
          )
Packit 57e92c
          
Packit 57e92c
        
Packit 57e92c
      
Packit 57e92c
Packit 57e92c
Packit 57e92c

Set the fd for this struct and initialize internal data.

Packit 57e92c

The fd must be in O_RDONLY or O_RDWR mode.

Packit 57e92c

This function may only be called once per device. If the device changed and you need to re-read a device, use libevdev_free() and libevdev_new(). If you need to change the fd after closing and re-opening the same device, use libevdev_change_fd().

Packit 57e92c

A caller should ensure that any events currently pending on the fd are drained before the file descriptor is passed to libevdev for initialization. Due to how the kernel's ioctl handling works, the initial device state will reflect the current device state after applying all events currently pending on the fd. Thus, if the fd is not drained, the state visible to the caller will be inconsistent with the events immediately available on the device. This does not affect state-less events like EV_REL.

Packit 57e92c

Unless otherwise specified, libevdev function behavior is undefined until a successful call to libevdev_set_fd().

Packit 57e92c
Parameters
Packit 57e92c
  
Packit 57e92c
    devThe evdev device 
Packit 57e92c
    fdThe file descriptor for the device
Packit 57e92c
  
Packit 57e92c
  
Packit 57e92c
Packit 57e92c
Returns
0 on success, or a negative errno on failure
Packit 57e92c
See also
libevdev_change_fd
Packit 57e92c
Packit 57e92c
libevdev_new 
Packit 57e92c
Packit 57e92c
libevdev_free 
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c
Packit 57e92c

<address class="footer"><small>
Packit 57e92c
Generated by  
Packit 57e92c
doxygen
Packit 57e92c
 1.8.15
Packit 57e92c
</small></address>
Packit 57e92c
</body>
Packit 57e92c
</html>