diff --git a/pd/nw/pd_canvas.js b/pd/nw/pd_canvas.js
index 015280a6a3a8fedb0f3751b2311ff1f90e3b0a36..66703788384a84f96975f317ce3500721fcb28c1 100644
--- a/pd/nw/pd_canvas.js
+++ b/pd/nw/pd_canvas.js
@@ -800,7 +800,7 @@ var canvas_events = (function() {
         ascii_art: function() {
             set_edit_menu_modals(false);
             canvas_events.none();
-            document.addEventListener("keyup", events.check_ascii_art_state, false);
+            document.getElementById("ascii_art_text_area").addEventListener("input", events.check_ascii_art_state);
             state = "ascii_art";
         },
         register: function(n) {
diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js
index 41f9ca7136fb80f0cfc17eedda45441dd75e473c..3039a3b9c8de57e099dcf57a7695a4fee46a029f 100644
--- a/pd/nw/pdgui.js
+++ b/pd/nw/pdgui.js
@@ -1167,6 +1167,25 @@ function menu_quit() {
 
 exports.menu_quit = menu_quit;
 
+function ascii_entry_callback(textarea_state)
+{
+    var ascii_art = w.document.getElementById("ascii_art"),
+        ascii_art_text_area = w.document.getElementById("ascii_art_text_area");
+
+    if (textarea_state == 1) {
+        alert("hi");
+        ascii_art.style.setProperty("display", "inline");
+        ascii_art_text_area.focus();
+        ascii_art_text_area.select();
+        w.canvas_events.ascii_art();
+    } else {
+        ascii_art_text_area.value = "write your ascii art here";
+        ascii_art.style.setProperty("display", "none");
+        w.canvas_events[canvas_events.get_previous_state()]();
+    }
+
+}
+
 var nw_app_quit;
 
 function app_quit() {
diff --git a/pd/src/m_glob.c b/pd/src/m_glob.c
index b3ed14c9fe2315bc46b184112ffadfe20bfd95c1..6fe7253ebe111e8e6b12b2174739f0766da4e487 100644
--- a/pd/src/m_glob.c
+++ b/pd/src/m_glob.c
@@ -101,6 +101,12 @@ static void glob_gui_properties(t_pd *dummy)
         sys_autopatch_yoffset);
 }
 
+//To enter or show ascii_art
+extern void glob_ascii_entry(int textarea_state)
+{
+    gui_vmess("ascii_entry_callback", textarea_state);
+}
+
 // ths one lives inside g_editor so that it can access the clipboard
 extern void glob_clipboard_text(t_pd *dummy, float f);
 
@@ -193,6 +199,8 @@ void glob_init(void)
         gensym("add-recent-file"), A_SYMBOL, 0);
     class_addmethod(glob_pdobject, (t_method)glob_clear_recent_files,
         gensym("clear-recent-files"), 0);
+    class_addmethod(glob_pdobject, (t_method)glob_ascii_entry,
+        gensym("toggle-ascii-entry"), 0);
 #ifdef UNIX
     class_addmethod(glob_pdobject, (t_method)glob_watchdog,
         gensym("watchdog"), 0);