Converts keystrokes with alpha chars using shift

e.g. cmd-shift-l would be converted to cmd-L
This commit is contained in:
probablycorey
2014-03-04 17:04:06 -08:00
parent 33f0ca3042
commit 4aa73968f0
2 changed files with 24 additions and 1 deletions

View File

@@ -254,6 +254,22 @@ describe "Keymap", ->
it "favors the more specific complete match", ->
describe ".bindKeys(name, selector, bindings)", ->
it "normalizes bindings that use shift with lower case alpha chars", ->
fooHandler = jasmine.createSpy('fooHandler')
fragment.on 'foo', fooHandler
keymap.bindKeys 'name', '*', 'ctrl-shift-l': 'foo'
result = keymap.handleKeyEvent(keydownEvent('l', ctrlKey: true, altKey: false, shiftKey: true, target: fragment[0]))
expect(result).toBe(false)
expect(fooHandler).toHaveBeenCalled()
it "normalizes bindings that use shift with upper case alpha chars", ->
fooHandler = jasmine.createSpy('fooHandler')
fragment.on 'foo', fooHandler
keymap.bindKeys 'name', '*', 'ctrl-shift-L': 'foo'
result = keymap.handleKeyEvent(keydownEvent('l', ctrlKey: true, altKey: false, shiftKey: true, target: fragment[0]))
expect(result).toBe(false)
expect(fooHandler).toHaveBeenCalled()
it "normalizes the key patterns in the hash to put the modifiers in alphabetical order", ->
fooHandler = jasmine.createSpy('fooHandler')
fragment.on 'foo', fooHandler

View File

@@ -21,7 +21,14 @@ class KeyBinding
keys = @parseKeystroke(keystroke)
modifiers = keys[0...-1]
modifiers.sort()
[modifiers..., _.last(keys)].join('-')
key = _.last(keys)
# Uppercase alpha chars if the shift modifer is pressed
if 'shift' in modifiers and /^[a-z]$/i.test(key)
modifiers = _.without(modifiers, 'shift')
key = key.toUpperCase()
[modifiers..., key].join('-')
normalizedKeystroke.join(' ')
@parseKeystroke: (keystroke) ->