diff --git a/Nasal/globals.nas b/Nasal/globals.nas
index bf9f6ace2..4ec8ea970 100644
--- a/Nasal/globals.nas
+++ b/Nasal/globals.nas
@@ -4,7 +4,7 @@
 #
 isa = func {
     obj = arg[0]; class = arg[1];
-    if(!contains(obj, "parents")) { return 0; }
+    if(obj == nil or !contains(obj, "parents")) { return 0; }
     foreach(c; obj.parents) {
         if(c == class)     { return 1; }
         elsif(isa(obj, c)) { return 1; }
@@ -19,9 +19,9 @@ isa = func {
 # string, in which case it specifies a path in the global property
 # tree.
 #
-fgcommand = func {
-    if(isa(arg[1], props.Node)) { arg[1] = arg[1]._g }
-    _fgcommand(arg[0], arg[1]);
+fgcommand = func(cmd, node=nil) {
+    if(isa(node, props.Node)) node = node._g;
+    _fgcommand(cmd, node);
 }
 
 ##
diff --git a/keyboard.xml b/keyboard.xml
index 48e313bf0..e7f979327 100644
--- a/keyboard.xml
+++ b/keyboard.xml
@@ -981,7 +981,15 @@ calculated by adding 256 to the GLUT key value in glut.h.
   <name>F3</name>
   <desc>Capture screen.</desc>
   <binding>
-   <command>screen-capture</command>
+   <command>nasal</command>
+   <script>
+     fgcommand("screen-capture");
+     var file = getprop("/sim/last-screenshot");
+     if(file == "")
+         gui.popupTip("Error writing screenshot");
+     else
+         gui.popupTip("Screenshot written to " ~ file);
+   </script>
   </binding>
   <mod-shift>
    <desc>Load panel.</desc>