         @dstUnbindCallbacks[dstPort][dstDevice][dstButton] = unbindInputDevice
         @srcUnbindCallbacks[srcDevice][srcButton] = unbindInputDevice
         @controls[dstPort][dstDevice][dstButton] =
-            device: srcDevice
-            button: srcButton
-            name: @binder.bindControl srcDevice, srcButton, useInputDevice
+            "device": srcDevice
+            "button": srcButton
+            "name": @binder.bindControl srcDevice, srcButton, useInputDevice
 
     unbindInputDevice: (dstPort, dstDevice, dstButton, srcDevice, srcButton) ->
         logger.info "Unbinding '#{srcButton}' of '#{srcDevice}' and '#{dstDevice}' on port #{dstPort}"

        for dstPort, dstDevices of controls when dstDevices
            for dstDevice, dstButtons of dstDevices when dstButtons
                for dstButton, srcMapping of dstButtons when srcMapping
                    @bindControl dstPort, dstDevice, dstButton, srcMapping.device, srcMapping.button

    bindControl: (dstPort, dstDevice, dstButton, srcDevice, srcButton, unbindCallback) ->
        @unbindControl   dstPort, dstDevice, dstButton, srcDevice, srcButton

        @srcUnbindCallbacks[srcDevice][srcButton]?()

    getControl: (dstPort, dstDevice, dstButton) ->
        @controls[dstPort][dstDevice][dstButton]?["name"]

    bindInputDevice: (dstPort, dstDevice, dstButton, srcDevice, srcButton, unbindCallback) ->
        logger.info "Binding '#{srcButton}' of '#{srcDevice}' to '#{dstDevice}' on port #{dstPort}"
