feat(pointer): virtio tablet as 2nd input dev (driver per-instance VAs, abs/btn decode), input server serves 2 devices on one notif; display software cursor, bar click switches window, presses/releases to front window in its px; k-ui hit-tests (press focuses, release on same presses, field only focuses)

This commit is contained in:
2026-10-28 16:50:20 +01:00
parent 0de13f124d
commit 1401af3d82
22 changed files with 545 additions and 46 deletions

View File

@@ -219,6 +219,18 @@ app cannot pick its own); the theme that window reads carries it, its
lightness moved until it passes contrast (`theme::with_accent`), or the
theme's own accent if it cannot, is black or white, or looks destructive.
The pointer (QEMU's `virtio-tablet-device`, the second virtio input
device, which init hands the input server after the keyboard) is the
display's as well. The input server reports positions as fractions of
the screen (`types::input::event`, `POINTER_*`, `x | y << 16` in 0 to
65535); the display draws the cursor itself over everything (a sprite,
redrawing what it hid as it moves), brings a window forward when its
name on the bar is pressed, and passes presses and releases below the
bar to the window in front, in that window's pixels. Moves are not
passed on. K-UI hit-tests them against what it last drew: a press
focuses the thing under it, letting go over the same thing presses it
(a field is only focused).
Input reaches apps through the display server, the input server's only
client. It subscribes to the input server with a notification, drains it
when signalled, keeps F1, and queues the rest for the window in front,