This sounds very similar to the approach we took for Team 294's Python robot code for the 2013 competition:
https://github.com/team294/FRC2013.
While we started by splitting the teleop code amongst the various subsystems, we found this was somewhat error-prone due to e.g. joystick button mapping being spread around in a lot of different places, so we ended up consolidating all of the teleop code into one file, having it call into the subsystem interfaces. We reused the subsystem interfaces in our autonomous code.
__________________
Author of
cscore - WPILib CameraServer for 2017+
Author of
ntcore - WPILib NetworkTables for 2016+
Creator of
RobotPy - Python for FRC
2010 FRC World Champions (
294, 67, 177)
2007 FTC World Champions (30, 74,
23)
2001 FRC National Champions (71,
294, 125, 365, 279)