don't allow conflicting key bindings
use one callback to listen to controller changes
swap keys when a conflict occurs
update compiled javascript
add some todos