 
 public protocol RecordViewDelegate: class {
     func recordViewShouldBeginRecording(recordView: RecordView) -> Bool
-    func recordView(recordView: RecordView, canRecordShortcut keyCombo: KeyCombo) -> Bool
+    func recordView(recordView: RecordView, canRecordKeyCombo keyCombo: KeyCombo) -> Bool
     func recordViewDidClearShortcut(recordView: RecordView)
+    func recordView(recordView: RecordView, didChangeKeyCombo keyCombo: KeyCombo)
     func recordViewDidEndRecording(recordView: RecordView)
 }
 

        if let keyCode = KeyCode(rawValue: keyCodeInt) where recording && validateModifiers(inputModifiers) {
            let modifiers = KeyTransformer.cocoaToCarbonFlags(theEvent.modifierFlags)
            if let keyCombo = KeyCombo(keyCode: keyCode, carbonModifiers: modifiers) {
                if delegate?.recordView(self, canRecordShortcut: keyCombo) ?? true {
                    self.keyCombo = keyCombo
                    endRecording()
                    return true
                }

            return false
        } else if let keyCode = KeyCode(rawValue: keyCodeInt) where recording && KeyTransformer.containsFunctionKey(keyCodeInt) {
            if let keyCombo = KeyCombo(keyCode: keyCode, carbonModifiers: 0) {
                if delegate?.recordView(self, canRecordKeyCombo: keyCombo) ?? true {
                    self.keyCombo = keyCombo
                    delegate?.recordView(self, didChangeKeyCombo: keyCombo)
                    endRecording()
                    return true
                }
