How to define diagonal directions?
As I hit any of the keys, a force is added to its direction.


This makes them separate. But you say you want them combined.

So combine them. Don't apply them immediately, but gather them together, then apply a vector with the length you want.

The easiest way is to just add together the different impulses, normalize the resulting vector, scale it to the desired size, and apply the scaled result to the object.

Example:

from mathutils import Vector

combined_force = Vector()
vector_length = 10.0

if is_forward_key_pressed:
  combined_force += Vector((1.0, 0.0, 0.0))

if is_backward_key_pressed:
  combined_force += Vector((-1.0, 0.0, 0.0))

if is_left_key_pressed:
  combined_force += Vector((0.0, -1.0, 0.0))

if is_right_key_pressed:
  combined_force += Vector((0.0, 1.0, 0.0))

combined_force.normalize()
combined_force *= vector_length

game_object.applyForce(combined_force)


This calculation would occur at most once each frame, instead of repeating it for each key pressed.

A more complex way would be to track the direction as Euler angles, Quaternions, or Matrices, and calculating a final vector from those.