The control flow is necessary in a terminal because you have two asynchronous process, one in the terminal and another in the computer, comunicate between them through a serial line using buffers in every side. When one of this buffer is full, then it must signal to the other process because in other case some data can be lost.
When you have a terminal emulator, it implies a pseudo-terminal kernel device, the comunication is between two synchronous process, because they are in the same machine and they are communicate through a share queue where one process will be blocked when there is no more space, so the control flow is not needed. After the last patch I submitted, we also can comunicate through a serial line, but in this case the kernel will do the XON/XOFF work (if it is enabled with stty ixon), and st will not see these characters ever. It doesn't make sense to implement XON/XOFF in st even in the case of the serial line and stty -ixon because st has no control and no knoledge about the status of the UART FIFO, so it is better let to the kernel do this work (and even better, use better control flow like RTS/CTS or DTR/DSR). If you are interested in this kind of topics I recomend you to read [1], [2], [3] and [4]. Regards, [1] http://www.tldp.org/HOWTO/Text-Terminal-HOWTO.htm [2] http://www.tldp.org/HOWTO/Serial-HOWTO.html [3] http://www.tldp.org/HOWTO/PPP-HOWTO/modem.html [4] http://tldp.org/HOWTO/Modem-HOWTO.html