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