Browse Source

Use the CRC as part of the unique key for mappings

(cherry picked from commit 4697153d1e2d781e83f790fc12f3c1efce02aa52)
Sam Lantinga 1 year ago
parent
commit
07f04bb35e
1 changed files with 11 additions and 2 deletions
  1. 11 2
      src/joystick/sort_controllers.py

+ 11 - 2
src/joystick/sort_controllers.py

@@ -35,6 +35,15 @@ def find_element(prefix, bindings):
 
     return -1
 
+def get_crc_from_entry(entry):
+    crc = ""
+    line = "".join(entry)
+    bindings = line.split(",")
+    pos = find_element("crc:", bindings)
+    if pos >= 0:
+        crc = bindings[pos][4:]
+    return crc
+
 def save_controller(line):
     global controllers
     match = split_pattern.match(line)
@@ -85,7 +94,7 @@ def save_controller(line):
     entry.append(match.group(5))
     controllers.append(entry)
 
-    entry_id = entry[1] + entry[3]
+    entry_id = entry[1] + get_crc_from_entry(entry)
     if ',sdk' in line or ',hint:' in line:
         conditionals.append(entry_id)
 
@@ -94,7 +103,7 @@ def write_controllers():
     global controller_guids
     # Check for duplicates
     for entry in controllers:
-        entry_id = entry[1] + entry[3]
+        entry_id = entry[1] + get_crc_from_entry(entry)
         if (entry_id in controller_guids and entry_id not in conditionals):
             current_name = entry[2]
             existing_name = controller_guids[entry_id][2]