# Put this file into ~/.fgfs/Nasal/, *not* into $FG_ROOT/Nasal/! var state = 0; var text = nil; setlistener("/devices/status/keyboard/event", func(event) { #debug.tree(event); if (!event.getNode("pressed").getValue()) return; var key = event.getNode("key").getValue(); if (state == 1) { if (key == `\n` or key == `\r`) { screen.log.write(text); state = 0; } elsif (key == 27) { # escape -> cancel state = 0; } elsif (key == 8) { # backspace text = substr(text, 0, size(text) - 1); } else { text ~= chr(key); } gui.popupTip(text, 2); } elsif (key == `~`) { text = ""; state = 1; gui.popupTip("> ", 2); } else { return; # pass key event } event.getNode("key").setValue(0); # drop key event });