summaryrefslogtreecommitdiff
path: root/tests/x11/inputtest-protocol.h
blob: 2a94a55b4460ac0e7e3785326cfa6f509ccf8b85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/* Subset of Xorg's xf86-input-inputtest protocol 1.1 used by this test.
 * https://www.x.org/releases/individual/xserver/xorg-server-21.1.25.tar.xz
 *
 * Copyright © 2020 Povilas Kanapickas <povilas@radix.lt>
 *
 * Permission to use, copy, modify, distribute, and sell this software
 * and its documentation for any purpose is hereby granted without
 * fee, provided that the above copyright notice appear in all copies
 * and that both that copyright notice and this permission notice
 * appear in supporting documentation, and that the name of Red Hat
 * not be used in advertising or publicity pertaining to distribution
 * of the software without specific, written prior permission. Red
 * Hat makes no representations about the suitability of this software
 * for any purpose. It is provided "as is" without express or implied
 * warranty.
 *
 * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
 * NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
 * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */
#ifndef YASL_PRIVATE_TEST_INPUTTEST_PROTOCOL_H
#define YASL_PRIVATE_TEST_INPUTTEST_PROTOCOL_H

#include <stdint.h>

enum xf86ITResponseType {
    XF86IT_RESPONSE_SERVER_VERSION,
    XF86IT_RESPONSE_SYNC_FINISHED,
};

typedef struct {
    uint32_t length;
    enum xf86ITResponseType type;
} xf86ITResponseHeader;

typedef struct {
    xf86ITResponseHeader header;
    uint16_t major, minor;
} xf86ITResponseServerVersion;

enum xf86ITEventType {
    XF86IT_EVENT_CLIENT_VERSION,
    XF86IT_EVENT_WAIT_FOR_SYNC,
    XF86IT_EVENT_MOTION,
    XF86IT_EVENT_PROXIMITY,
    XF86IT_EVENT_BUTTON,
};

typedef struct {
    uint32_t length;
    enum xf86ITEventType type;
} xf86ITEventHeader;

typedef struct {
    uint32_t has_unaccelerated;
    uint8_t mask[8];
    double valuators[64];
    double unaccelerated[64];
} xf86ITValuatorData;

typedef struct {
    xf86ITEventHeader header;
    uint16_t major, minor;
} xf86ITEventClientVersion;

typedef struct { xf86ITEventHeader header; } xf86ITEventWaitForSync;

typedef struct {
    xf86ITEventHeader header;
    uint32_t is_absolute;
    xf86ITValuatorData valuators;
} xf86ITEventMotion;

typedef struct {
    xf86ITEventHeader header;
    uint32_t is_prox_in;
    xf86ITValuatorData valuators;
} xf86ITEventProximity;

typedef struct {
    xf86ITEventHeader header;
    int32_t is_absolute;
    int32_t button;
    uint32_t is_press;
    xf86ITValuatorData valuators;
} xf86ITEventButton;

#endif