             break
 
         if context[keyName]?
-          summary = {keyName, keyModifier}
-          if endingComposition
-            @extendInputSummary(summary)
-          else
-            @setInputSummary(summary)
-
+          @setInputSummary({keyName, keyModifier})
           Trix.selectionChangeObserver.reset()
           context[keyName].call(this, event)
 


    compositionstart: (event) ->
      @mutationObserver.stop()
      @composition = start: event.data

    compositionupdate: (event) ->
      @composition.update = event.data

    compositionend: (event) ->
      @mutationObserver.start()
      @composition.end = event.data

      if @composition.end? and @composition.end isnt @composition.start
        @delegate?.inputControllerWillPerformTyping()
        @responder?.insertString(@composition.end)
        @setInputSummary(textAdded: @composition.end, didDelete: @selectionIsExpanded())
        delete @composition

    input: (event) ->
      event.stopPropagation()

    inputLog.log("inputSummary =", JSON.stringify(@inputSummary))

    unless @mutationIsExpected(mutationSummary)
      inputLog.log("mutation is unexpected, replacing HTML")
      @responder?.replaceHTML(@element.innerHTML)
    @resetInputSummary()
    @requestRender()
