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