Using a standard keyboard is difficult or impossible for many Mac users, perhaps because of disorders such as RSI, motor control problems, or simple lack of suitable body parts. Although recent versions of OS X feature support for dictation and alternative input devices through the Accessibility pane in System Preferences, if this is going to be your principal means of entering text, you will surely want a tool which you can tailor to your own needs and make as efficient as possible.
KeyStrokes™, from AssistiveWare, takes the existing OS X Keyboard Viewer, a floating pane which you can use to enter text with your mouse, trackpad, or other input device, and grows it into the mother of all virtual keyboards. I cannot think of a bell or whistle which it does not include, even down to LayoutKitchen, its own bundled editor for building custom virtual keyboards to any specification.
This is AssistiveWare’s third and final product for OS X – you met Wrise, its superb enhanced word processor, and a library of additional voices for text-to-speech here – and their most expensive: KeyStrokes costs $299 or €249. I have been using the free time-limited demo version, from here.
KeyStrokes is an application rather than a fancy extension to OS X, which ensures that it works properly and is not vulnerable to the many problems to which extensions are prone. The first time that you run it, it asks basic questions such as which input device and localisation you want to use, and sets default preferences accordingly. It then provides you with its default keyboard, ready to roll.

All you then do, just as with the OS X Keyboard Viewer, is place the entry cursor where you want the text to go, and start typing on the keyboard using your input device of choice.
But there is so much more than that too.

You will quickly notice that KeyStrokes uses the same PolyPredix™ predictive word completion as in Wrise. This is, again, exceptionally good, and you can customise it using the Preferences dialog. As you can supplement its already large vocabulary, and it learns from what you type, this just gets better and better as you carry on typing. It also supports UK and US English, French, German, Dutch, Norwegian, Italian, Spanish and Russian.

Dwellix™ is a valuable system-wide enhancement which you can use to operate the keys on your virtual keyboard – and anything else, for that matter – without having to even click on them, simply by letting the pointer remain still for a preset time. There are also extensive controls over modifier keys, dead-keys, click combinations, and auto-repeat.
Standard keyboard layouts supplied include extended keyboards with numeric keypads and Chubon layouts, which were designed for speedy and efficient single digit entry back in the 1980s. To build your own, start LayoutKitchen, a separate app, and you can either copy an existing keyboard layout (the originals are wisely protected), or launch out on your own.

LayoutKitchen can do almost anything you want with a keyboard. Any key can be a regular letter, a whole word, prefix, or suffix, punctuation or other special symbol, a menu command such as copy or save, or a whole macro script if you wish. You can change the appearance of any and all keys, their size, disposition, and even put images or icons on them chosen from extensive libraries.

Layout tools make sizing, alignment, and spacing very quick, simple, and precise. Once you are happy with the end result, you can save your new keyboard into KeyStrokes’ library, and start using it.
As I wrote above, KeyStrokes with LayoutKitchen is the mother of all virtual keyboards, catering for a huge range of user requirements, for those aged 3 to 103. It is not cheap, but for those who need to input text using alternative devices, it is tremendous value.