release 1.12.1
[descalc.git] / 04_disp_slang.pm
similarity index 67%
rename from 06_disp_slang.pm
rename to 04_disp_slang.pm
index 4fa569d2f04be14a62f3b9b205c5acf46d876001..90dccf6340747c1f3d5dce4a47577a8133cefa89 100644 (file)
@@ -1,11 +1,13 @@
 # s-lang output for DCT, by Shiar
 
+# 1.12.0 200411032145 - define main loop
+#                     - use slang key reading functions
 # 1.11.0 200410291300 - 
 
 use strict;
 use warnings;
 
-use Term::Slang qw(:common :screen :term :CONSTANTS);
+use Term::Slang qw(:all);
 
 push @{$hook{init}}, sub {
        SLtt_get_terminfo and exit;
@@ -26,8 +28,8 @@ push @{$hook{showerror}}, sub {
        SLsmg_write_string(" $error ");
        SLsmg_refresh;
 
-       ReadKey; # wait for confirm
-       1 while defined ReadKey(-1); # clear key buffer
+       SLang_getkey;  # wait for confirm
+       SLang_getkey while SLang_input_pending(0)==1; # clear key buffer
 }; # showerror
 
 push @{$hook{showstack}}, sub {
@@ -53,9 +55,22 @@ push @{$hook{showentry}}, sub {
        SLsmg_refresh;
 }; # showentry
 
+$hook{main} = sub {
+       while (1) {
+               draw();
+
+               my $key = chr SLang_getkey;  # wait for user input
+               if ($key eq chr 27) {
+                       $key .= chr SLang_getkey while SLang_input_pending(0)==1;  # read additional keys
+               } # escape sequence
+#              error(join " ", map ord, split //, $key); #debug
+               onkey($key);
+       } # input loop
+}; # main
+
 return {
        author  => "Shiar",
        title   => "slang output",
-       version => "1.11",
+       version => "1.12",
 };