// Copyright status: this file is in the public domain. #include "lx.h" #include "proto.h" #include "internal.h" #define ID(v) lx__identity_s32((v)) void lx_ChangePointerControl(LX_CONN *xc, const LX_POINTERCONTROL *pc) { unsigned char req[12]; if ( (xc->flags & XCF_FAIL) || ( (pc->flags & LX_POINTERCONTROL_ACCEL) && ( (ID(pc->numerator) < -32768) || (ID(pc->numerator) > 32767) || (ID(pc->denominator) < -32768) || (ID(pc->denominator) > 32767) ) ) || ( (pc->flags & LX_POINTERCONTROL_THRESH) && ((ID(pc->threshold) < -32768) || (ID(pc->threshold) > 32767)) ) ) { lx__bad_call(xc,"lx_ChangePointerControl"); return; } lx__nochain(xc); req[0] = LX_CORE_ChangePointerControl; req[1] = 0; // unused w_card16(&req[2],3); w_int16(&req[4],(pc->flags&LX_POINTERCONTROL_ACCEL)?pc->numerator:0); w_int16(&req[6],(pc->flags&LX_POINTERCONTROL_ACCEL)?pc->denominator:0); w_int16(&req[8],(pc->flags&LX_POINTERCONTROL_THRESH)?pc->threshold:0); req[10] = (pc->flags & LX_POINTERCONTROL_ACCEL) ? 1 : 0; req[11] = (pc->flags & LX_POINTERCONTROL_THRESH) ? 1 : 0; lx__send_req(xc,&req[0],-1); }