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?