docstr: Return a list of tuples mapping between action names and the keyboard key that triggers them
  
  :return: a list of tuples mapping between action names and the keyboard key that triggers them
code: def get_available_keys(self) -> List[Tuple[str, ActionType]]:
      """
      Return a list of tuples mapping between action names and the keyboard key that triggers them
  
      :return: a list of tuples mapping between action names and the keyboard key that triggers them
      """
      available_keys = []
      if self.key_to_action != {}:
          for key, idx in sorted(
              self.key_to_action.items(), key=operator.itemgetter(1)
          ):
              if key != ():
                  key_names = [
                      self.renderer.get_key_names([k])[0] for k in key
                  ]
                  available_keys.append(
                      (
                          self.action_space.descriptions[idx],
                          " + ".join(key_names),
                      )
                  )
      elif type(self.action_space) == DiscreteActionSpace:
          for action in range(self.action_space.shape):
              available_keys.append(
                  ("Action {}".format(action + 1), action + 1)
              )
      return available_keys
  
imports: import operator
  import time
  from collections import OrderedDict
  from typing import Union, List, Tuple, Dict
  import numpy
  from rl_coach import logger
  from rl_coach.base_parameters import Parameters
  from rl_coach.base_parameters import VisualizationParameters
  from rl_coach.core_types import GoalType, ActionType, EnvResponse, RunPhase
  from rl_coach.environments.environment_interface import EnvironmentInterface
  from rl_coach.logger import screen
  from rl_coach.renderer import Renderer
  from rl_coach.spaces import ActionSpace, ObservationSpace, DiscreteActionSpace, RewardSpace, StateSpace
  from rl_coach.utils import squeeze_list, force_list
label_desc: Use image node_id 16 for calling the Environment obj's underlying member method code with example usage: obj.get_available_keys() and returns: available_keys