Written by Dominic Clifton
This is a short guide to my ideas about how to implement new drivers and software for the Ergodex DX1 and any other similar devices.
28/06/2009 - It's a little out of date now, but most of it is still correct.
There are three major components required for operation and configuration of one or more pads.
These are as follows:
Each pad requires a driver, the driver should be a driver that is common to all DX1 pads. A Pad driver needs to be made for each supported device. (Initially Erogdex's DX1, later maybe CH-Product's Multifunction Panel, Belkin Nostromo N52s, Frogpads, Saitek Eclipse I + Command Pad, Cherry Master-Xpress keyboards, Logitech G-15's, etc)
The pad monitor handles usage of the pads.
The pad configuration editor will be the main user interface from which users will manage pad configurations and record and edit macros.
TODO
Primary goals
The pad monitor is the main part of the software that actually makes the device work. All the code for processing device requests and responses is handled by the pad monitor.
The pad monitor is to be written in C++ for maximum portability to Mac OS X and Linux.
Primary goals
Secondary goals
The pad monitor should be split into several key areas in order for porting to other operating systems to be viable. These are as follows:
The Pad Configuration Editor is to be written in C# to allow for rapid application development over portability. The fact that we require a rich UI that fits in with the host operating system's UI means that if the UI was to be cross-platform it would not be as rich as we want it to be. Also, some areas of the application are vastly different between operating systems (e.g. macro recording). The areas that are the same between different platforms should be written in separate class libraries that can be used on all platforms - e.g. loading, saving and parsing of internal data into XML, etc.
Primary goals
Secondary goals
It should be noted that because we eventually want cross-platform drivers that operating system specific information should be noted as such in any data files that are created so it can be handled appropriately by both the pad monitor and by the configuration editor.
I initially thought about being able to share pad configurations with users of other operating systems, but when it comes down to it the amount of work involved makes it un-worthwhile, especially when considering all the differences between the keyboards, joysticks and mice of the different OS's. At a basic level it'd be nice for application developers to include a single Ergodex configuration with their cross-platform software but it's doubtful they'd all be the same anyway, so initially don't expect a Quake 4 profile created on the Windows version of the software to load and work on Linux or Mac OSX and vice-versa.