859 Bytes
For a while, zig sucked. Then I found out that the binary size was related to statically linking compiler_rt, so I yeeted it, and implemented the missing functions. I then realized that I was resetting the termios when I didn't need to. I found a few more bits and bobs that could be tweaked, and here we go :)
After some pain with linker scripts in the recent past, I decided I better add an option to compile the program without RWX PHDRS, so that it could theoretically run on systems which don't like that type of binary. Anyways, enjoy.