aboutsummaryrefslogtreecommitdiffstats
path: root/lib/keyboard_utils.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'lib/keyboard_utils.coffee')
-rw-r--r--lib/keyboard_utils.coffee29
1 files changed, 12 insertions, 17 deletions
diff --git a/lib/keyboard_utils.coffee b/lib/keyboard_utils.coffee
index e3fa6007..364ab949 100644
--- a/lib/keyboard_utils.coffee
+++ b/lib/keyboard_utils.coffee
@@ -96,23 +96,18 @@ KeyboardUtils =
String.fromCharCode event.charCode
when "keydown"
- # handle special keys, and normal input keys with modifiers being pressed. don't handle shiftKey alone (to
- # avoid / being interpreted as ?
- if (((event.metaKey || event.ctrlKey || event.altKey) && event.keyCode > 31) || (
- # TODO(philc): some events don't have a keyidentifier. How is that possible?
- event.keyIdentifier && event.keyIdentifier.slice(0, 2) != "U+"))
- keyChar = @getKeyChar event
- # Again, ignore just modifiers. Maybe this should replace the keyCode>31 condition.
- if 0 < keyChar.length
- modifiers = []
-
- keyChar = keyChar.toUpperCase() if event.shiftKey
- modifiers.push "m" if event.metaKey
- modifiers.push "c" if event.ctrlKey
- modifiers.push "a" if event.altKey
-
- keyChar = [modifiers..., keyChar].join "-"
- if 1 < keyChar.length then "<#{keyChar}>" else keyChar
+ # Handle special keys and normal input keys with modifiers being pressed.
+ keyChar = @getKeyChar event
+ if 1 < keyChar.length or (keyChar.length == 1 and (event.metaKey or event.ctrlKey or event.altKey))
+ modifiers = []
+
+ keyChar = keyChar.toUpperCase() if event.shiftKey
+ modifiers.push "m" if event.metaKey
+ modifiers.push "c" if event.ctrlKey
+ modifiers.push "a" if event.altKey
+
+ keyChar = [modifiers..., keyChar].join "-"
+ if 1 < keyChar.length then "<#{keyChar}>" else keyChar
KeyboardUtils.init()