diff --git a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigationDispatcher.kt b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigationDispatcher.kt
index 639f0ed..e2f72bf 100644
--- a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigationDispatcher.kt
+++ b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigationDispatcher.kt
@@ -1,6 +1,7 @@
 package com.chylex.intellij.keyboardmaster.feature.vimNavigation
 
 import com.chylex.intellij.keyboardmaster.PluginDisposableService
+import com.chylex.intellij.keyboardmaster.feature.vimNavigation.VimNavigationDispatcher.WrappedAction.ForKeyListener
 import com.intellij.openapi.actionSystem.ActionUpdateThread
 import com.intellij.openapi.actionSystem.AnAction
 import com.intellij.openapi.actionSystem.AnActionEvent
@@ -20,6 +21,7 @@ import java.awt.event.ActionListener
 import java.awt.event.KeyEvent
 import java.beans.PropertyChangeEvent
 import java.util.concurrent.atomic.AtomicBoolean
+import javax.swing.Action
 import javax.swing.JComponent
 import javax.swing.KeyStroke
 
@@ -28,7 +30,7 @@ internal open class VimNavigationDispatcher<T : JComponent>(final override val c
 		private val DISPOSABLE = ApplicationManager.getApplication().getService(PluginDisposableService::class.java)
 		private val ENTER_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)
 		
-		private fun findOriginalEnterAction(component: JComponent): WrappedAction? {
+		private fun findOriginalEnterAction(component: JComponent): WrappedAction {
 			var originalEnterAction: WrappedAction? = null
 			
 			for (container in JBIterable.generate<Container>(component) { it.parent }) {
@@ -36,7 +38,7 @@ internal open class VimNavigationDispatcher<T : JComponent>(final override val c
 					continue
 				}
 				
-				container.getActionForKeyStroke(ENTER_KEY)?.let {
+				container.getActionForKeyStroke(ENTER_KEY)?.takeUnless(::isIgnoredEnterAction)?.let {
 					originalEnterAction = WrappedAction.ForActionListener(container, it)
 				}
 				
@@ -47,7 +49,11 @@ internal open class VimNavigationDispatcher<T : JComponent>(final override val c
 				}
 			}
 			
-			return originalEnterAction
+			return originalEnterAction ?: ForKeyListener(component)
+		}
+		
+		private fun isIgnoredEnterAction(action: ActionListener): Boolean {
+			return action is Action && action.getValue(Action.NAME) == "toggle"
 		}
 		
 		@Suppress("UnstableApiUsage")
@@ -108,7 +114,7 @@ internal open class VimNavigationDispatcher<T : JComponent>(final override val c
 		}
 		else {
 			currentNode = rootNode
-			originalEnterAction?.perform(actionEvent, keyEvent)
+			originalEnterAction.perform(actionEvent, keyEvent)
 		}
 	}
 	
@@ -132,7 +138,7 @@ internal open class VimNavigationDispatcher<T : JComponent>(final override val c
 	private sealed interface WrappedAction {
 		fun perform(actionEvent: AnActionEvent, keyEvent: KeyEvent)
 		
-		class ForActionListener(val component: JComponent, val listener: ActionListener) : WrappedAction {
+		class ForActionListener(private val component: JComponent, private val listener: ActionListener) : WrappedAction {
 			override fun perform(actionEvent: AnActionEvent, keyEvent: KeyEvent) {
 				listener.actionPerformed(ActionEvent(component, ActionEvent.ACTION_PERFORMED, "Enter", keyEvent.`when`, keyEvent.modifiersEx))
 			}
@@ -143,5 +149,12 @@ internal open class VimNavigationDispatcher<T : JComponent>(final override val c
 				action.actionPerformed(actionEvent)
 			}
 		}
+		
+		class ForKeyListener(private val component: JComponent) : WrappedAction {
+			override fun perform(actionEvent: AnActionEvent, keyEvent: KeyEvent) {
+				val unconsumedKeyEvent = KeyEvent(component, keyEvent.id, keyEvent.`when`, keyEvent.modifiersEx, keyEvent.keyCode, keyEvent.keyChar, keyEvent.keyLocation)
+				component.dispatchEvent(unconsumedKeyEvent)
+			}
+		}
 	}
 }