implement more viewport input functions