| /* | 
 |  * SPDX-License-Identifier: GPL-2.0-or-later | 
 |  * | 
 |  * This work is licensed under the terms of the GNU GPL, version 2 or later. | 
 |  * See the COPYING file in the top-level directory. | 
 |  */ | 
 |  | 
 | #ifndef UI_INPUT_BARRIER_H | 
 | #define UI_INPUT_BARRIER_H | 
 |  | 
 | /* Barrier protocol */ | 
 | #define BARRIER_VERSION_MAJOR 1 | 
 | #define BARRIER_VERSION_MINOR 6 | 
 |  | 
 | enum barrierCmd { | 
 |     barrierCmdCNoop, | 
 |     barrierCmdCClose, | 
 |     barrierCmdCEnter, | 
 |     barrierCmdCLeave, | 
 |     barrierCmdCClipboard, | 
 |     barrierCmdCScreenSaver, | 
 |     barrierCmdCResetOptions, | 
 |     barrierCmdCInfoAck, | 
 |     barrierCmdCKeepAlive, | 
 |     barrierCmdDKeyDown, | 
 |     barrierCmdDKeyRepeat, | 
 |     barrierCmdDKeyUp, | 
 |     barrierCmdDMouseDown, | 
 |     barrierCmdDMouseUp, | 
 |     barrierCmdDMouseMove, | 
 |     barrierCmdDMouseRelMove, | 
 |     barrierCmdDMouseWheel, | 
 |     barrierCmdDClipboard, | 
 |     barrierCmdDInfo, | 
 |     barrierCmdDSetOptions, | 
 |     barrierCmdDFileTransfer, | 
 |     barrierCmdDDragInfo, | 
 |     barrierCmdQInfo, | 
 |     barrierCmdEIncompatible, | 
 |     barrierCmdEBusy, | 
 |     barrierCmdEUnknown, | 
 |     barrierCmdEBad, | 
 |     /* connection sequence */ | 
 |     barrierCmdHello, | 
 |     barrierCmdHelloBack, | 
 | }; | 
 |  | 
 | enum { | 
 |    barrierButtonNone, | 
 |    barrierButtonLeft, | 
 |    barrierButtonMiddle, | 
 |    barrierButtonRight, | 
 |    barrierButtonExtra0 | 
 | }; | 
 |  | 
 | struct barrierVersion { | 
 |     int16_t major; | 
 |     int16_t minor; | 
 | }; | 
 |  | 
 | struct barrierMouseButton { | 
 |     int8_t buttonid; | 
 | }; | 
 |  | 
 | struct barrierEnter { | 
 |     int16_t x; | 
 |     int16_t y; | 
 |     int32_t seqn; | 
 |     int16_t modifier; | 
 | }; | 
 |  | 
 | struct barrierMousePos { | 
 |     int16_t x; | 
 |     int16_t y; | 
 | }; | 
 |  | 
 | struct barrierKey { | 
 |     int16_t keyid; | 
 |     int16_t modifier; | 
 |     int16_t button; | 
 | }; | 
 |  | 
 | struct barrierRepeat { | 
 |     int16_t keyid; | 
 |     int16_t modifier; | 
 |     int16_t repeat; | 
 |     int16_t button; | 
 | }; | 
 |  | 
 | #define BARRIER_MAX_OPTIONS 32 | 
 | struct barrierSet { | 
 |     int nb; | 
 |     struct { | 
 |         int id; | 
 |         char nul; | 
 |         int value; | 
 |     } option[BARRIER_MAX_OPTIONS]; | 
 | }; | 
 |  | 
 | struct barrierMsg { | 
 |     enum barrierCmd cmd; | 
 |     union { | 
 |         struct barrierVersion version; | 
 |         struct barrierMouseButton mousebutton; | 
 |         struct barrierMousePos mousepos; | 
 |         struct barrierEnter enter; | 
 |         struct barrierKey key; | 
 |         struct barrierRepeat repeat; | 
 |         struct barrierSet set; | 
 |     }; | 
 | }; | 
 | #endif |