LEGO controller 8879
It is not spring loaded, meaning if you set a dial to a specific value it will stay there. There are two channels that can be controlled with the two dials, and either can be set in one direction ("forward") or the other ("reverse"). I put these terms in quotes because their exact function depends on your model, but in the simplest scenarios (like controlling two separate train engines) they act so.

A single channel (dial) can control one or more motors, but in the latter case all motors will receive the same signal which means they will rotate in the same direction with the same percentage of their maximum speed - different motors can have different maximum speeds.