青山です。

入力も復帰するようにしました。slsig_block_signals を指定しているスクリ
プトは、これをコメントアウトしてシグナルを有効にする必要があります。
(サンプルの smgtest.rb のマウステスト等)

この程度でサンプルは動いているようですが、slkp_getkey 以外の入力を扱う
部分もすべて C-z のチェックを入れる方がいいでしょうね。

(slanglib が C-z も含めてすべての入力を取ってしまうようで、これをやら
ないとシグナルが飛んで来ません。)


--- slmodule.c.org	Sat Dec  4 18:54:05 1999
+++ slmodule.c	Mon Dec  6 23:44:53 1999
@@ -293,7 +293,10 @@
 static VALUE
 slkp_getkey(void)
 {
-   return INT2NUM(SLkp_getkey());
+   int c;
+   while ((c = SLkp_getkey()) == 26)
+     kill (0, SIGTSTP);
+   return INT2NUM(c);
 }
 
 static VALUE
@@ -488,7 +491,17 @@
 #ifdef SIGTSTP
 static void sigtstp_handler (int sig)
 {
-   reset_exit (sig);
+   SLsmg_suspend_smg ();
+   kill (0, SIGSTOP);
+}
+#endif
+
+#ifdef SIGCONT
+static void sigcont_handler (int sig)
+{
+   SLsmg_resume_smg ();
+   SLang_reset_tty ();
+   SLang_init_tty (-1, 0, 1);
 }
 #endif
 
@@ -502,13 +515,14 @@
 #define ruby_signal(sig,handle) posix_signal((sig),(handle))
 static void init_signals (void)
 {
-#if 0
 #ifdef SIGTSTP
    SLsignal (SIGTSTP, sigtstp_handler);
 #endif
+#ifdef SIGCONT
+   SLsignal (SIGCONT, sigcont_handler);
+#endif
 #ifdef SIGINT
    SLsignal (SIGINT, sigint_handler);
-#endif
 #endif
 #ifdef SIGWINCH
    SLsignal_intr (SIGWINCH, sig_winch_handler);


-- 
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>