added keyboard drive function, slight change to inverse kinematics?