feat(input): drop absolute-pointer (ABS) support

ABS was glued onto device A alongside the keyboard and never worked right; it is
not needed in practice. Remove it entirely: device A is now keyboard-only, and
device B is the relative mouse (motion + buttons incl. middle + wheel). Drops the
ptr_mode model (one layout remains), VMCTL_EV_ABS/PTR_*, and the absolute axes.

The public input-kind enum keeps its numeric values (MOVE_REL=1, BTN=2, KEY=3,
SCROLL=4) so the wire stays compatible -- only MOVE_ABS (0) is removed and its
slot reserved; an unknown/0 kind is a no-op.

Bump 0.3.11.
This commit is contained in:
2026-06-24 17:14:15 +03:00
parent 85041c12ab
commit 0f452fe37c
12 changed files with 85 additions and 158 deletions
+7 -4
View File
@@ -159,9 +159,12 @@ enum {
* encodes vmsig_input into vmsig_event.inln.
*
* Pointer motion carries BOTH coordinates in ONE event (a pointer position is a single entity,
* not two independent axis updates). btn/key/scroll stay single-valued. */
* not two independent axis updates). btn/key/scroll stay single-valued.
*
* Numbering is FROZEN: an external control encodes these on the wire and is not rebuilt from
* this header. Removing a member must NOT shift the others. */
typedef enum {
VMSIG_INPUT_MOVE_ABS = 0, /* absolute pointer: x,y are coordinates (0..VMCTL_ABS_MAX) */
/* 0 reserved (was MOVE_ABS, removed) */
VMSIG_INPUT_MOVE_REL = 1, /* relative pointer: x,y are deltas (dx,dy) */
VMSIG_INPUT_BTN = 2, /* button: code=button, value=pressed(1)/released(0) */
VMSIG_INPUT_KEY = 3, /* key: code=evdev code, value=pressed/released */
@@ -175,8 +178,8 @@ typedef struct {
uint16_t kind; /* vmsig_input_kind */
uint16_t code; /* button / evdev code / scroll axis (NOT used by MOVE_*) */
int32_t value; /* pressed(1)|released(0) for BTN/KEY (not used by MOVE or SCROLL) */
int32_t x; /* MOVE_ABS: abs X (0..VMCTL_ABS_MAX); MOVE_REL: dx */
int32_t y; /* MOVE_ABS: abs Y; MOVE_REL: dy */
int32_t x; /* MOVE_REL: dx */
int32_t y; /* MOVE_REL: dy */
double scroll; /* SCROLL magnitude only */
uint32_t flags; /* VMSIG_INPUT_F_* (see above) */
uint32_t _pad; /* reserved; zero on emit */