def from_device(cls, *devices, **kwargs): ''' Create an UInput device with the capabilities of one or more input devices. Arguments --------- devices : InputDevice|str Varargs of InputDevice instances or paths to input devices. **kwargs Keyword arguments to UInput constructor (i.e. name, vendor etc.). ''' device_instances = [] for dev in devices: if not isinstance(dev, device.InputDevice): dev = device.InputDevice(str(dev)) device_instances.append(dev) all_capabilities = {} for dev in device_instances: all_capabilities.update(dev.capabilities()) del all_capabilities[ecodes.EV_SYN] return cls(events=all_capabilities, **kwargs)
def _find_device(self): #:bug: the device node might not be immediately available time.sleep(0.1) for fn in util.list_devices('/dev/input/'): d = device.InputDevice(fn) if d.name == self.name: return d
def update_from_devices(self, *devices): device_instances = [] for dev in devices: if not isinstance(dev, device.InputDevice): dev = device.InputDevice(str(dev)) device_instances.append(dev) for dev in device_instances: self.update_capabilities(dev.capabilities()) self.refresh()
def from_device(cls, *devices, **kwargs): ''' Create an UInput device with the capabilities of one or more input devices. Arguments --------- devices : InputDevice|str Varargs of InputDevice instances or paths to input devices. filtered_types : Tuple[event type codes] Event types to exclude from the capabilities of the uinput device. **kwargs Keyword arguments to UInput constructor (i.e. name, vendor etc.). ''' # TODO: Move back to the argument list once Python 2 support is dropped. filtered_types = kwargs.pop('filtered_types', (ecodes.EV_SYN, ecodes.EV_FF)) device_instances = [] for dev in devices: if not isinstance(dev, device.InputDevice): dev = device.InputDevice(str(dev)) device_instances.append(dev) all_capabilities = defaultdict(set) # Merge the capabilities of all devices into one dictionary. for dev in device_instances: for ev_type, ev_codes in dev.capabilities().items(): all_capabilities[ev_type].update(ev_codes) for evtype in filtered_types: if evtype in all_capabilities: del all_capabilities[evtype] return cls(events=all_capabilities, **kwargs)