1+ mapKeyRegistry = {}
2+ # NOTE: "?" here for the tests.
3+ Utils ? .monitorChromeStorage " mapKeyRegistry" , (value ) => mapKeyRegistry = value
4+
15KeyboardUtils =
26 keyCodes :
37 { ESC : 27 , backspace : 8 , deleteKey : 46 , enter : 13 , ctrlEnter : 10 , space : 32 , shiftKey : 16 , ctrlKey : 17 , f1 : 112 ,
@@ -83,15 +87,11 @@ KeyboardUtils =
8387 isPrimaryModifierKey : (event ) -> if (@platform == " Mac" ) then event .metaKey else event .ctrlKey
8488
8589 isEscape : do ->
86- mapKeyRegistry = {}
87- # NOTE: "?" here for the tests.
88- Utils ? .monitorChromeStorage " mapKeyRegistry" , (value ) => mapKeyRegistry = value
8990
9091 # TODO(smblott) Change this to use event.key.
9192 (event ) ->
9293 event .keyCode == @keyCodes .ESC || do =>
93- keyChar = @ getKeyCharString event, true
94- keyChar = mapKeyRegistry[keyChar] ? keyChar
94+ keyChar = @ getKeyCharString event
9595 # <c-[> is mapped to Escape in Vim by default.
9696 keyChar == " <c-[>"
9797
@@ -108,27 +108,31 @@ KeyboardUtils =
108108
109109 # Return the Vimium key representation for this keyboard event. Return a falsy value (the empty string or
110110 # undefined) when no Vimium representation is appropriate.
111- getKeyCharString : (event , allKeydownEvents = false ) ->
111+ getKeyCharString : (event ) ->
112112 switch event .type
113113 when " keypress"
114114 # Ignore modifier keys by themselves.
115115 if 31 < event .keyCode
116116 String .fromCharCode event .charCode
117117
118+ # TODO(smblott). Currently all (almost?) keyhandling is being done on keydown. All legacy code related
119+ # to key handling on keypress should be reviewed and probably removed. This is not being done right now
120+ # (2017-03-22) because it is better to wait until we've verified that the change to keydown is indeed
121+ # correct and reliable.
118122 when " keydown"
119- # Handle special keys and normal input keys with modifiers being pressed.
120- keyChar = @ getKeyChar event
121- if 1 < keyChar .length or (keyChar .length == 1 and (event .metaKey or event .ctrlKey or event .altKey )) or allKeydownEvents
123+ if keyChar = @ getKeyChar event
122124 modifiers = []
123125
124- keyChar = keyChar .toUpperCase () if event .shiftKey
126+ keyChar = keyChar .toUpperCase () if event .shiftKey and keyChar . length == 1
125127 # These must be in alphabetical order (to match the sorted modifier order in Commands.normalizeKey).
126128 modifiers .push " a" if event .altKey
127129 modifiers .push " c" if event .ctrlKey
128130 modifiers .push " m" if event .metaKey
129131
130132 keyChar = [modifiers... , keyChar].join " -"
131- if 1 < keyChar .length then " <#{ keyChar} >" else keyChar
133+ keyChar = " <#{ keyChar} >" if 1 < keyChar .length
134+ keyChar = mapKeyRegistry[keyChar] ? keyChar
135+ keyChar
132136
133137KeyboardUtils .init ()
134138
0 commit comments