docs: def register_button_handler(self, button_handler, buttons):
          """
          Register a handler function which will be called when a button is pressed
  
          :param button_handler:
              A function which will be called when any of the specified buttons are pressed. The
              function is called with the Button that was pressed as the sole argument.
          :param [Button] buttons:
              A list or one or more buttons which should trigger the handler when pressed. Buttons
              are specified as :class:`approxeng.input.Button` instances, in general controller implementations will
              expose these as constants such as SixAxis.BUTTON_CIRCLE. A single Button can be specified if only one button
              binding is required.
          :return:
              A no-arg function which can be used to remove this registration
          """
          if not isinstance(buttons, list):
              buttons = [buttons]
          for button in buttons:
              state = self.buttons.get(button)
              if state is not None:
                  state.button_handlers.append(button_handler)
  
          def remove():
              for button_to_remove in buttons:
                  state_to_remove = self.buttons.get(button_to_remove)
                  if state_to_remove is not None:
                      state_to_remove.button_handlers.remove(button_handler)
  
          return remove