 
     modifiers = []
     key = null
-
     for k in keys
       if modifier = @modifierKeys[k.toLowerCase()]
-        modifiers.push modifier unless modifier == @modifierKeys['shift'] # Shift is implied? YES
+        modifiers.push modifier
       else if key
         throw "#{@name}: #{binding} specifies TWO keys, we don't handle that yet."
       else if namedKey = @namedKeys[k.toLowerCase()]
         key = namedKey
+      else if shiftedKey = @shiftedKeys[k.charCodeAt 0]
+        if not _.include modifiers, @modifierKeys.shift
+          modifiers.push @modifierKeys.shift
+        key = k.toLowerCase().charCodeAt 0
       else if k.length > 1
         throw "#{@name}: #{binding} uses an unknown key #{k}."
       else

    '[': 219
    ']': 221
    '\\': 220


  load: (path) ->
    try
#       Watcher.watch path, =>
#         # Should we keep track of which file bindings are associated with?
#         # That way we could clear bindings when the file is changed
#         # or deleted. I think the answer is yes, but I don't want to
#         # do this right now.
#         console.log "#{@name}: Reloading #{path}"
#         @load path

      json = CoffeeScript.eval "return " + (fs.read path)
      # Iterate in reverse order scopes are declared.
