Adapting regular interfaces for one-button access is no small endeavour. Usually done for disabled people, small children, or just as an exercise in usability, it poses an enormous challenge in that you're essentially trying to cut a lot of corners whilst intending to get the exact same product in the end. Whilst it doesn't sound all that feasible, there's nothing a nice idea can't solve.
Consider how many different things you can do with the mouse just by mixing various kinds of movement and clicking: select items, launch programs, close programs, drag icons, invoke menus, browse the Internet, draw, play hundreds of mouse-only games, and so on and so forth. Now, how would you manage all this if all you could do was press just one button or stop pressing it? One Switch Mouse is a program created by Claro Software exactly for that purpose. It allows you to use a key on your keyboard to cycle through mouse movement directions and clicks and invoke any of those. In fact, the program only allows you to use one of the four predefined keys for the purpose: the numerals zero and one, the Space key, and the Enter key - but you can also bind various external one-switch devices to those keys and control the mouse by means of blinking, tapping, squeezing, etc., which I believe is the general intention. Pressing and holding one of the trigger buttons initiates automatic cycling through the various kinds of mouse functions, changing the mouse pointer to reflect the intended action.
In order to invoke the intended mouse action, you just release the trigger key when its corresponding icon is being displayed as the mouse pointer - it's as simple as that. Note that the program doesn't force you to cycle through four possible movement directions each time you want to click on something: the first icon, 'Move', is just one icon, and it makes the mouse move in the direction you previously set (that tiny black square next to the icon shows the currently selected direction). But how do you change the direction? Well, there's one more thing you can do with your trigger key in addition to holding or releasing it: just tap it. This is exactly how you set the direction in which the mouse should move: each short press of the trigger button changes the preset direction clockwise (there being just four of them: right, down, left, up), and you make the mouse actually move in that direction by holding the trigger key just a little longer.
As you get more and more accustomed to these one-switch controls and memorise the order and the number of clicks and releases for each routine mouse operation, you may try turning things up a notch. The Settings menu of the program allows you to speed up the cycling of mouse actions (by lowering the oddly named 'Acceptance' parameter), increase the mouse speed, and add a bit of acceleration to mouse movements. You can also enable so-called crosshairs: this option displays two lines - one vertical and one horizontal, intersecting at the current position of the mouse pointer - when your mouse is moving, allowing you to take a better aim at smaller buttons (remember, you can only move your mouse in straight lines with this program). All in all, I can definitely imagine how, with a bit of practice, one could get pretty nifty at mousing with this program.
One Switch Mouse does seem to leave some room for improvement, however. First of all, the choice of preset trigger keys leaves me somewhat baffled: there are cases when people have difficulty using the mouse itself, but are relatively comfortable with the keyboard; and utilising e.g. the obscure Scroll Lock key would have made it possible to activate this program without rendering the keyboard itself somewhat useless. Right now, you have to resort to alternative means of input for something as common as a closing parenthesis (when your trigger key is '0') or a line break (for 'Enter'). Secondly, the design of the Settings menu makes it somewhat difficult to change the parameters using the control method offered by the program itself: it's no fun trying set those sliders into something acceptable when you mess up adjusting a parameter (especially when you mess up the 'Acceptance': its lowest setting is simply inhuman); and messing those up is much easier than you imagine, as you don't have to click 'Ok' to apply them. They're applied in real time - so the higher your intended setting, the harder it is to actually stop the slider at the right time. I would certainly welcome some fine-tuning buttons next to those sliders and some sort of a 'Panic' function that would reset the settings to their default values if the user e.g. runs through the whole action cycle three times consecutively without picking an action. There are probably numerous other ways to improve the program's functionality (say, add double and triple taps with higher acceptancy, or add some quick way to switch from the default input cycle to, say, clicking and dragging with a greater choice of directions - for drawing and similar tasks), but there's nothing a good idea can't expand on.