handleKeyPress(event, focusTreeId, componentId, options) {
    const key = getKeyName(event);

    if (this._isIgnoringRepeatedEvent(event, key, KeyEventType.keypress, componentId)) {
      return false;
    } else if (this.currentCombination.isKeyPressSimulated(key)) {
      this._ignoreAlreadySimulatedEvent(event, key, KeyEventType.keypress, componentId);

      return false;
    }

    const shouldDiscardFocusTreeId = this.focusTree.isNewerThan(focusTreeId);

    if (this.eventPropagator.startNewPropagationStep(componentId, event, key, KeyEventType.keypress)) {
      /**
       * We first decide if the keypress event should be handled (to ensure the correct
       * order of logging statements)
       */
      const responseAction = this._howToHandleKeyEvent(event,
        focusTreeId, componentId, key, options, KeyEventType.keypress
      );

      if (this.eventPropagator.isFirstPropagationStep(componentId) && this.currentCombination.isKeyIncluded(key)) {
        this._recordNewKeyInCombination(key, KeyEventType.keypress, stateFromEvent(event), componentId);
      }

      /**
       * We attempt to find a handler of the event, only if it has not already been
       * handled and should not be ignored
       */
      if (responseAction === EventResponse.handled) {
        this._callHandlerIfActionNotHandled(
          event, key, KeyEventType.keypress, componentId, focusTreeId
        );
      }

      this.eventPropagator.finishPropagationStep();
    }

    return shouldDiscardFocusTreeId;
  }
Records a keypress keyboard event and matches it against the list of pre-registered
event handlers, calling the first matching handler with the highest priority if
one exists.

This method is called many times as a keyboard event bubbles up through the React
render tree. The event is only registered the first time it is seen and results
of some calculations are cached. The event is matched against the handlers registered
at each component level, to ensure the proper handler declaration scoping.
@param {SyntheticKeyboardEvent} event - Event containing the key name and state
@param {FocusTreeId} focusTreeId Id - of focus tree component thinks it's apart of
@param {ComponentId} componentId - The index of the component that is currently handling
       the keyboard event as it bubbles towards the document root.
@param {Object} options - Hash of options that configure how the event
       is handled.
@returns {boolean} Whether the HotKeys component should discard its current focus
       tree Id, because it belongs to an old focus tree.