Controller-Fix: Joystick-Objekte wurden nach dem Namens-Auslesen freigegeben, dadurch lieferte SDL keine Events mehr. Jetzt offen halten + Hotplug. Neu: tools/controller_check.py zur Diagnose, Tests fuer Tastenbelegung (62).
This commit is contained in:
1 parent
a088c23a09
commit
5237b0a39c
7 files changed
+343
-17
No files matched your search
@@ -143,3 +143,26 @@ argument 'slots'` ab.
|
||||
Support-Fällen.
|
||||
* Verifiziert mit echtem Python 3.9.25 + pygame 2.6.1: 57 Tests grün,
|
||||
Selbsttest läuft durch.
|
||||
|
||||
## 11. Controller wurde erkannt, reagierte aber nicht (v1.6)
|
||||
|
||||
Symptom auf dem MacBook: Im Start-Log stand `Controller: Xbox Series X Controller`,
|
||||
aber keine Taste löste im Spiel etwas aus – mit Kabel und via Bluetooth.
|
||||
|
||||
Ursache: `connected_controllers()` öffnete den Joystick nur, um den Namen
|
||||
auszulesen, und gab das Python-Objekt danach wieder frei. Damit schloss pygame
|
||||
das Gerät, und SDL liefert für geschlossene Geräte **keine** Joystick-Events
|
||||
mehr – die Tastatur funktionierte weiter, der Controller war stumm.
|
||||
|
||||
Behoben in `input_map.py`:
|
||||
|
||||
* Die Joystick-Objekte werden in `_OPEN_CONTROLLERS` offen gehalten
|
||||
(`open_controllers()`), aufgerufen beim Start und bei
|
||||
`JOYDEVICEADDED` / `JOYDEVICEREMOVED` (Hotplug).
|
||||
* `open_controllers()` initialisiert das Joystick-Subsystem bei Bedarf selbst
|
||||
und schluckt fehlende Geräte, statt abzubrechen.
|
||||
* Neues Diagnose-Tool `tools/controller_check.py`: zeigt Name, Tasten-/
|
||||
Achsen-/Hat-Anzahl, GUID und jedes eingehende Event samt abgeleiteter
|
||||
Spiel-Aktion.
|
||||
* Tests für die Tastenbelegung (Tasten 0–3, D-Pad als Hat, Stick mit
|
||||
Deadzone), 62 Tests insgesamt.
|
||||
Reference in new issue
Block a user