Track hw keyboards and disable/hide OSK when one gets attached
The OSK is hidden/shown based on the presence of a hw keyboard. This behavior can be disabled for e.g. tablets that want to use an OSK and hw keyboard at the same time.
* osk-stub: Make protocol static
No need to have it visible in other compilation units
* schema: Clarify completion-mode description
* protocols: Add device-state
This will allow us to detect connected hw keyboards and disable the OSK.
* README: Document new features
* hw-tracker: Track connected keyboards and allow to prevent unfold
Usually when a hardware keyboard is attached one doesn't want to show
the OSK as this takes up screen space.
* hw-tracker: Add setting to ignore hw-keyboards
This helps in situations where people want an OSK and a hardware
keyboard.
* osk-stub: Revalidate whether to show the OSK when attached hw changed
This allows to show/hide the OSK immediately on hw changes (and not
delay that decision until the next activation).
Closes: #37 (closed)