$sgttyb_t = 'C4 S';
sub cbreak {
&set_cbreak(1);
}
sub cooked {
&set_cbreak(0);
}
sub set_cbreak {
local($on) = @_;
require 'sys/ioctl.pl';
ioctl(STDIN,$TIOCGETP,$sgttyb)
|| die "Can't ioctl TIOCGETP: $!";
@ary = unpack($sgttyb_t,$sgttyb);
if ($on) {
$ary[4] |= $CBREAK;
$ary[4] &= ~$ECHO;
} else {
$ary[4] &= ~$CBREAK;
$ary[4] |= $ECHO;
}
$sgttyb = pack($sgttyb_t,@ary);
ioctl(STDIN,$TIOCSETP,$sgttyb)
|| die "Can't ioctl TIOCSETP: $!";
}
1;
|