aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content_scripts/link_hints.coffee28
-rw-r--r--content_scripts/mode_visual.coffee2
-rw-r--r--content_scripts/vimium_frontend.coffee4
-rw-r--r--lib/keyboard_utils.coffee15
-rw-r--r--pages/hud.coffee10
-rw-r--r--pages/vomnibar.coffee8
-rw-r--r--tests/dom_tests/dom_tests.coffee32
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