How terminal works. Part 1: Xterm, user input (2021)
kevroletin.github.io
kevroletin.github.io
The terminal protocol is broken in fairly fundamental ways (see: How do I get an event for <shift> key up/down by itself? How do I distinguish Esc by itself from Esc combined with something else)
A lot of modern things have adopted the Kitty extensions in order to solve this: See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/
[0]: https://learn.microsoft.com/en-us/windows/console/console-fu...
As far as standards go it is a fairly clean and easy to implement one. (That is the reason for its enduring popularity.)
Source: wrote a terminal emulator once. Turned out to be not that difficult. We just need to agree on an xterm-compatible subset of functionality and throw away the rest, which nobody ever uses anyways.
Your complaints are just aesthetic complaints, the terminal isn't supposed to be a universal GUI toolkit.
How do I drive a screw with a hammer? Badly. It doesn't make hammer a bad tool though.
Terminals are a simple tool. The inputs and outputs are lines of text. If your application doesn't fit that model and needs keypress events then terminal is simply the wrong tool for the job.
If the terminal is the wrong tool, then give example of the right tool.
Dialog boxes, menus, and views are concepts that are more fitted to GUIs. And as such the right tool these days would be Wayland. For example, you get native keyboard scancode events and XKB keymaps, allowing far better input handling capabilities than any layering of hacks on top ANSI escape codes ever can.
The whole point of terminals is that they are simple, text based, and as such interoperable and standardized. ANSI escape code extensions are decidedly not text nor simple, and often very non-interoperable to varying degrees. As such they are pretty antithetical to the whole idea of terminals.
When I ssh home, I would prefer a bloated TUI in ssh console and not do X forwarding or VNC. In fact, I prefer a TUI even when I'm at home.
rips bong
They were removed from (at least) FreeBSD sometime in the 2.x series I believe.
https://www.ibm.com/docs/en/aix/7.1?topic=s-stty-command#stt...
xcase Echoes uppercase characters on input, and displays uppercase characters on output with a preceding \ (backslash).
iuclc Maps uppercase alphabetic characters to lowercase.
olcuc Maps lowercase alphabetic characters to uppercase on output.
Solaris (Illumos) source code is consistent with this.
So for an upper-case only keyboard, uppercase letters are lowercase. To type an uppercase letter, precede it with a \. The tty layer handles the conversion so programs don't know or care what you're actually typing -- they just read (and write) normal upper and lower case characters.