|
|
|
@ -234,6 +234,14 @@ void vncPointerMove(int x, int y)
|
|
|
|
|
cursorPosY = y;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void vncScroll(int x, int y) {
|
|
|
|
|
ValuatorMask mask;
|
|
|
|
|
valuator_mask_zero(&mask);
|
|
|
|
|
valuator_mask_set(&mask, 2, x);
|
|
|
|
|
valuator_mask_set(&mask, 3, y);
|
|
|
|
|
QueuePointerEvents(vncPointerDev, MotionNotify, 0, POINTER_RELATIVE, &mask);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void vncGetPointerPos(int *x, int *y)
|
|
|
|
|
{
|
|
|
|
|
if (vncPointerDev != NULL) {
|
|
|
|
@ -261,7 +269,7 @@ static int vncPointerProc(DeviceIntPtr pDevice, int onoff)
|
|
|
|
|
* is not a bug.
|
|
|
|
|
*/
|
|
|
|
|
Atom btn_labels[BUTTONS];
|
|
|
|
|
Atom axes_labels[2];
|
|
|
|
|
Atom axes_labels[4];
|
|
|
|
|
|
|
|
|
|
switch (onoff) {
|
|
|
|
|
case DEVICE_INIT:
|
|
|
|
@ -278,11 +286,29 @@ static int vncPointerProc(DeviceIntPtr pDevice, int onoff)
|
|
|
|
|
|
|
|
|
|
axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X);
|
|
|
|
|
axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y);
|
|
|
|
|
axes_labels[2] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_HSCROLL);
|
|
|
|
|
axes_labels[3] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_VSCROLL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InitPointerDeviceStruct(pDev, map, BUTTONS, btn_labels,
|
|
|
|
|
(PtrCtrlProcPtr)NoopDDA,
|
|
|
|
|
GetMotionHistorySize(),
|
|
|
|
|
2, axes_labels);
|
|
|
|
|
4, axes_labels);
|
|
|
|
|
|
|
|
|
|
InitValuatorAxisStruct(pDevice, 2, axes_labels[2], NO_AXIS_LIMITS, NO_AXIS_LIMITS, 0, 0, 0, Relative);
|
|
|
|
|
InitValuatorAxisStruct(pDevice, 3, axes_labels[3], NO_AXIS_LIMITS, NO_AXIS_LIMITS, 0, 0, 0, Relative);
|
|
|
|
|
|
|
|
|
|
char* envScrollFactorH = getenv("SCROLL_FACTOR_H");
|
|
|
|
|
char* envScrollFactorV = getenv("SCROLL_FACTOR_V");
|
|
|
|
|
|
|
|
|
|
float scrollFactorH = envScrollFactorH ? atof(envScrollFactorH) : 50.0;
|
|
|
|
|
float scrollFactorV = envScrollFactorV ? atof(envScrollFactorV) : 50.0;
|
|
|
|
|
|
|
|
|
|
LOG_INFO("Mouse horizonatl scroll factor: %f", scrollFactorH);
|
|
|
|
|
LOG_INFO("Mouse vertical scroll factor: %f", scrollFactorV);
|
|
|
|
|
|
|
|
|
|
SetScrollValuator(pDevice, 2, SCROLL_TYPE_HORIZONTAL, scrollFactorH, SCROLL_FLAG_NONE);
|
|
|
|
|
SetScrollValuator(pDevice, 3, SCROLL_TYPE_VERTICAL, scrollFactorV, SCROLL_FLAG_PREFERRED);
|
|
|
|
|
break;
|
|
|
|
|
case DEVICE_ON:
|
|
|
|
|
pDev->on = TRUE;
|
|
|
|
|