| 11 | One of the basic ideas was not to separate keys, buttons and axes from each other. Every such input 'trigger' should be able to fulfill the same functions. An axis should for instance be able to act as a simple button and any key or buttons has to have the ability to work like an axis. This essentially means that there have to be translation mechanisms.[[br]] |
| 12 | |
| 13 | === Button and HalfAxis === |
| 14 | When looking from input side, every key, button or axis is a 'Button' in class design. An important mentioning is the splitting of an axis into two half axes. To clarify, consider a joy stick and imagine every direction to be binary instead of continuous. [[br]] |
| 15 | The other end of input processing always ends in the execution of a command. There are two kinds of such commands: Binary or continuous. The latter involves an argument that tells 'how much', the other is simply 'whether or not'. |
| 16 | |
| 17 | === Conversions === |
| 18 | Obviously a half axis cannot simply act as button like that. The conversion however is rather simple: When the axis is moved more than a certain configurable threshold, it triggers the 'button'.[[br]] |
| 19 | The other way round, when a buttons acts axis like, we simply interpret a pressed button as 1.0 and 0.0 otherwise. |