For the second "problem" I found a posible solution:
Code:
if key == 'z': #forward
origin.setPosition(
(origin.getPosition()[0]+(math.sin(vizmat.DEG_TO_RAD*origin.getEuler()[0])*0.1)),
(origin.getPosition()[1]),
(origin.getPosition()[2]+(math.cos(vizmat.DEG_TO_RAD*origin.getEuler()[0])*0.1))
)
if key == 'b': #backwards
origin.setPosition(
(origin.getPosition()[0]-(math.sin(vizmat.DEG_TO_RAD*origin.getEuler()[0])*0.1)),
(origin.getPosition()[1]),
(origin.getPosition()[2]-(math.cos(vizmat.DEG_TO_RAD*origin.getEuler()[0])*0.1))
)
and so on
Do you know a better way?