1#ifndef ANDROID_DVR_VIRTUAL_TOUCHPAD_C_CLIENT_H
2#define ANDROID_DVR_VIRTUAL_TOUCHPAD_C_CLIENT_H
3
4#include <dvr/dvr_api.h>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10typedef struct DvrVirtualTouchpad DvrVirtualTouchpad;
11
12// Creates a new virtual touchpad client.
13//
14// @return Pointer to the created virtual touchpad client; nullptr on failure.
15//
16DvrVirtualTouchpad* dvrVirtualTouchpadCreate();
17
18// Destroys a virtual touchpad client.
19//
20// @param client Pointer to the virtual touchpad client to be destroyed.
21//
22void dvrVirtualTouchpadDestroy(DvrVirtualTouchpad* client);
23
24// Initialize the virtual touchpad.
25//
26// In the current server implementation, attachment creates and configures
27// the kernel virtual touchpad device(s). A single client may be attached
28// and detached repeatedly, e.g. on entering and leaving VR mode.
29//
30// @param client Pointer to the virtual touchpad client to be attached.
31// @return Zero on success, status_t-style error code on failure.
32//
33int dvrVirtualTouchpadAttach(DvrVirtualTouchpad* client);
34
35// Shut down the virtual touchpad.
36//
37// @param client Pointer to the virtual touchpad client to be detached.
38// @return Zero on success, status_t-style error code on failure.
39//
40int dvrVirtualTouchpadDetach(DvrVirtualTouchpad* client);
41
42// Generate a simulated touch event.
43//
44// @param client Pointer to the virtual touchpad client.
45// @param touchpad Selects touchpad.
46// @param x Horizontal touch position.
47// @param y Vertical touch position.
48// @param pressure Touch pressure; use 0.0 for no touch (lift or hover).
49// @return Zero on success, status_t-style error code on failure.
50//
51int dvrVirtualTouchpadTouch(DvrVirtualTouchpad* client, int touchpad, float x,
52                            float y, float pressure);
53
54// Generate a simulated touchpad button state event.
55//
56// @param client Pointer to the virtual touchpad client.
57// @param touchpad Selects touchpad.
58// @param buttons A union of MotionEvent BUTTON_* values.
59// @return Zero on success, status_t-style error code on failure.
60//
61int dvrVirtualTouchpadButtonState(DvrVirtualTouchpad* client, int touchpad,
62                                  int buttons);
63
64// Generate a simulated scroll event.
65//
66// @param client Pointer to the virtual touchpad client.
67// @param touchpad Selects touchpad.
68// @param x Horizontal scroll increment.
69// @param y Vertical scroll increment.
70// @return Zero on success, status_t-style error code on failure.
71//
72int dvrVirtualTouchpadScroll(DvrVirtualTouchpad* client, int touchpad, float x,
73                             float y);
74
75#ifdef __cplusplus
76}  // extern "C"
77#endif
78
79#endif  // ANDROID_DVR_VIRTUAL_TOUCHPAD_CLIENT_H
80