On 09/08/2017 11:41 PM, ToddAndMargo wrote:
Hi All!

I am trying to convert some Perl 5 code to Perl 6.

What do I use in place of
     use Term::ReadKey qw ( ReadKey ReadMode );

I am trying to convert the following:

<code>
use Term::ReadKey qw ( ReadKey ReadMode );

sub DumpKeyboard () {
    # Dump the contents of the keyboard buffer, if any
    my $Trash;

    ReadMode 4; # Turn off controls keys
    while  ( defined ( $Trash = ReadKey ( -1, \*STDIN ) ) ) {
       # print "\$Trash = $Trash\n";
    }
    ReadMode 1; # Reset tty mode before exiting
}

</code>



Fedora Linux 26 and Scientific Linux 7.3

So far, I have:

<code>
#!/usr/bin/env perl6
# Pause.pm6

use Term::termios;

# reference: https://github.com/krunen/term-termios
# # zef install Term::termios   (as root)

# `man termios` for flags

sub Pause () is export {

   # Save the previous attrs
   my $saved_termios := Term::termios.new(fd => 1).getattr;

   # Get the existing attrs in order to modify them
   my $termios := Term::termios.new(fd => 1).getattr;

   # Set the tty to raw mode
   $termios.makeraw;

   # You could also do the same in the old-fashioned way
   $termios.unset_iflags(<BRKINT ICRNL ISTRIP IXON>);
   $termios.set_oflags(<ONLCR>);
   $termios.set_cflags(<CS8>);
   $termios.unset_lflags(<ECHO ICANON IEXTEN ISIG>);

   # Set the modified atributes, delayed until the buffer is emptied
   $termios.setattr(:DRAIN);

   print "\n";
   print "Press any key to continue...";

   # Loop on characters from STDIN
   # loop {
   #    my $c = $*IN.getc;
   #    print "got: " ~ $c.ord ~ "\r\n";
   #    last if $c eq 'q';
   # }

   my $c = $*IN.getc;

   # Restore the saved, previous attributes before exit
   $saved_termios.setattr(:DRAIN);
   print "\n";
}

</code>

But it stacks up Carriage Returns (enter key).  And it just
acts weird.

And "man termios" is not showing any of the flags he is using.

:'(

What am I doing wrong?

-T


--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Computers are like air conditioners.
They malfunction when you open windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Reply via email to