@mergen3107:
In no particular order

.
4 & 5/ While it's probably a viable approach (I'd double-check if the log has changed formatting), I'd "simply" (he said ;p) listen for input events, or "poll" a sentinel pixel (àla
MiniClock).
6/ That kind of slipped my mind before, but USBNet ships with a full ZSH build, which can do all of those things properly, and more, because ZSH is awesome.
But, going with Python will probably save you some pain, so:
https://github.com/NiLuJe/py-fbink.
You'll also have proper SQLite bindings with Python, too.
(A somewhat straightforward way to draw filled rectangles (via cls + background color) has been made public in the current FBInk tree, which'll hit a release Soon(TM)).
7/ Spoiler warning: IANAL, and this is an extremely abridged Cliff's Notes version.
On two opposite edges:
GPL: This is FOSS, I wrote it, and I care about how it's being (re-)used.
MIT: This is FOSS, I wrote it, and you can do whatever the fuck you want with it.
And a myriad of different licenses in-between

.
Regardless of that, I find human-readable (i.e, not lawyer speak) acknowledgements to be the right thing to do. I usually go with a CREDITS file, or tuck that somewhere in the README.