diff options
| -rw-r--r-- | content_scripts/link_hints.coffee | 28 | ||||
| -rw-r--r-- | content_scripts/mode_visual.coffee | 2 | ||||
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 4 | ||||
| -rw-r--r-- | lib/keyboard_utils.coffee | 15 | ||||
| -rw-r--r-- | pages/hud.coffee | 10 | ||||
| -rw-r--r-- | pages/vomnibar.coffee | 8 | ||||
| -rw-r--r-- | tests/dom_tests/dom_tests.coffee | 32 |
7 files changed, 47 insertions, 52 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee index 4d9bbd1f..4481ae92 100644 --- a/content_scripts/link_hints.coffee +++ b/content_scripts/link_hints.coffee @@ -175,7 +175,7 @@ class LinkHintsMode @hintMode.onExit (event) => if event?.type == "click" or (event?.type == "keydown" and - (KeyboardUtils.isEscape(event) or event.keyCode in [keyCodes.backspace, keyCodes.deleteKey])) + (KeyboardUtils.isEscape(event) or event.key in ["Backspace", "Delete"])) HintCoordinator.sendMessage "exit", isSuccess: false # Note(philc): Append these markers as top level children instead of as child nodes to the link itself, @@ -239,25 +239,25 @@ class LinkHintsMode # NOTE(smblott) As of 1.54, the Ctrl modifier doesn't work for filtered link hints; therefore we only # offer the control modifier for alphabet hints. It is not clear whether we should fix this. As of # 16-03-28, nobody has complained. - modifiers = [keyCodes.shiftKey] - modifiers.push keyCodes.ctrlKey unless Settings.get "filterLinkHints" + modifiers = ["Shift"] + modifiers.push "Control" unless Settings.get "filterLinkHints" - if event.keyCode in modifiers and + if event.key in modifiers and @mode in [ OPEN_IN_CURRENT_TAB, OPEN_WITH_QUEUE, OPEN_IN_NEW_BG_TAB, OPEN_IN_NEW_FG_TAB ] @tabCount = previousTabCount # Toggle whether to open the link in a new or current tab. previousMode = @mode - keyCode = event.keyCode + key = event.key - switch keyCode - when keyCodes.shiftKey + switch key + when "Shift" @setOpenLinkMode(if @mode is OPEN_IN_CURRENT_TAB then OPEN_IN_NEW_BG_TAB else OPEN_IN_CURRENT_TAB) - when keyCodes.ctrlKey + when "Control" @setOpenLinkMode(if @mode is OPEN_IN_NEW_FG_TAB then OPEN_IN_NEW_BG_TAB else OPEN_IN_NEW_FG_TAB) handlerId = handlerStack.push keyup: (event) => - if event.keyCode == keyCode + if event.key == key handlerStack.remove() @setOpenLinkMode previousMode true # Continue bubbling the event. @@ -266,7 +266,7 @@ class LinkHintsMode # Therefore, we ensure that it's always removed when hint mode exits. See #1911 and #1926. @hintMode.onExit -> handlerStack.remove handlerId - else if event.keyCode in [ keyCodes.backspace, keyCodes.deleteKey ] + else if event.key in [ "Backspace", "Delete" ] if @markerMatcher.popKeyChar() @updateVisibleMarkers() else @@ -274,15 +274,15 @@ class LinkHintsMode # knows not to restart hints mode. @hintMode.exit event - else if event.keyCode == keyCodes.enter + else if event.key == "Enter" # Activate the active hint, if there is one. Only FilterHints uses an active hint. HintCoordinator.sendMessage "activateActiveHintMarker" if @markerMatcher.activeHintMarker - else if event.keyCode == keyCodes.tab + else if event.key == "Tab" @tabCount = previousTabCount + (if event.shiftKey then -1 else 1) @updateVisibleMarkers @tabCount - else if event.keyCode == keyCodes.space and @markerMatcher.shouldRotateHints event + else if event.key == " " and @markerMatcher.shouldRotateHints event @tabCount = previousTabCount HintCoordinator.sendMessage "rotateHints" @@ -884,7 +884,7 @@ class WaitForEnter extends Mode @push keydown: (event) => - if event.keyCode == keyCodes.enter + if event.key == "Enter" @exit() callback true # true -> isSuccess. else if KeyboardUtils.isEscape event diff --git a/content_scripts/mode_visual.coffee b/content_scripts/mode_visual.coffee index e4e4f541..cc1baf34 100644 --- a/content_scripts/mode_visual.coffee +++ b/content_scripts/mode_visual.coffee @@ -258,7 +258,7 @@ class VisualMode extends KeyHandlerMode _name: "#{@id}/enter/click" # Yank on <Enter>. keypress: (event) => - if event.keyCode == keyCodes.enter + if event.key == "Enter" unless event.metaKey or event.ctrlKey or event.altKey or event.shiftKey @yank() return @suppressEvent diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index b3a85bfb..cdb23352 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -451,14 +451,14 @@ extend window, name: "focus-selector" exitOnClick: true keydown: (event) => - if event.keyCode == KeyboardUtils.keyCodes.tab + if event.key == "Tab" hints[selectedInputIndex].classList.remove 'internalVimiumSelectedInputHint' selectedInputIndex += hints.length + (if event.shiftKey then -1 else 1) selectedInputIndex %= hints.length hints[selectedInputIndex].classList.add 'internalVimiumSelectedInputHint' DomUtils.simulateSelect visibleInputs[selectedInputIndex].element @suppressEvent - else unless event.keyCode == KeyboardUtils.keyCodes.shiftKey + else unless event.key == "Shift" @exit() # Give the new mode the opportunity to handle the event. @restartBubbling diff --git a/lib/keyboard_utils.coffee b/lib/keyboard_utils.coffee index 97fd8a75..1a1524af 100644 --- a/lib/keyboard_utils.coffee +++ b/lib/keyboard_utils.coffee @@ -3,12 +3,9 @@ mapKeyRegistry = {} Utils?.monitorChromeStorage "mapKeyRegistry", (value) => mapKeyRegistry = value KeyboardUtils = - keyCodes: - { ESC: 27, backspace: 8, deleteKey: 46, enter: 13, ctrlEnter: 10, space: 32, shiftKey: 16, ctrlKey: 17, f1: 112, - f12: 123, tab: 9, downArrow: 40, upArrow: 38 } - + # This maps event.key key names to Vimium key names. keyNames: - { 37: "left", 38: "up", 39: "right", 40: "down", 32: "space", 8: "backspace" } + "ArrowLeft": "left", "ArrowUp": "up", "ArrowRight": "right", "ArrowDown": "down", " ": "space", "Backspace": "backspace" init: -> if (navigator.userAgent.indexOf("Mac") != -1) @@ -19,8 +16,8 @@ KeyboardUtils = @platform = "Windows" getKeyChar: (event) -> - if event.keyCode of @keyNames - @keyNames[event.keyCode] + if event.key of @keyNames + @keyNames[event.key] # It appears that event.key is not always defined (see #2453). else if not event.key? "" @@ -50,7 +47,7 @@ KeyboardUtils = isEscape: (event) -> # <c-[> is mapped to Escape in Vim by default. - event.keyCode == @keyCodes.ESC || @getKeyCharString(event) == "<c-[>" + event.key == "Escape" || @getKeyCharString(event) == "<c-[>" isPrintable: (event) -> return false if event.metaKey or event.ctrlKey or event.altKey @@ -65,5 +62,3 @@ KeyboardUtils.init() root = exports ? window root.KeyboardUtils = KeyboardUtils -# TODO(philc): A lot of code uses this keyCodes hash... maybe we shouldn't export it as a global. -root.keyCodes = KeyboardUtils.keyCodes diff --git a/pages/hud.coffee b/pages/hud.coffee index af528203..98801930 100644 --- a/pages/hud.coffee +++ b/pages/hud.coffee @@ -16,21 +16,21 @@ document.addEventListener "keydown", (event) -> inputElement = document.getElementById "hud-find-input" return unless inputElement? # Don't do anything if we're not in find mode. - if (event.keyCode in [keyCodes.backspace, keyCodes.deleteKey] and inputElement.textContent.length == 0) or - event.keyCode == keyCodes.enter or KeyboardUtils.isEscape event + if (event.key in ["Backspace", "Delete"] and inputElement.textContent.length == 0) or + event.key == "Enter" or KeyboardUtils.isEscape event UIComponentServer.postMessage name: "hideFindMode" - exitEventIsEnter: event.keyCode == keyCodes.enter + exitEventIsEnter: event.key == "Enter" exitEventIsEscape: KeyboardUtils.isEscape event - else if event.keyCode == keyCodes.upArrow + else if event.key == "ArrowUp" if rawQuery = FindModeHistory.getQuery findMode.historyIndex + 1 findMode.historyIndex += 1 findMode.partialQuery = findMode.rawQuery if findMode.historyIndex == 0 setTextInInputElement inputElement, rawQuery findMode.executeQuery() - else if event.keyCode == keyCodes.downArrow + else if event.key == "ArrowDown" findMode.historyIndex = Math.max -1, findMode.historyIndex - 1 rawQuery = if 0 <= findMode.historyIndex then FindModeHistory.getQuery findMode.historyIndex else findMode.partialQuery setTextInInputElement inputElement, rawQuery diff --git a/pages/vomnibar.coffee b/pages/vomnibar.coffee index 43db90c9..edd5fbc9 100644 --- a/pages/vomnibar.coffee +++ b/pages/vomnibar.coffee @@ -106,17 +106,17 @@ class VomnibarUI if (KeyboardUtils.isEscape(event)) return "dismiss" else if (key == "up" || - (event.shiftKey && event.keyCode == keyCodes.tab) || + (event.shiftKey && event.key == "Tab") || (event.ctrlKey && (key == "k" || key == "p"))) return "up" - else if (event.keyCode == keyCodes.tab && !event.shiftKey) + else if (event.key == "Tab" && !event.shiftKey) return "tab" else if (key == "down" || (event.ctrlKey && (key == "j" || key == "n"))) return "down" - else if (event.keyCode == keyCodes.enter) + else if (event.key == "Enter") return "enter" - else if event.keyCode == keyCodes.backspace || event.keyCode == keyCodes.deleteKey + else if event.key in ["Backspace", "Delete"] return "delete" null diff --git a/tests/dom_tests/dom_tests.coffee b/tests/dom_tests/dom_tests.coffee index cbf60532..5439e119 100644 --- a/tests/dom_tests/dom_tests.coffee +++ b/tests/dom_tests/dom_tests.coffee @@ -215,16 +215,16 @@ context "Test link hints for changing mode", should "change mode on shift", -> assert.equal "curr-tab", @linkHints.mode.name - sendKeyboardEvent "Shift", "keydown", keyCode: keyCodes.shiftKey + sendKeyboardEvent "Shift", "keydown" assert.equal "bg-tab", @linkHints.mode.name - sendKeyboardEvent "Shift", "keyup", keyCode: keyCodes.shiftKey + sendKeyboardEvent "Shift", "keyup" assert.equal "curr-tab", @linkHints.mode.name should "change mode on ctrl", -> assert.equal "curr-tab", @linkHints.mode.name - sendKeyboardEvent "Control", "keydown", keyCode: keyCodes.ctrlKey + sendKeyboardEvent "Control", "keydown" assert.equal "fg-tab", @linkHints.mode.name - sendKeyboardEvent "Control", "keyup", keyCode: keyCodes.ctrlKey + sendKeyboardEvent "Control", "keyup" assert.equal "curr-tab", @linkHints.mode.name context "Alphabetical link hints", @@ -419,9 +419,9 @@ context "Filtered link hints", should "use tab to select the active hint", -> sendKeyboardEvents "abc" assert.equal "8", @getActiveHintMarker() - sendKeyboardEvent "Tab", "keydown", keyCode: keyCodes.tab + sendKeyboardEvent "Tab", "keydown" assert.equal "7", @getActiveHintMarker() - sendKeyboardEvent "Tab", "keydown", keyCode: keyCodes.tab + sendKeyboardEvent "Tab", "keydown" assert.equal "9", @getActiveHintMarker() context "Input focus", @@ -608,7 +608,7 @@ context "Key mapping", should "cancel a prefix key on escape", -> sendKeyboardEvent "z" - sendKeyboardEvent "Escape", "keydown", keyCode: keyCodes.ESC + sendKeyboardEvent "Escape", "keydown" sendKeyboardEvent "p" assert.equal 0, @handlerCalledCount @@ -718,7 +718,7 @@ context "Insert mode", should "exit on escape", -> assert.isTrue @insertMode.modeIsActive - sendKeyboardEvent "Escape", "keydown", keyCode: keyCodes.ESC + sendKeyboardEvent "Escape", "keydown" assert.isFalse @insertMode.modeIsActive should "resume normal mode after leaving insert mode", -> @@ -783,7 +783,7 @@ context "Caret mode", assert.equal "I", getSelection() should "exit caret mode on escape", -> - sendKeyboardEvent "Escape", "keydown", keyCode: keyCodes.ESC + sendKeyboardEvent "Escape", "keydown" assert.equal "", getSelection() should "move caret with l and h", -> @@ -818,7 +818,7 @@ context "Caret mode", assert.equal "I", getSelection() sendKeyboardEvents "ww" assert.equal "a", getSelection() - sendKeyboardEvent "Escape", "keydown", keyCode: keyCodes.ESC + sendKeyboardEvent "Escape", "keydown" new VisualMode assert.equal "a", getSelection() @@ -933,14 +933,14 @@ context "Mode utilities", test = new Mode exitOnEscape: true assert.isTrue test.modeIsActive - sendKeyboardEvent "Escape", "keydown", keyCode: keyCodes.ESC + sendKeyboardEvent "Escape", "keydown" assert.isFalse test.modeIsActive should "not exit on escape if not enabled", -> test = new Mode exitOnEscape: false assert.isTrue test.modeIsActive - sendKeyboardEvent "Escape", "keydown", keyCode: keyCodes.ESC + sendKeyboardEvent "Escape", "keydown" assert.isTrue test.modeIsActive should "exit on blur", -> @@ -987,13 +987,13 @@ context "PostFindMode", assert.isFalse @postFindMode.modeIsActive should "enter insert mode on immediate escape", -> - sendKeyboardEvent "Escape", "keydown", keyCode: keyCodes.ESC + sendKeyboardEvent "Escape", "keydown" assert.equal null, commandCount assert.isFalse @postFindMode.modeIsActive should "not enter insert mode on subsequent escapes", -> sendKeyboardEvent "a" - sendKeyboardEvent "Escape", "keydown", keyCode: keyCodes.ESC + sendKeyboardEvent "Escape", "keydown" assert.isTrue @postFindMode.modeIsActive context "WaitForEnter", @@ -1005,14 +1005,14 @@ context "WaitForEnter", should "exit with success on Enter", -> assert.isTrue @waitForEnter.modeIsActive assert.isFalse @isSuccess? - sendKeyboardEvent "Enter", "keydown", keyCode: keyCodes.enter + sendKeyboardEvent "Enter", "keydown" assert.isFalse @waitForEnter.modeIsActive assert.isTrue @isSuccess? and @isSuccess == true should "exit without success on Escape", -> assert.isTrue @waitForEnter.modeIsActive assert.isFalse @isSuccess? - sendKeyboardEvent "Escape", "keydown", keyCode: keyCodes.ESC + sendKeyboardEvent "Escape", "keydown" assert.isFalse @waitForEnter.modeIsActive assert.isTrue @isSuccess? and @isSuccess == false |
