In this tutorial you will learn how to model kempston pro joystick using polygons and NURBS. References can be found on google images.
Start by creating a polygon box 9 units wide, 1 unit high, and 8 units deep with 2 height subdivisions .
Select top and bottom face and scale it until you get result similar to picture

Select edges highlighted on picture and then polygon>edit mesh/bevel. In bevel options set segments to 8

Select edges highlighted on picture and delete them

Select all of the top edges and bevel them.

In bevel options set offset 0.2 and segments 5.
You should get something like this

Select center edge loop and bevel it with offset 0.05.
Select faces highlihted on picture and extrude them along z axis for 0.25

Go to top view and scale whole object to fix proportions so they match reference images
Create poly cylinder with radius 1, height 1, and subdivision axis 32.
Select all edges on cap of the cylinder and delete them

Select edges highlighted on picture and bevel them with 5 segments and offset set to 0.08

Create 2 more cylinders like this one, move and scale them until it looks like picture below

Duplicate (shift+D) these cylinders and move them like on picture below

Using tools described earlier follow these steps to complete modeling




To create a cable for joystick draw a curve similar to one on a picture, and snap its pivot point to end vertex (use insert key to affect pivot by transformations).

Go to surfaces>surfaces/revolve, and revolve it around y axis
You can adjust revolved surface by modifying curve.Place it like on picture below.

To create rest of the cable draw a curve and a circle, select circle an curve then go to surfaces>surfaces/extrude. You can adjust extruded surface by adjusting circle or curve.
It should look like this

And here is render
