             ((eq cmd 'evil-invert-char) (evil-invert-char (point) (1+ (point))) (evil-forward-char))
             ((eq cmd 'evil-upcase) (execute-kbd-macro (apply 'concat keys)))
             ((eq cmd 'evil-downcase) (execute-kbd-macro (apply 'concat keys)))
-            ((eq cmd 'keyboard-quit) (emc-delete-all-regions))
+            ((eq cmd 'keyboard-quit) nil)
+            ((eq cmd 'evil-visual-char) (evil-force-normal-state))
 
             ((eq cmd 'evil-delete)
              (if region

    (list (if (overlayp cursor) cursor (emc-make-cursor-at-point))
          (if (overlayp region) region nil))))

(defun emc-execute-last-command (cursor region)
  "Executes the command stored in `emc-command-info' for CURSOR and REGION."
  (when (and emc-command-info (not emc-cursor-command))
    (when emc-debug
      (message "Executing %s command (running %s)" emc-command-info emc-running-command))
    (ignore-errors
      (condition-case error
          (funcall (emc-get-run-command) cursor region)
        (error (message "Command %s failed with error %s"
                        emc-command-info (error-message-string error))
               nil)))))

;; (emc-execute-last-command nil nil)
;; (setq emc-cursor-list (cons cursor emc-cursor-list)))

            ((or (eq cmd 'evil-inner-paren)
                 (eq cmd 'evil-a-paren))
             ;; TODO try this using evil-with-active-region
             ;; (evil-with-state normal)
             (let* ((limits (funcall cmd))
                    (start (nth 0 limits))
                    (end (1- (nth 1 limits))))
               (goto-char end)
               (list nil (emc-refresh-region region start))))
            ((eq repeat-type 'motion)
             (let ((orig (point)))
               (funcall cmd)
               (list nil (emc-refresh-region region orig))))
            ((eq cmd 'evil-visual-char)
             (unless region
               (list nil (emc-refresh-region region (point)))))
            (t (message "not implemented"))))))

(defun emc-run-last-command (cursor region)
