[fpc-pascal] Unit crt
Rainer Stratmann
rainerstratmann at t-online.de
Wed Sep 23 11:57:09 CEST 2015
Does it have something to do with the output of Linux commands?
Now the outputs are:
Message 1
Message 2
Message 3
How is it possible to get the normal behaviour?
Message 1
Message 2
Message 3
On Wednesday 23 September 2015 11:46:15 you wrote:
> On Tue, 22 Sep 2015, Rainer Stratmann wrote:
> > What does SetRawMode do?
>
> puts the terminal in RAW mode.
> This disables usual terminal tricks such as translating CTRL-C to SIGINT
> etc.
>
> A terminal does quite some things 'behind your back', which are not
> desirable for the CRT unit.
>
> Michael.
>
> > var
> >
> > OldIO : termio.TermIos;
> > inputRaw, outputRaw: boolean;
> >
> > procedure saveRawSettings(const tio: termio.termios);
> > Begin
> >
> > with tio do
> >
> > begin
> >
> > inputRaw :=
> >
> > ((c_iflag and (IGNBRK or BRKINT or PARMRK or ISTRIP or
> >
> > INLCR or IGNCR or ICRNL or IXON)) = 0) and
> >
> > ((c_lflag and (ECHO or ECHONL or ICANON or ISIG or IEXTEN)) = 0);
> >
> > outPutRaw :=
> >
> > ((c_oflag and OPOST) = 0) and
> > ((c_cflag and (CSIZE or PARENB)) = 0) and
> > ((c_cflag and CS8) <> 0);
> >
> > end;
> >
> > end;
> >
> > procedure restoreRawSettings(tio: termio.termios);
> > begin
> >
> > with tio do
> >
> > begin
> >
> > if inputRaw then
> >
> > begin
> >
> > c_iflag := c_iflag and (not (IGNBRK or BRKINT or PARMRK or
> > ISTRIP or
> >
> > INLCR or IGNCR or ICRNL or IXON));
> >
> > c_lflag := c_lflag and
> >
> > (not (ECHO or ECHONL or ICANON or ISIG or IEXTEN));
> >
> > end;
> >
> > if outPutRaw then
> >
> > begin
> >
> > c_oflag := c_oflag and not(OPOST);
> > c_cflag := c_cflag and not(CSIZE or PARENB) or CS8;
> >
> > end;
> >
> > end;
> >
> > end;
> >
> >
> > Procedure SetRawMode(b:boolean);
> > Var
> >
> > Tio : Termios;
> >
> > Begin
> >
> > if b then
> >
> > begin
> >
> > TCGetAttr(1,Tio);
> > SaveRawSettings(Tio);
> > OldIO:=Tio;
> > CFMakeRaw(Tio);
> >
> > end
> >
> > else
> >
> > begin
> >
> > RestoreRawSettings(OldIO);
> > Tio:=OldIO;
> >
> > end;
> >
> > TCSetAttr(1,TCSANOW,Tio);
> >
> > End;
> >
> > _______________________________________________
> > fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> > http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
More information about the fpc-pascal
mailing list