rio multiplexes /dev/kbd, so it opens it and derives the windows kbd and cons files from it. it obviously has to read /dev/kbd to multiplex it. now, the incompatibility is that opening /dev/kbd disables /dev/cons input.
the reason is that /dev/cons is buffered but pressing keys on the keyboard will result in characters being queued to /dev/cons. /dev/kbd reading programs should *not* require a dummy reader proc to flush duplicated console input in addition to reading /dev/kbd. you open /dev/kbd and the keyboard is yours. it is also harder to filter or translate multiple asynchronously read file stremas instead of just one. and filtering /dev/kbd is not much differnet from filtering /dev/cons. in addition, you have keyboard chords. -- cinap