xserver

xserver with xephyr scale patch
git clone https://git.neptards.moe/u3shit/xserver.git
Log | Files | Refs | README | LICENSE

Pointer.c (3138B)


      1 /*
      2 
      3 Copyright 1993 by Davor Matic
      4 
      5 Permission to use, copy, modify, distribute, and sell this software
      6 and its documentation for any purpose is hereby granted without fee,
      7 provided that the above copyright notice appear in all copies and that
      8 both that copyright notice and this permission notice appear in
      9 supporting documentation.  Davor Matic makes no representations about
     10 the suitability of this software for any purpose.  It is provided "as
     11 is" without express or implied warranty.
     12 
     13 */
     14 
     15 #ifdef HAVE_XNEST_CONFIG_H
     16 #include <xnest-config.h>
     17 #endif
     18 
     19 #include <X11/X.h>
     20 #include <X11/Xproto.h>
     21 #include "screenint.h"
     22 #include "inputstr.h"
     23 #include "input.h"
     24 #include "misc.h"
     25 #include "scrnintstr.h"
     26 #include "servermd.h"
     27 #include "mipointer.h"
     28 
     29 #include "Xnest.h"
     30 
     31 #include "Display.h"
     32 #include "Screen.h"
     33 #include "Pointer.h"
     34 #include "Args.h"
     35 
     36 #include "xserver-properties.h"
     37 #include "exevents.h"           /* For XIGetKnownProperty */
     38 
     39 DeviceIntPtr xnestPointerDevice = NULL;
     40 
     41 void
     42 xnestChangePointerControl(DeviceIntPtr pDev, PtrCtrl * ctrl)
     43 {
     44     XChangePointerControl(xnestDisplay, True, True,
     45                           ctrl->num, ctrl->den, ctrl->threshold);
     46 }
     47 
     48 int
     49 xnestPointerProc(DeviceIntPtr pDev, int onoff)
     50 {
     51     CARD8 map[MAXBUTTONS];
     52     Atom btn_labels[MAXBUTTONS] = { 0 };
     53     Atom axes_labels[2] = { 0 };
     54     int nmap;
     55     int i;
     56 
     57     switch (onoff) {
     58     case DEVICE_INIT:
     59         nmap = XGetPointerMapping(xnestDisplay, map, MAXBUTTONS);
     60         for (i = 0; i <= nmap; i++)
     61             map[i] = i;         /* buttons are already mapped */
     62 
     63         btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT);
     64         btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE);
     65         btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT);
     66         btn_labels[3] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_UP);
     67         btn_labels[4] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_DOWN);
     68         btn_labels[5] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_LEFT);
     69         btn_labels[6] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_RIGHT);
     70 
     71         axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X);
     72         axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y);
     73 
     74         XGetPointerControl(xnestDisplay,
     75                            &defaultPointerControl.num,
     76                            &defaultPointerControl.den,
     77                            &defaultPointerControl.threshold);
     78         InitPointerDeviceStruct(&pDev->public, map, nmap, btn_labels,
     79                                 xnestChangePointerControl,
     80                                 GetMotionHistorySize(), 2, axes_labels);
     81         break;
     82     case DEVICE_ON:
     83         xnestEventMask |= XNEST_POINTER_EVENT_MASK;
     84         for (i = 0; i < xnestNumScreens; i++)
     85             XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask);
     86         break;
     87     case DEVICE_OFF:
     88         xnestEventMask &= ~XNEST_POINTER_EVENT_MASK;
     89         for (i = 0; i < xnestNumScreens; i++)
     90             XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask);
     91         break;
     92     case DEVICE_CLOSE:
     93         break;
     94     }
     95     return Success;
     96 }