Hi @sjpanwar,
Check the QGC code to see what kind of mavlink messages are used, they sounds like exatcly whay you want, take a look in the different modes and what message is used for each one of them.
If you want to send mavlink message with python, most messages follow this rules: message_send.
E.g:
#start connection
conn = mavutil.mavlink_connection(args*)
#send SET_ATTITUDE_TARGET
self.conn.mav.set_attitude_target_send(args*)
#send SET_POSITION_TARGET_LOCAL_NED
self.conn.mav.set_position_target_local_ned_send(args*)