def close(self): EvdevController.close(self) for device in (self._gyro, self._touchpad): try: self.poller.unregister(device.fd) device.ungrab() except: pass
def __init__(self, daemon, controllerdevice, gyro, touchpad): config = { 'axes' : DS4EvdevController.AXIS_MAP, 'buttons' : DS4EvdevController.BUTTON_MAP, 'dpads' : {} } if controllerdevice.info.version & 0x8000 == 0: # Older kernel uses different mappings # see kernel source, drivers/hid/hid-sony.c#L2748 config['axes'] = DS4EvdevController.AXIS_MAP_OLD config['buttons'] = DS4EvdevController.BUTTON_MAP_OLD self._gyro = gyro self._touchpad = touchpad for device in (self._gyro, self._touchpad): if device: device.grab() EvdevController.__init__(self, daemon, controllerdevice, None, config) if self.poller: self.poller.register(touchpad.fd, self.poller.POLLIN, self._touchpad_input) self.poller.register(gyro.fd, self.poller.POLLIN, self._gyro_input)