Arduino Uno Input Board
I produced the code (with some help from a fellow Car PCer called Trev - thanks mate

) for the Arduino Uno Rev 3 to be able to monitor multiple analogue inputs, namely the steering wheel control buttons (6 of but doubled to 12 due to monitoring for a greater than 1 second hold) and both heated seat switches converted specifically for this application (details on switch conversion to follow).
The Arduino essentially measures the analogue inputs to detect change. When the analogue value is at a predetermined value, which has a allowable tolerance level or variance, a keyboard value is produced to simulate a keypress. The Car PC front end software is manipulated to associate a function to the keypress and can be set globally (throughout every screen/mode) or locally within that particular screen. This means the 'next track' button can be 'next track' in GPS and Audio Player screen/mode, or 'scroll down' in Audio Browser mode.
Pic time

. The Arduino Board in a lovely electric blue layer case

. Note the connections, one USB to communicate with the Car PC and a three analogue inputs which is A0 (Steering Wheel Button) and A1/A2 (heated seat switches).
Stowed in the glovebox next to the USB Hub.
The heated seat switches used for control.
The offside heated seat switchsettings are as follows:
0 - No action
1 - GPS
2 - Audio Player
3 - Audio Library
4 - OBD live data feed
5 - File Synchronisation (currently only set up for USB drive but could be over wifi)
The nearside heated seat switch settings are as follows:
0 - No action
1 - Main Menu
2 - Entertainment Mode
3 - Tools Mode
4 - Settings Mode
5 - Power Mode
The steering wheel buttons are as follows:
I will produce a short video to demonstrate the buttons in action

.