4 ms·
How terminal works. Part 1: Xterm, user input (2021)
- ggm 2y agoI used to search for a couple of lines of code in the getty.c program or its ancestors, which permitted ALL CAPS LOGIN because teletypes and early VDU terminals included models without a shift function. It made me ask myself how the password check was able to function (and how strong the crypt function was) if the case wasn't important. They were removed from (at least) FreeBSD sometime in the 2.x series I believe.
- ksherlock 2y agoI remember AIX doing that when you entered an upper-case login. Probably still does. https://www.ibm.com/docs/en/aix/7.1?topic=s-stty-command#stty__row-d3e57730 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.
- tedunangst 2y agoThe other three parts aren't linked in the article, but available if you go up a level. https://kevroletin.github.io/ https://kevroletin.github.io/
- rurban 2y agoI've enjoyed the 4th part, sessions and writing script most. The rest looks like severe security problems lurking underneath
- bsder 2y agoHow terminal works? Badly. 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/ https://sw.kovidgoyal.net/kitty/keyboard-protocol/
- Xerox9213 2y agoKitty is great. I started using it because I like cats. But I am learning more and more about how robust it is.
- lmz 2y agoAnd yet because of the *nix OSs being widely available it has even displaced superior models e.g. the Windows character cell model [0] is arguably a better fit for modern terminals yet new development goes to compatibility with "cross platform" inband signaling and escape sequences. [0]: https://learn.microsoft.com/en-us/windows/console/console-functions https://learn.microsoft.com/en-us/windows/console/console-fu...
- otabdeveloper4 2y agoIt isn't broken. 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.
- zokier 2y ago> 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 els 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.
- matricaria 2y ago(2021)