(self,
                 events=None,
                 name='py-evdev-uinput',
                 vendor=0x1, product=0x1, version=0x1, bustype=0x3,
                 devnode='/dev/uinput', phys='py-evdev-uinput', input_props=None)
Arguments
        ---------
        events : dict
          Dictionary of event types mapping to lists of event codes. The
          event types and codes that the uinput device will be able to
          inject - defaults to all key codes.

        name
          The name of the input device.

        vendor
          Vendor identifier.

        product
          Product identifier.

        version
          Version identifier.

        bustype
          Bustype identifier.

        phys
          Physical path.

        input_props
          Input properties and quirks.

        Note
        ----
        If you do not specify any events, the uinput device will be able
        to inject only ``KEY_*`` and ``BTN_*`` event codes.
Arguments
        ---------
        events : dict
          Dictionary of event types mapping to lists of event codes. The
          event types and codes that the uinput device will be able to
          inject - defaults to all key codes.
Arguments --------- events : dict Dictionary of event types mapping to lists of event codes . The event types and codes that the uinput device will be able to inject - defaults to all key codes .
def __init__(self,
                 events=None,
                 name='py-evdev-uinput',
                 vendor=0x1, product=0x1, version=0x1, bustype=0x3,
                 devnode='/dev/uinput', phys='py-evdev-uinput', input_props=None):
        '''
        Arguments
        ---------
        events : dict
          Dictionary of event types mapping to lists of event codes. The
          event types and codes that the uinput device will be able to
          inject - defaults to all key codes.

        name
          The name of the input device.

        vendor
          Vendor identifier.

        product
          Product identifier.

        version
          Version identifier.

        bustype
          Bustype identifier.

        phys
          Physical path.

        input_props
          Input properties and quirks.

        Note
        ----
        If you do not specify any events, the uinput device will be able
        to inject only ``KEY_*`` and ``BTN_*`` event codes.
        '''

        self.name = name         #: Uinput device name.
        self.vendor = vendor     #: Device vendor identifier.
        self.product = product   #: Device product identifier.
        self.version = version   #: Device version identifier.
        self.bustype = bustype   #: Device bustype - e.g. ``BUS_USB``.
        self.phys    = phys      #: Uinput device physical path.
        self.devnode = devnode   #: Uinput device node - e.g. ``/dev/uinput/``.

        if not events:
            events = {ecodes.EV_KEY: ecodes.keys.keys()}

        self._verify()

        #: Write-only, non-blocking file descriptor to the uinput device node.
        self.fd = _uinput.open(devnode)

        # Prepare the list of events for passing to _uinput.enable and _uinput.setup.
        absinfo, prepared_events = self._prepare_events(events)

        # Set phys name
        _uinput.set_phys(self.fd, phys)

        # Set properties
        input_props = input_props or []
        for prop in input_props:
            _uinput.set_prop(self.fd, prop)

        for etype, code in prepared_events:
            _uinput.enable(self.fd, etype, code)

        _uinput.setup(self.fd, name, vendor, product, version, bustype, absinfo)

        # Create the uinput device.
        _uinput.create(self.fd)

        self.dll = ctypes.CDLL(_uinput.__file__)
        self.dll._uinput_begin_upload.restype = ctypes.c_int
        self.dll._uinput_end_upload.restype = ctypes.c_int

        #: An :class:`InputDevice <evdev.device.InputDevice>` instance
        #: for the fake input device. ``None`` if the device cannot be
        #: opened for reading and writing.
        self.device = self._find_device()
def __init__ ( self , events = None , name = 'py-evdev-uinput' , vendor = 0x1 , product = 0x1 , version = 0x1 , bustype = 0x3 , devnode = '/dev/uinput' , phys = 'py-evdev-uinput' , input_props = None ) : self . name = name #: Uinput device name. self . vendor = vendor #: Device vendor identifier. self . product = product #: Device product identifier. self . version = version #: Device version identifier. self . bustype = bustype #: Device bustype - e.g. ``BUS_USB``. self . phys = phys #: Uinput device physical path. self . devnode = devnode #: Uinput device node - e.g. ``/dev/uinput/``. if not events : events = { ecodes . EV_KEY : ecodes . keys . keys ( ) } self . _verify ( ) #: Write-only, non-blocking file descriptor to the uinput device node. self . fd = _uinput . open ( devnode ) # Prepare the list of events for passing to _uinput.enable and _uinput.setup. absinfo , prepared_events = self . _prepare_events ( events ) # Set phys name _uinput . set_phys ( self . fd , phys ) # Set properties input_props = input_props or [ ] for prop in input_props : _uinput . set_prop ( self . fd , prop ) for etype , code in prepared_events : _uinput . enable ( self . fd , etype , code ) _uinput . setup ( self . fd , name , vendor , product , version , bustype , absinfo ) # Create the uinput device. _uinput . create ( self . fd ) self . dll = ctypes . CDLL ( _uinput . __file__ ) self . dll . _uinput_begin_upload . restype = ctypes . c_int self . dll . _uinput_end_upload . restype = ctypes . c_int #: An :class:`InputDevice <evdev.device.InputDevice>` instance #: for the fake input device. ``None`` if the device cannot be #: opened for reading and writing. self . device = self . _find_device ( )