Files
vatrog-vm-signaling/src/adapter/input/include/input.h
T

24 lines
1.2 KiB
C
Raw Normal View History

#ifndef VMSIG_INPUT_H
#define VMSIG_INPUT_H
/* Private config of the input adapter (vmctl, in-tree at src/si/input/). cfg==NULL or
* stub!=0 => stub mode (ack without actuation). stub==0 opens vmctl_open() and actuates for
* real. Injection is ALWAYS uinput; the created evdev nodes are forwarded into the guest by an
* input-linux QMP object that the vmhost seam adds over its own connection (this adapter only
* publishes the evdev paths, it never touches QMP). qmp_path is kept for the SERVICE path
* (power/lifecycle via vmctl QMP), not for injection. */
typedef struct {
int stub;
const char* qmp_path; /* for power/lifecycle (vmctl QMP); NOT input injection */
/* On a real attach the adapter writes the uinput evdev node paths here (>=64 bytes each)
* so the vmhost seam can bridge them via input-linux. NULL => not published; B is "" when
* there is no second device. Buffers belong to the caller and outlive the adapter. */
char* out_evdev_a;
char* out_evdev_b;
} vmsig_input_cfg;
/* Input event codes/contract are PUBLIC: vmsig_input / vmsig_input_kind in
* include/vmsig_event.h (external control encodes them into inln). No private duplicate. */
#endif /* VMSIG_INPUT_H */