# Single Pole Double Throw U momentary switch UI control

I have a designer working on a 3 position momentary control: it's something like a typical boolean control, with a circle inside an oval to designate on/off states, but in this case the normal position (rest state) is in the center. For the sake of this discussion, assume the bound value can hold -1, 0 and 1 as valid values.

When the control is at rest, the bound value is 0.

The UX is the user touches the circle and drags to one side or the other of the control and holds it there. While it's being held, the bound value is either -1 or 1, depending on which direction it was dragged.

When the touch is released, the control "springs" back to it's rest position, and the bound value becomes 0 again.

In engineering, we'd call this a single pole, double throw (SPST) momentary switch. A good skeuomorphism is the control for powered windows in your car: a single switch that, while held moves the window either up or down.

I'm trying to find some reference to work from, but I can't even think of a good search term. In the UI world, is there a term for this, and/or some good examples in the wild?

This is a similar, mostly unanswered question.

As for why we want this: it is controlling motion

The metaphor that comes to my mind is that of a bidirectional joystick or jog switch type control: At rest in a neutral, central position, and causing motion in the direction of either excursion (up or down, left or right).

If executed well, the action of the UI control you describe is very learnable by users, especially if you describe the electric window lever analogy on cars, a function which many people are familiar with. Motorised seat position adjustments also quite often work that way. Mention those analogies in your accompanying manual, tutorial, technical description, or sales collateral, and chances are most people will develop a good mental map of the expected behaviour.

Once users put that mental map into action, the action-feedback loop should move quickly into 'muscle' memory. This is where clean implementation becomes key:

If the desired motion caused by the proposed control is meant to be single-speed, like the motors that adjust your windows and seats, that fact needs to be reinforced by the behaviour of both switch and environment: When the switch is dragged either way from neutral and held there, 'over-centre' it to the point of furthest excursion with brief motion, while the manipulated environment responds monotonously; just like the car window humming up or down at constant speed. This means screen refreshes with no response latency or bumpy motion. When the jog switch is let go, snap it back into its '0' position with brief motion. Remember that unlike your car window lever / seat adjuster most computer environments lack haptic feedback - like sensing the humming and vibration of the motors - so system response (implied by your description to be purely visual) relies on other cues.

• Some examples of the physical version: thumbstick controllers (some are on-off-on; some are provide proportional output, but that could be clamped to on-off-on). Aug 30, 2019 at 10:24
• Thanks, to both you and Michael Lai, joystick was the term I needed to get good search results. Never would have thought of that! Aug 31, 2019 at 16:20

I think this is a very interesting case in understanding whether skeumorphism is the best approach for replicating a physical functionality digitally.

Another well-known example is the notorious volume control button which has a very good rationale in its physical implementation but not so much for digital controls (and same with toggle buttons).

There are definitely cases where it works well, and in the mobile games design space there are joystick controls that mimic the animation and interaction that you can look up to give you some ideas. I think virtual joystick might be a search term, and it will probably lead you to other terms.

• Yeah... That's why I added a piece on cleanliness of implementation, which goes slightly beyond the answer to the question. Depending on the exact nature of what the virtual joystick must control, it can be appropriate if implemented with sufficient attention to detail. But not a feature of choice if done shoddily and in a rush. Aug 30, 2019 at 16:00