I have read the problem in the Maniadrive forum about keyboard input and now i was thinking about a keyboard setup system.
But i have found 1 big problem:
We can store the key pressed with something like:
Code:
int raydium_control_key_get(char *control,int current_control)
{
    int previous_key;
    previous_key=raydium_control_key[current_control];
    raydium_control_key[current_control]=raydium_key_last;
    if(previous_key==raydium_control_key[current_control])
    {
        return 0;        
    }
    else
    {
        raydium_log("The control %d, called \"%s\" has been attached to key %d",current_control,control,raydium_control_key[current_control]);
        return 1;
    }
}
In somewhere into the display a loop should run something like:
Code:
switch    (step)
{
    case 0:
        if(raydium_control_key_get("Forward",step))
            step++;
        break;
    case 1:
        if(raydium_control_key_get("Backward",step))
            step++;
        break;
    case 2:
        if(raydium_control_key_get("Left",step))
            step++;
        break;
    case 3:
        if(raydium_control_key_get("Right",step))
            step++;
        break;
    case 4:
        control_ready=1;
    default:
        break;
}
When control_ready==1 we assume the new keyboard setup is ready.
However here comes the problem. Even if we have stored the new keys we can NOT USE them in the game.
The reason: normal keys can not be readed with raydium_key.
To get a good response for the games we should code something like:
Code:
if(raydium_key[raydium_control_key[1]]) 
But Raydium won't allow that. The raydium_key[] array won't be filled with standar keys.
Xfennec, how can this be workarounded?