IMHO, a maneira mais simples de escrever um aplicativo como TUI é usar nurses .
"New Curses" é uma biblioteca que abstrai o design da TUI dos detalhes do dispositivo subjacente. Todo o software que você citou usa ncurses para renderizar sua interface.
Quando você clica em um emulador de terminal (por exemplo, xterm, gnome-term, etc), o emulador de terminal traduz o clique em uma sequência de Códigos de escape ANSI . Essas seqüências são lidas e traduzidas em eventos pela biblioteca ncurses.
Você pode encontrar um exemplo no Stack Overflow: Eventos de movimento do mouse em NCurses