From a061b2e76386729992137803cb9259df66202ab9 Mon Sep 17 00:00:00 2001 From: Nikolay Nikolov Date: Fri, 6 Aug 2021 04:29:12 +0300 Subject: [PATCH] + added unit xtestext1 (header translation of X11/extensions/xtestext1.h) --- packages/x11/fpmake.pp | 8 ++ packages/x11/src/xtestext1.pp | 109 ++++++++++++++++ packages/x11/src/xtestext1const.inc | 156 +++++++++++++++++++++++ packages/x11/tests/xtestext1_linktest.pp | 16 +++ 4 files changed, 289 insertions(+) create mode 100644 packages/x11/src/xtestext1.pp create mode 100644 packages/x11/src/xtestext1const.inc create mode 100644 packages/x11/tests/xtestext1_linktest.pp diff --git a/packages/x11/fpmake.pp b/packages/x11/fpmake.pp index 8e1e7a93e8..cb2f67a6d4 100644 --- a/packages/x11/fpmake.pp +++ b/packages/x11/fpmake.pp @@ -217,6 +217,14 @@ begin AddUnit('x'); AddUnit('xlib'); end; + T:=P.Targets.AddUnit('xtestext1.pp'); + with T.Dependencies do + begin + AddInclude('xtestext1const.inc'); + AddUnit('x'); + AddUnit('xlib'); + AddUnit('xmd'); + end; {$ifndef ALLPACKAGES} Run; diff --git a/packages/x11/src/xtestext1.pp b/packages/x11/src/xtestext1.pp new file mode 100644 index 0000000000..fd5f0c1b54 --- /dev/null +++ b/packages/x11/src/xtestext1.pp @@ -0,0 +1,109 @@ +(* + * xtestext1.h + * + * X11 Input Synthesis Extension include file + *) + +(* + + +Copyright 1986, 1987, 1988, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation + +Permission to use, copy, modify, and distribute this +software and its documentation for any purpose and without +fee is hereby granted, provided that the above copyright +notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting +documentation, and that the name of Hewlett-Packard not be used in +advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +Hewlett-Packard makes no representations about the +suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +This software is not subject to any license of the American +Telephone and Telegraph Company or of the Regents of the +University of California. + +*) + +unit xtestext1; + +{$PACKRECORDS c} + +interface + +uses + ctypes, x, xlib, xmd; + +const + libXext = 'Xext'; + +(* + * the typedefs for CARD8, CARD16, and CARD32 are defined in Xmd.h + *) + +{$I xtestext1const.inc} + +(* + * This is the definition for the input action host format event structure. + * This is the form that a client using this extension will see when + * it receives an input action event. + *) +type + PXTestInputActionEvent = ^TXTestInputActionEvent; + TXTestInputActionEvent = record + _type: cint; { always XTestInputActionType } + display: PDisplay; + window: TWindow; + actions: array [0..XTestACTIONS_SIZE-1] of CARD8; + end; + +(* + * This is the definition for the xTestFakeAck host format event structure. + * This is the form that a client using this extension will see when + * it receives an XTestFakeAck event. + *) + PXTestFakeAckEvent = ^TXTestFakeAckEvent; + TXTestFakeAckEvent = record + _type: cint; { always XTestFakeAckType } + display: PDisplay; + window: TWindow; + end; + +function XTestFakeInput({register} dpy: PDisplay; action_list_addr: Pchar; action_list_size, ack_flag: cint): cint; cdecl; external libXext; +function XTestGetInput({register} dpy: PDisplay; action_handling: cint): cint; cdecl; external libXext; +function XTestQueryInputSize({register} dpy: PDisplay; size_return: Pculong): cint; cdecl; external libXext; +function XTestPressKey(display: PDisplay; device_id: cint; delay: culong; keycode, key_action: cuint): cint; cdecl; external libXext; +function XTestPressButton(display: PDisplay; device_id: cint; delay: culong; button_number, button_action: cuint): cint; cdecl; external libXext; +function XTestMovePointer(display: PDisplay; device_id: cint; delay: Pculong; x, y: Pcint; count: cuint): cint; cdecl; external libXext; +function XTestFlush(display: PDisplay): cint; cdecl; external libXext; +function XTestStopInput({register} dpy: PDisplay): cint; cdecl; external libXext; +function XTestReset({register} dpy: PDisplay): cint; cdecl; external libXext; + +implementation +end. diff --git a/packages/x11/src/xtestext1const.inc b/packages/x11/src/xtestext1const.inc new file mode 100644 index 0000000000..787f00cbb6 --- /dev/null +++ b/packages/x11/src/xtestext1const.inc @@ -0,0 +1,156 @@ +(* + * xtestext1.h + * + * X11 Input Synthesis Extension include file + *) + +(* + + +Copyright 1986, 1987, 1988, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation + +Permission to use, copy, modify, and distribute this +software and its documentation for any purpose and without +fee is hereby granted, provided that the above copyright +notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting +documentation, and that the name of Hewlett-Packard not be used in +advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +Hewlett-Packard makes no representations about the +suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +This software is not subject to any license of the American +Telephone and Telegraph Company or of the Regents of the +University of California. + +*) + +const + XTestMAX_ACTION_LIST_SIZE = 64; + XTestACTIONS_SIZE = 28; + + +(* + * used in the XTestPressButton and XTestPressKey functions + *) + XTestPRESS = 1 shl 0; + XTestRELEASE = 1 shl 1; + XTestSTROKE = 1 shl 2; + +(* + * When doing a key or button stroke, the number of milliseconds + * to delay between the press and the release of a key or button + * in the XTestPressButton and XTestPressKey functions. + *) + + XTestSTROKE_DELAY_TIME = 10; + +(* + * used in the XTestGetInput function + *) + XTestEXCLUSIVE = 1 shl 0; + XTestPACKED_ACTIONS = 1 shl 1; + XTestPACKED_MOTION = 1 shl 2; + +(* + * used in the XTestFakeInput function + *) + XTestFAKE_ACK_NOT_NEEDED = 0; + XTestFAKE_ACK_REQUEST = 1; + +(* + * used in the XTest extension initialization routine + *) + XTestEXTENSION_NAME = 'XTestExtension1'; + XTestEVENT_COUNT = 2; + +(* + * This is the definition for the format of the header byte + * in the input action structures. + *) + XTestACTION_TYPE_MASK = $03; { bits 0 and 1 } + XTestKEY_STATE_MASK = $04; { bit 2 (key action) } + XTestX_SIGN_BIT_MASK = $04; { bit 2 (motion action) } + XTestY_SIGN_BIT_MASK = $08; { bit 3 (motion action) } + XTestDEVICE_ID_MASK = $f0; { bits 4 through 7 } + + XTestMAX_DEVICE_ID = $0f; +//#define XTestPackDeviceID(x) (((x) & XTestMAX_DEVICE_ID) << 4) +//#define XTestUnpackDeviceID(x) (((x) & XTestDEVICE_ID_MASK) >> 4) + +(* + * These are the possible action types. + *) + XTestDELAY_ACTION = 0; + XTestKEY_ACTION = 1; + XTestMOTION_ACTION = 2; + XTestJUMP_ACTION = 3; + +(* + * These are the definitions for key/button motion input actions. + *) + XTestKEY_UP = $04; + XTestKEY_DOWN = $00; + +(* + * These are the definitions for pointer relative motion input + * actions. + * + * The sign bits for the x and y relative motions are contained + * in the header byte. The x and y relative motions are packed + * into one byte to make things fit in 32 bits. If the relative + * motion range is larger than +/-15, use the pointer jump action. + *) + XTestMOTION_MAX = 15; + XTestMOTION_MIN = -15; + + XTestX_NEGATIVE = $04; + XTestY_NEGATIVE = $08; + + XTestX_MOTION_MASK = $0f; + XTestY_MOTION_MASK = $f0; + +//#define XTestPackXMotionValue(x) ((x) & XTestX_MOTION_MASK) +//#define XTestPackYMotionValue(x) (((x) << 4) & XTestY_MOTION_MASK) + +//#define XTestUnpackXMotionValue(x) ((x) & XTestX_MOTION_MASK) +//#define XTestUnpackYMotionValue(x) (((x) & XTestY_MOTION_MASK) >> 4) +(* + * These are the definitions for a long delay input action. It is + * used when more than XTestSHORT_DELAY_TIME milliseconds of delay + * (approximately one minute) is needed. + * + * The device ID for a delay is always set to XTestDELAY_DEVICE_ID. + * This guarantees that a header byte with a value of 0 is not + * a valid header, so it can be used as a flag to indicate that + * there are no more input actions in an XTestInputAction event. + *) + + XTestSHORT_DELAY_TIME = $ffff; + XTestDELAY_DEVICE_ID = $0f; diff --git a/packages/x11/tests/xtestext1_linktest.pp b/packages/x11/tests/xtestext1_linktest.pp new file mode 100644 index 0000000000..33ee0dd5a6 --- /dev/null +++ b/packages/x11/tests/xtestext1_linktest.pp @@ -0,0 +1,16 @@ +{ this program just links all externals, declared in the xtestext1 unit } +program xtestext1_linktest; +uses + xtestext1; +begin + halt(0); + XTestFakeInput(nil,nil,0,0); + XTestGetInput(nil,0); + XTestQueryInputSize(nil,nil); + XTestPressKey(nil,0,0,0,0); + XTestPressButton(nil,0,0,0,0); + XTestMovePointer(nil,0,nil,nil,nil,0); + XTestFlush(nil); + XTestStopInput(nil); + XTestReset(nil); +end.