def init_devices(self): input_bus = '/proc/bus/input/devices' if not os.path.exists(input_bus): message = 'Input bus (%s) could not be accessed.' % input_bus raise OSError(message) with open(input_bus) as f: device = None for line in f.readlines(): if line.startswith('I:'): device = InputDevice() if line.startswith('N:'): print line[9:-2] name = line[9:-2] for _dev in self.devices: if _dev.name == name: print 'found duplicate entry' name += ' #2' device.name = name if line.startswith('H:'): handlers = line[12:].split() for handler in handlers: device.handlers.append(handler) if re.match('\n', line): if device: self.devices.append(device) for _dev in self.devices: if _dev.name == 'lircd': self.devices.remove(_dev)
def add_ctrl(self, device=None): idx = len(self.controls) print 'Adding controler with index %s' % idx control = CtrlSelectionWrapper() self.md5.update(str(time.time())) ctrl_id = self.md5.hexdigest() control.id = ctrl_id control.idx = idx if not device: device = InputDevice() device.name = 'None (Disabled)' control.device = device label = create_label() label.setLabel('Controller ' + str(idx)) control.label = label input_select_btn = create_button() input_select_btn.setLabel( control.device.name, ) control.input_select_btn = input_select_btn trigger_adv_mapping_btn = create_button() trigger_adv_mapping_btn.setLabel('Add Mapping') control.trigger_adv_mapping_btn = trigger_adv_mapping_btn remove_btn = create_button() remove_btn.setLabel('Remove') control.remove_btn = remove_btn if idx == 0: row = 0 adv_row = 1 else: row = idx * 2 adv_row = row + 1 control.adv_row = adv_row self.placeControl(control.label, row=row, column=0, rowspan=1, columnspan=1) self.placeControl(control.input_select_btn, row=row, column=1, rowspan=1, columnspan=3) self.placeControl(control.trigger_adv_mapping_btn, row=row, column=4, rowspan=1, columnspan=1) self.placeControl(control.remove_btn, row=row, column=5, rowspan=1, columnspan=1) self.connect_controls(control) if control.device.is_kbd() or control.device.is_mouse() or control.device.is_none_device(): trigger_adv_mapping_btn.setEnabled(False) # Still visible for now, but disabled # trigger_adv_mapping_btn.setVisible(False) control.set_internal_navigation() self.controls[control.id] = control # TODO: Should be a dedicated method (set_navigation) self.add_ctrl_btn.controlUp(control.input_select_btn) if control.adv_on_flag: control.adv_select_mapping.controlDown(self.add_ctrl_btn) else: control.input_select_btn.controlDown(self.add_ctrl_btn) previous_control = None for _ctrl_id, _control in self.controls.iteritems(): print 'Looping controls, current index: %s' % _control.idx if _control.idx == control.idx-1: previous_control = _control if previous_control: if previous_control.adv_on_flag: control.input_select_btn.controlUp(previous_control.adv_select_mapping) previous_control.adv_select_mapping.controlDown(control.input_select_btn) else: control.input_select_btn.controlUp(previous_control.input_select_btn) previous_control.input_select_btn.controlDown(control.input_select_btn) if control.device.mapping: self.trigger_advanced(control)
def add_ctrl(self, device=None): idx = len(self.controls) print 'Adding controler with index %s' % idx control = CtrlSelectionWrapper() self.md5.update(str(time.time())) ctrl_id = self.md5.hexdigest() control.id = ctrl_id control.idx = idx if not device: device = InputDevice() device.name = 'None (Disabled)' control.device = device label = create_label() label.setLabel('Controller ' + str(idx)) control.label = label input_select_btn = create_button() input_select_btn.setLabel(control.device.name, ) control.input_select_btn = input_select_btn trigger_adv_mapping_btn = create_button() trigger_adv_mapping_btn.setLabel('Add Mapping') control.trigger_adv_mapping_btn = trigger_adv_mapping_btn remove_btn = create_button() remove_btn.setLabel('Remove') control.remove_btn = remove_btn if idx == 0: row = 0 adv_row = 1 else: row = idx * 2 adv_row = row + 1 control.adv_row = adv_row self.placeControl(control.label, row=row, column=0, rowspan=1, columnspan=1) self.placeControl(control.input_select_btn, row=row, column=1, rowspan=1, columnspan=3) self.placeControl(control.trigger_adv_mapping_btn, row=row, column=4, rowspan=1, columnspan=1) self.placeControl(control.remove_btn, row=row, column=5, rowspan=1, columnspan=1) self.connect_controls(control) if control.device.is_kbd() or control.device.is_mouse( ) or control.device.is_none_device(): trigger_adv_mapping_btn.setEnabled(False) # Still visible for now, but disabled # trigger_adv_mapping_btn.setVisible(False) control.set_internal_navigation() self.controls[control.id] = control # TODO: Should be a dedicated method (set_navigation) self.add_ctrl_btn.controlUp(control.input_select_btn) if control.adv_on_flag: control.adv_select_mapping.controlDown(self.add_ctrl_btn) else: control.input_select_btn.controlDown(self.add_ctrl_btn) previous_control = None for _ctrl_id, _control in self.controls.iteritems(): print 'Looping controls, current index: %s' % _control.idx if _control.idx == control.idx - 1: previous_control = _control if previous_control: if previous_control.adv_on_flag: control.input_select_btn.controlUp( previous_control.adv_select_mapping) previous_control.adv_select_mapping.controlDown( control.input_select_btn) else: control.input_select_btn.controlUp( previous_control.input_select_btn) previous_control.input_select_btn.controlDown( control.input_select_btn) if control.device.mapping: self.trigger_advanced(control)