If that is what you want, perhaps you may wish to move the player without using behaviors. And use events instead.
For example,
if left key is hold : set player's x to player.x - 100*dt
else if right key is hold : set player's x to player.x + 100*dt
else if up key is hold : set player's y to player.y - 100*dt
else if down key is hold : set player's y to player.y + 100*dt
From these events, the player can only strictly move in one direction.
Is this Yes, No, ok?
EDIT: the above events will move the player in a very stiff fashion - not good aesthetics-wise for some games and perhaps your case.
You can remedy this by:
if left key is hold
if upAccelerate <= 0
if downAccelerate <= 0
if rightAccelerate <= 0:
add 100*dt to leftAccelerate
set player's x to player.x - leftAccelerate*dt
else
if right key is hold :
f upAccelerate <= 0
if downAccelerate <= 0
if leftAccelerate <= 0:
add 100*dt to rightAccelerate
set player's x to player.x + rightAccelerate*dt
...
...
do the above for up and down direction
...
...
every tick,
subtract 50*dt to leftAccelerate
subtract 50*dt to rightAccelerate
subtract 50*dt to upAccelerate
subtract 50*dt to downAccelerate
Is this what you want?