1$sgttyb_t = 'C4 S'; 2 3sub cbreak { 4 &set_cbreak(1); 5} 6 7sub cooked { 8 &set_cbreak(0); 9} 10 11sub set_cbreak { 12 local($on) = @_; 13 14 require './sys/ioctl.pl'; 15 16 ioctl(STDIN,$TIOCGETP,$sgttyb) 17 || die "Can't ioctl TIOCGETP: $!"; 18 19 @ary = unpack($sgttyb_t,$sgttyb); 20 if ($on) { 21 $ary[4] |= $CBREAK; 22 $ary[4] &= ~$ECHO; 23 } else { 24 $ary[4] &= ~$CBREAK; 25 $ary[4] |= $ECHO; 26 } 27 $sgttyb = pack($sgttyb_t,@ary); 28 ioctl(STDIN,$TIOCSETP,$sgttyb) 29 || die "Can't ioctl TIOCSETP: $!"; 30 31} 32 331; 34