         @linkActivator clickEl
         LinkHints.activateModeWithQueue() if @mode is OPEN_WITH_QUEUE
 
-    if waitForEnter? and waitForEnter
+    if userMightOverType and Settings.get "waitForEnterForFilteredHints"
       new WaitForEnter linkMatched.rect, linkActivator
-    else if delay? and 0 < delay
-      # Install a mode to block keyboard events if the user is still typing.  The intention is to prevent the
-      # user from inadvertently launching Vimium commands when typing the link text.
-      new TypingProtector delay, linkMatched?.rect, linkActivator
+    else if userMightOverType
+      # Block keyboard events while the user is still typing.  The intention is to prevent the user from
+      # inadvertently launching Vimium commands when (over-)typing the link text.
+      new TypingProtector 200, linkMatched?.rect, linkActivator
     else
       DomUtils.flashRect linkMatched.rect
       linkActivator()

    DomUtils.suppressEvent event

  updateVisibleMarkers: (hintMarkers, tabCount = 0) ->
    keyResult = @markerMatcher.getMatchingHints hintMarkers, tabCount
    linksMatched = keyResult.linksMatched
    if linksMatched.length == 0
      @deactivateMode()
    else if linksMatched.length == 1
      keyResult.delay ?= 0
      keyResult.waitForEnter ?= false
      @activateLink linksMatched[0], keyResult
    else
      @hideMarker marker for marker in hintMarkers
      @showMarker matched, @markerMatcher.hintKeystrokeQueue.length for matched in linksMatched

    @activeHintMarker = linksMatched[tabCount]
    @activeHintMarker?.classList.add "vimiumActiveHintMarker"

    linksMatched: linksMatched
    userMightOverType: @hintKeystrokeQueue.length == 0 and 0 < @linkTextKeystrokeQueue.length

  pushKeyChar: (keyChar, keydownKeyChar) ->
    # For filtered hints, we *always* use the keyChar value from keypress, because there is no obvious and
