develooper Front page | perl.perl6.users | Postings from September 2017

Re: What is P6 for P5 `use Term::ReadKey`?

Thread Previous | Thread Next
From:
ToddAndMargo
Date:
September 9, 2017 07:08
Subject:
Re: What is P6 for P5 `use Term::ReadKey`?
Message ID:
3d5f0dc2-4b33-8b47-b18b-fbe9eda62689@zoho.com
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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About