txt: ## dist_zef-krunen-Term-termios.md
  # Term::termios
  
  termios routines for Raku
  
  ```
  use Term::termios;
  
  # 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);
  
  # Loop on characters from STDIN
  loop {
      # Read single bytes until the buffer can be decoded as UTF-8.
      my $buf = Buf.new;
      repeat {
          $buf.push($*IN.read(1));
      } until try my $c = $buf.decode;
      print "got: " ~ $c.ord ~ "\r\n";
      last if $c eq 'q';
  }
  
  # Restore the saved, previous attributes before exit
  $saved_termios.setattr(:DRAIN);
  
  ```
  
  See the manpage termios(3) for information about the flags.
  