It is definitely possible. You just need to make sure that you are not giving opposing commands when you make multiple input tests; that the tests are not mutually exclusive by your logic.
One way I counter that is by modifying a variable based on what is being pressed, and then use that variable to calculate the desired action. For instance:
Rem Project: 3dObjectControl
sync on
make object box 1, 20.0, 20.0, 40.0
position camera 0,200,0
point camera 0,0,0
do
controllObjectUsingKeyboard( 1, 0.05 )
sync
loop
function controlObjectUsingKeyboard( objectNumber as integer, speed# as float )
o = objectNumber :` because im lazy and dont want to type so much
longitudinalForce# = (upkey() - downkey()) * speed#
lateralForce# = (rightkey() - leftkey()) * speed#
move object o, longitudinalForce#
yrotate object o, wrapvalue( object angle y(o) + lateralForce# )
endfunction