           input = input.setIn(['controllers' ,e.get('tag'), e.get('control')], isDown)
     input
 
+createKeyboardSignal = (postOffice, mappings) ->
+  mbox = postOffice.newMailbox()
+  KeyboardController3.bindKeys mbox.address, mappings
+  return mbox.signal
+
+createGamepadSignal = (postOffice, mappings) ->
+  mbox = postOffice.newMailbox()
+  GamepadController2.bindButtons mbox.address, mappings
+  return mbox.signal
+
 class MetroidSignalsDelegate
   constructor: ({componentInspector,@devUI,@systemLogInspector}) ->
 
     @postOffice = new PostOffice()
 
-    @playerControllerMailbox = @postOffice.newMailbox()
-    KeyboardController3.bindKeys @playerControllerMailbox.address,
+    # @playerControllerMailbox = @postOffice.newMailbox()
+    # KeyboardController3.bindKeys @playerControllerMailbox.address,
+    @player1KbController = createKeyboardSignal @postOffice,
       "right": 'right'
       "left": 'left'
       "up": 'up'

      "s": 'action1'
      "enter": 'start'

    @playerControllerGpMailbox = @postOffice.newMailbox()
    GamepadController2.bindButtons @playerControllerGpMailbox.address,
      "DPAD_RIGHT": 'right'
      "DPAD_LEFT": 'left'
      "DPAD_UP": 'up'

      "FACE_3": 'action1'
      "START_FORWARD": 'start'

    # @adminControllerMailbox = @postOffice.newMailbox()
    # KeyboardController3.bindKeys @adminControllerMailbox.address,
    @adminController = createKeyboardSignal @postOffice,
      "g": 'toggle_gamepad'
      "b": 'toggle_bgm'
      "p": 'toggle_pause'
