I recently got a request to design a UI that features a joystick as one of the critical UI elements. It's not for a touchscreen or handheld; the app will run on a standard desktop. This means this onscreen joystick will have to be manipulated using a mouse/trackball. I'm reluctant to implement it as I think it will cause quite a lot of frustration with the user. What are your thoughts?

(note: keyboards are not an option)

  • 1
    Can you tell us what the users are going to control with the virtual joystick? If the actual input device (mouse/trackball) are controlling the virtual joystick, then it can't be the screen pointer/cursor they are controlling? – Jørn E. Angeltveit Jun 22 '11 at 13:58
  • It would mean holding down the mouse button on the stick to move it. There are other elements on the screen as well. – Max Steenbergen Jun 22 '11 at 14:46
  • 5
    My gut reaction is that it's a stupid idea to control an emulation of a physical interface using an entirely different physical interface. – DA01 Jun 22 '11 at 15:40
  • In an ideal world, it would be your responsibility to talk the client out of that. shudders – peterchen Jun 23 '11 at 11:03

Do not use a joystick in your interface.

This sounds incredibly difficult to use. Although it sounds like they may be aiming for a novelty/retro feel with their interface, this will be very difficult to interact with using a mouse. A joystick is a great and intuitive device for user input when used as a physical joystick but when used in the virtual sense it loses all intuitive benefits.

| improve this answer | |

Is this for a web app or client app? Regardless, I can see potential accessibility issues if keyboard input is not an option. Maybe that alone is a good enough reason to tell the client not to go with this route.

| improve this answer | |
  • This is for a desktop app on terminals. – Max Steenbergen Jun 22 '11 at 8:36

Many applications, usually gaming applications but also others, require or even demand the presence of a Joystick or a similar controlling device attached to the computer to be used to control the application. I am not sure about you all, but I don't usually walk around with every kind of joystick and computer program controlling devices known to man, in my hands. But I do have a mouse and a keyboard!

Sometimes an application allows the use of the mouse instead of the Joystick, but not always, and even then the behavior of the mouse is quite different from that of a joystick. For example with the mouse you may go to the left but you have no ability to know how much you have gone to the left, and if you let it go the application continues to think that you are still asking it to go to the left. With a joystick however you can tell how far left you have gone and once you let it go, it will bounce back to its original center position.

So yes a joystick representation transparently placed onto the screen and controlled by clicking and holding the mouse on the virtual joystick representation on the screen would be a very good program. You will however have to make it in such a way that the computer will readily think that for all practical purposed there really is a computer mouse and an additional Joystick device both connected to the computer at the same time. And make it such that it can be quickly turned on and off, put onto the screen and taken off.

It should also have the other Joystick buttons both represented on the screen and also controllable with the keyboard.

| improve this answer | |

I think you need to clarify. Are you asked to support a joystick - as an UI element, or are you asked to design a joystick as a GUI element??

GUI (aka Graphical User Interface) is about the graphical interface on the screen.

UI (aka User Interface) is about the general user interaction interface, and that includes several kinds of peripheral input devices.

If the former is the case, then you should question the reasons for using a graphical onscreen joystick, and you will need to test various alternatives thoroughly. It's difficult to create virtual joysticks that work good enough.

If the latter is the case, I don't see any problems. Joystick as a pointing device is very common in certain contexts (the pointing stick on many laptops is a kind of joystick, IMHO). Just make sure that the GUI you design is optimized for this kind of input device:

  • Bigger buttons.
  • No drag'n'drop.
  • Reduce need for cursor movement (eg. when you switch screens). Perhaps you should move the cursor to default button.
  • Optimize for horizontal and vertical cursor movement (reduce the need for diagonal and circular movements).
  • Give appropriate tactile feedback if supported.
  • Etc etc.
| improve this answer | |
  • It's a GUI element. "This means this onscreen joystick will have to be manipulated using a mouse/trackball. " – Matt Rockwell Jun 22 '11 at 12:39
  • @Matt. I saw that, but he could have misunderstood the joystick-part of the requirements. I read the first two sentences of the question as the requirement, and the last two sentences as his own description of the problem. They are ambiguous, hence the call for clarification. – Jørn E. Angeltveit Jun 22 '11 at 13:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.