xref: /qemu/ui/input-barrier.h (revision abff1abf)
1 /*
2  * SPDX-License-Identifier: GPL-2.0-or-later
3  *
4  * This work is licensed under the terms of the GNU GPL, version 2 or later.
5  * See the COPYING file in the top-level directory.
6  */
7 
8 #ifndef UI_INPUT_BARRIER_H
9 #define UI_INPUT_BARRIER_H
10 
11 /* Barrier protocol */
12 #define BARRIER_VERSION_MAJOR 1
13 #define BARRIER_VERSION_MINOR 6
14 
15 enum barrierCmd {
16     barrierCmdCNoop,
17     barrierCmdCClose,
18     barrierCmdCEnter,
19     barrierCmdCLeave,
20     barrierCmdCClipboard,
21     barrierCmdCScreenSaver,
22     barrierCmdCResetOptions,
23     barrierCmdCInfoAck,
24     barrierCmdCKeepAlive,
25     barrierCmdDKeyDown,
26     barrierCmdDKeyRepeat,
27     barrierCmdDKeyUp,
28     barrierCmdDMouseDown,
29     barrierCmdDMouseUp,
30     barrierCmdDMouseMove,
31     barrierCmdDMouseRelMove,
32     barrierCmdDMouseWheel,
33     barrierCmdDClipboard,
34     barrierCmdDInfo,
35     barrierCmdDSetOptions,
36     barrierCmdDFileTransfer,
37     barrierCmdDDragInfo,
38     barrierCmdQInfo,
39     barrierCmdEIncompatible,
40     barrierCmdEBusy,
41     barrierCmdEUnknown,
42     barrierCmdEBad,
43     /* connection sequence */
44     barrierCmdHello,
45     barrierCmdHelloBack,
46 };
47 
48 enum {
49    barrierButtonNone,
50    barrierButtonLeft,
51    barrierButtonMiddle,
52    barrierButtonRight,
53    barrierButtonExtra0
54 };
55 
56 struct barrierVersion {
57     int16_t major;
58     int16_t minor;
59 };
60 
61 struct barrierMouseButton {
62     int8_t buttonid;
63 };
64 
65 struct barrierEnter {
66     int16_t x;
67     int16_t y;
68     int32_t seqn;
69     int16_t modifier;
70 };
71 
72 struct barrierMousePos {
73     int16_t x;
74     int16_t y;
75 };
76 
77 struct barrierKey {
78     int16_t keyid;
79     int16_t modifier;
80     int16_t button;
81 };
82 
83 struct barrierRepeat {
84     int16_t keyid;
85     int16_t modifier;
86     int16_t repeat;
87     int16_t button;
88 };
89 
90 #define BARRIER_MAX_OPTIONS 32
91 struct barrierSet {
92     int nb;
93     struct {
94         int id;
95         char nul;
96         int value;
97     } option[BARRIER_MAX_OPTIONS];
98 };
99 
100 struct barrierMsg {
101     enum barrierCmd cmd;
102     union {
103         struct barrierVersion version;
104         struct barrierMouseButton mousebutton;
105         struct barrierMousePos mousepos;
106         struct barrierEnter enter;
107         struct barrierKey key;
108         struct barrierRepeat repeat;
109         struct barrierSet set;
110     };
111 };
112 #endif
113