GateLinker<p>Simple things can be complex: <br />Reading a single key event from the keyboard is quite hard. Standard C and OS settings<br />will buffer key events until a line is complete <a href="https://fosstodon.org/tags/LDISC" class="mention hashtag" rel="tag">#<span>LDISC</span></a>.<br />And special keys like arrows or ESC have native non-standard encodings like VKEY on <a href="https://fosstodon.org/tags/Windows" class="mention hashtag" rel="tag">#<span>Windows</span></a>, <a href="https://fosstodon.org/tags/VT100" class="mention hashtag" rel="tag">#<span>VT100</span></a> escape codes on <a href="https://fosstodon.org/tags/POSIX" class="mention hashtag" rel="tag">#<span>POSIX</span></a>, AKEYCODE on <a href="https://fosstodon.org/tags/Android" class="mention hashtag" rel="tag">#<span>Android</span></a>, multibyte codes from the <a href="https://fosstodon.org/tags/BIOS" class="mention hashtag" rel="tag">#<span>BIOS</span></a> layer or scan codes from <a href="https://fosstodon.org/tags/UEFI" class="mention hashtag" rel="tag">#<span>UEFI</span></a> or the hardware.</p><p>But it's fun to learn about what's really going on beyond libraries like `ncurses`.</p>