           @clearQueuedKeystrokes()
           @cancelPendingState()
           if @dispatchCommandEvent(exactMatch.command, target, event)
-            @emit 'matched', exactMatch, _.without(exactMatches, exactMatch)
+            @emit 'matched', {keystrokes, binding:exactMatch , keyboardEventTarget: target}
             return
         currentTarget = currentTarget.parentElement
 

      event.preventDefault()
      enableTimeout = foundMatch ? @pendingStateTimeoutHandle?
      @enterPendingState(partialMatches, enableTimeout)
      @emit 'matched-partially', keystrokes, partialMatches
    else
      @emit 'match-failed', keystrokes
      @terminatePendingState()

  # Public: Get the key bindings for a given command and optional target.

#
# * `matched` -
#      Emitted when keystrokes match a binding.
#      * keystrokes - The keystroke {String} that matched the binding
#      * binding - The {KeyBinding} that was used
#      * keyboardEventTarget - The target element of the keyboard event
#
# * `matched-partially` -
#      Emitted when keystrokes partially match one or more bindings.
#      * keystrokes - The keystroke {String} that partially match some bindings
#      * partiallyMatchedBindings - The {KeyBinding}s that partially matched
#      * keyboardEventTarget - The target element of the keyboard event
#
# * `match-failed` -
#      Emitted when keystrokes don't match any bindings.
#      * keystrokes - The keystroke {String} that matched no bindings
#      * keyboardEventTarget - The target element of the keyboard event

module.exports =
class Keymap
