3 #include <lunaix/process.h>
5 #define CTRL_MNEMO(chr) (chr - 'A' + 1)
8 __ansi_actcontrol(struct term* termdev, char chr)
10 struct linebuffer* lbuf = &termdev->line;
13 case CTRL_MNEMO('D'): // EOF
16 case CTRL_MNEMO('C'): // INTR
17 signal_send(termdev->fggrp, SIGINT);
21 termdev->line.ptr = 0;
25 return line_put_next(lbuf, chr, -1);
27 case CTRL_MNEMO('Q'): // QUIT
28 signal_send(termdev->fggrp, SIGKILL);
31 case CTRL_MNEMO('Z'): // SUSP
32 signal_send(termdev->fggrp, SIGSTOP);
37 line_put_next(lbuf, '^', 0);
43 return line_put_next(lbuf, chr, 0);
47 ansi_lcntl_process(struct term* termdev, char* line, size_t len)
50 while (i < len && __ansi_actcontrol(termdev, line[i])) {
57 struct term_lcntl ansi_line_controller = { .apply = ansi_lcntl_process };