def _load_keys(self, sub_section, fp, lineno): # Builds a nested dictionary of # (scancode, flags) = event_name main_map = self.get_data("keys", {}) map = main_map.get(sub_section, {}) while 1: line, lineno, bBreak = self._readline(fp, lineno) if bBreak: break key, event = split_line(line, lineno) if not event: continue sc, flag = keycodes.parse_key_name(key) if sc is None: self.report_warning("Line %d: Invalid key name '%s'" % (lineno, key)) else: map[sc, flag] = event main_map[sub_section] = map self._save_data("keys", main_map) return line, lineno