diff --git a/src/Cockpit/cockpit.cxx b/src/Cockpit/cockpit.cxx
index 549a1f815..8219a0aeb 100644
--- a/src/Cockpit/cockpit.cxx
+++ b/src/Cockpit/cockpit.cxx
@@ -718,13 +718,11 @@ void fgCockpitUpdate( void ) {
 
     int iwidth   = xsize_node->getIntValue();
     int iheight  = ysize_node->getIntValue();
-    float width  = iwidth;
-    // float height = iheight;
 
 				// FIXME: inefficient
     if ( hud_visibility_node->getBoolValue() ) {
         // This will check the global hud linked list pointer.
-        // If these is anything to draw it will.
+        // If there is anything to draw it will.
         fgUpdateHUD();
     }
 
diff --git a/src/Cockpit/panel_io.cxx b/src/Cockpit/panel_io.cxx
index a8ae3f882..fe4ae4f02 100644
--- a/src/Cockpit/panel_io.cxx
+++ b/src/Cockpit/panel_io.cxx
@@ -171,6 +171,19 @@ readConditions (SGConditional *component, const SGPropertyNode *node)
 static FGPanelAction *
 readAction (const SGPropertyNode * node, float w_scale, float h_scale)
 {
+  unsigned int i, j;
+  SGPropertyNode *binding;
+  vector<SGPropertyNode_ptr>bindings = node->getChildren("binding");
+
+  // button-less actions are fired initially, then fogotten
+  if (!node->hasValue("button")) {
+    for (i = 0; i < bindings.size(); i++) {
+      FGBinding b(bindings[i]);
+      b.fire();
+    }
+    return 0;
+  }
+
   string name = node->getStringValue("name");
 
   int button = node->getIntValue("button");
@@ -182,11 +195,8 @@ readAction (const SGPropertyNode * node, float w_scale, float h_scale)
 
   FGPanelAction * action = new FGPanelAction(button, x, y, w, h, repeatable);
 
-  vector<SGPropertyNode_ptr>bindings = node->getChildren("binding");
   SGPropertyNode * dest = fgGetNode("/sim/bindings/panel", true);
 
-  SGPropertyNode *binding;
-  unsigned int i, j;
   for (i = 0; i < bindings.size(); i++) {
     SG_LOG(SG_INPUT, SG_INFO, "Reading binding "
       << bindings[i]->getStringValue("command"));