35 lines
574 B
Perl
35 lines
574 B
Perl
|
$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;
|