 
     else
       @tabCount = previousTabCount if event.ctrlKey or event.metaKey or event.altKey
-      keyChar =
-        if Settings.get "filterLinkHints"
-          KeyboardUtils.getKeyChar(event)
-        else
-          KeyboardUtils.getKeyChar(event).toLowerCase()
       unless event.repeat
+        keyChar =
+          if Settings.get "filterLinkHints"
+            KeyboardUtils.getKeyChar(event)
+          else
+            KeyboardUtils.getKeyChar(event).toLowerCase()
         if keyChar
           keyChar = " " if keyChar == "space"
           if keyChar.length == 1

  pushKeyChar: (keyChar) ->
    if 0 <= @linkHintNumbers.indexOf keyChar
      @hintKeystrokeQueue.push keyChar
    # We only accept <Space> and characters which are not used for splitting (e.g. "a", "b", etc., but not "-").
    else if keyChar == " " or not @splitRegexp.test keyChar
      # Since we might renumber the hints, we should reset the current hintKeyStrokeQueue.
      @hintKeystrokeQueue = []
      @linkTextKeystrokeQueue.push keyChar

  popKeyChar: ->
    @hintKeystrokeQueue.pop() or @linkTextKeystrokeQueue.pop()

# Use characters for hints, and also filter links by their text.
class FilterHints
  constructor: ->
    @linkHintNumbers = Settings.get("linkHintNumbers").toUpperCase()
    @hintKeystrokeQueue = []
    @linkTextKeystrokeQueue = []
    @activeHintMarker = null
