CTLedit

Project Description

You *must* run this in the editor, otherwise you will be unable to save your work!

Version 1.1-1 (11-06-25)
CTL Format Version 1
Graphical utility to generate CTL files.

Instruction manual located here:
https://docs.google.com/document/d/1WUl5LRLEt86OBU7oov_Q5GwY2F2ZbgFWUeVCK53JHbg/edit?usp=sharing

And yes, it's backwards. In video games you tend to assign a button to an action, but here you assign an action to a button! But then you get this nice controller diagram.

This is the GUI side of the ctlpad control scheme generator. The files generated by this program can be run through CTL2Java to generate a Java control scheme.

Currently CTLedit and CTL2Java use separate Action libraries. Hopefully in the future CTLedit will be able to import CTL2Java Action libraries, so they will only have to be written once.

Updating for a new season: In the "Assets" category, edit the "Season Menu" reporter and add a menu item for the new season. Label is the name of the year's game and Value is what Action libraries will say they're compatible with. If you set Value to "222", then you'll have to add "222" to "Valid Seasons" in your Action library to make it work with this Season.
And that's it! CTLedit will figure out the rest from there. Go create some new Action libraries, using the existing ones as examples.

License:
You may do literally anything with this program unless I explicitly state below that you cannot do it. *Everything I say here also applies to any derivative work of this program!* (Keep in mind any rights that your country may (regrettably) not allow me to grant to you. What about my right to grant you these rights? :( )
What you may not do with this program or any derivative of it:
- Sell it for money (It does not provide a level of quality that is worth paying for.)
- Distribute it (or any derivative work, remember) under any other license that does not also contain all of the restrictions listed above. It may add restrictions to this list, but it may not remove any.

Release notes:
||| Version 1.0-0 (7-28-25)
Complete to the originally planned extent. Can represent all control schemes that can possibly be built with the currently existing set of Button and Axis primitives. Supports Modifier buttons. (CTL2Java's file importer only currently allows real, not fake, Buttons to be used as Modifiers. This should change later, and CTLedit already supports using fake Buttons as Modifiers.) Includes a Libraries manager that makes sure Libraries are valid for the selected Season and that Extension libraries have all their Base dependencies satisfied. UI features include colorization of information and a Help button.

--- Version 1.0-1 (8-23-25)
No more error message upon clicking the green flag for the first time.

--- Version 1.0-2 (9-8-25)
Added the 'test' season to fully test CTL2Java (and by extension CTLedit itself). Also, the currently selected Gamepad is stored to its respective list when you go to Export. This means you no longer have to switch the active Gamepad to export all the changes since you last switched.

--- Version 1.0-3 (10-14-25)
Correctly exports Action mappings as dictionaries with "Name" and "Parameters" keys, and no extra fields not needed by CTL2Java.

--- Version 1.1-0 (11-05-25)
Supports the new "Enum" Parameter Type. Also includes fy25 Actions for 10107.
And Parameter Values are now letter-wrapped rather than word-wrapped.

--- Version 1.1-1 (11-06-25)
Fixed bug where you couldn't export if any mapped Action had no Parameters.

Created July 23, 2025

Last updated November 7, 2025

Shared July 23, 2025