aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/keyboard_utils.coffee22
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/keyboard_utils.coffee b/lib/keyboard_utils.coffee
index 10b5f46e..e3fa6007 100644
--- a/lib/keyboard_utils.coffee
+++ b/lib/keyboard_utils.coffee
@@ -4,7 +4,7 @@ KeyboardUtils =
f12: 123, tab: 9, downArrow: 40, upArrow: 38 }
keyNames:
- { 37: "left", 38: "up", 39: "right", 40: "down" }
+ { 37: "left", 38: "up", 39: "right", 40: "down", 32: "space" }
# This is a mapping of the incorrect keyIdentifiers generated by Webkit on Windows during keydown events to
# the correct identifiers, which are correctly generated on Mac. We require this mapping to properly handle
@@ -30,7 +30,27 @@ KeyboardUtils =
else
@platform = "Windows"
+ # We are migrating from using event.keyIdentifier to using event.key. For some period of time, we must
+ # support both. This wrapper can be removed once Chrome 52 is considered too old to support.
getKeyChar: (event) ->
+ if event.key?
+ @getKeyCharUsingKey event
+ else
+ @getKeyCharUsingKeyIdentifier event
+
+ getKeyCharUsingKey: (event) ->
+ if event.keyCode of @keyNames
+ @keyNames[event.keyCode]
+ else if event.key.length == 1
+ event.key
+ else if event.key.length == 2 and "F1" <= event.key <= "F9"
+ event.key.toLowerCase() # F1 to F9.
+ else if event.key.length == 3 and "F10" <= event.key <= "F12"
+ event.key.toLowerCase() # F10 to F12.
+ else
+ ""
+
+ getKeyCharUsingKeyIdentifier: (event) ->
# Not a letter
if (event.keyIdentifier.slice(0, 2) != "U+")
return @keyNames[event.keyCode] if (@keyNames[event.keyCode])