         a.concat b
       , []
 
+  combos: (fn) ->
+    @getCombos().forEach (m) -> m.eachCombo fn
+    return this
+
   isActive: ->
     @isListening and this is KDKeyboardListener.currentListener
 

    KDKeyboardListener.currentListener = null
    return this

  triageComboMaps: ->
    Object.keys @maps
      # prioritize by key:
      .sort (a, b) -> b - a # descending priority

    KDKeyboardListener.currentListener?.reset()

    seen = {}
    @combos (combo, options = { global: yes }, listener) ->
      return  if seen[combo]
      seen[combo] = yes
      method = if options.global then 'bindGlobal' else 'bind'
      Mousetrap[method] combo, listener

    KDKeyboardListener.currentListener = this
    @isListening = yes
