|  | /* | 
|  | * 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 |