$sgttyb_t = 'C4 S';
sub cbreak {
&set_cbreak(1);
}
sub cooked {
&set_cbreak(0);
}
sub set_cbreak {
local($on) = @_;
require 'sizeof.ph';
require 'sys/ioctl.ph';
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;
|