Add copyright statement to source header.
Use stdbool.h instead of local macro and ints.
Add 'verbose' option.
Move message printed to stderr about mode of operation to a function and only display it when new --verbose option is present.
Move keysize variable to args_t structure and make it a ssize_t, not size_t.

That last bit was an error.  The get_key function could return -1
on error which makes size_t inappropriate.
Remove explicity initialization of args_t structure.

Sanity checks and initialization through parse_args should be
sufficient.
Move output indicating number of bytes read from drain_buf function to main loop and make it conditional on --verbose arg.  Add similar message after reading data as well.