A file is an object that supports the methods open(), read(), write(), and a few others. That's about a generic as you can get.
Can I append <data> /dev/mouse ?
Sharing {open,read,write,close} interface, but with exception and different semantics leads to a weird flavour of genericity.