summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2010-10-18 17:16:23 -0700
committerKeith Packard <keithp@keithp.com>2010-10-18 17:16:23 -0700
commit5aff712a8d2eb9f965ecbb93216cc0bcdc327ae6 (patch)
tree31d5c22d02921010f4998b60a863519e7111b928
parent5b98c6267f575ec4ff498ecb651e34dbff030b83 (diff)
parente354ccac36a8ee3a23bdc845833c16a5646cc200 (diff)
Merge remote branch 'whot/for-keith'
-rw-r--r--dix/getevents.c24
-rw-r--r--hw/xfree86/common/xf86Xinput.c35
-rw-r--r--hw/xfree86/common/xf86Xinput.h2
-rw-r--r--include/eventstr.h2
4 files changed, 28 insertions, 35 deletions
diff --git a/dix/getevents.c b/dix/getevents.c
index e5134d34b..3731a4a38 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -210,7 +210,7 @@ set_valuators(DeviceIntPtr dev, DeviceEvent* event, int first_valuator,
}
memcpy(&event->valuators.data[first_valuator],
- valuators, num_valuators * sizeof(uint32_t));
+ valuators, num_valuators * sizeof(int32_t));
}
@@ -894,20 +894,12 @@ GetKeyboardEvents(EventList *events, DeviceIntPtr pDev, int type, int key_code)
/**
- * Returns a set of keyboard events for KeyPress/KeyRelease, optionally
- * also with valuator events. Handles Xi and XKB.
- *
- * DOES NOT GENERATE CORE EVENTS! Core events are created when processing the
- * event (ProcessOtherEvent).
+ * Returns a set of InternalEvents for KeyPress/KeyRelease, optionally
+ * also with valuator events.
*
* events is not NULL-terminated; the return value is the number of events.
* The DDX is responsible for allocating the event structure in the first
* place via GetMaximumEventsNum(), and for freeing it.
- *
- * This function does not change the core keymap to that of the device;
- * that is done by SwitchCoreKeyboard, which is called from
- * mieqProcessInputEvents. If replacing that function, take care to call
- * SetCoreKeyboard before processInputProc, so keymaps are altered to suit.
*/
int
GetKeyboardValuatorEvents(EventList *events, DeviceIntPtr pDev, int type,
@@ -1050,11 +1042,8 @@ transformAbsolute(DeviceIntPtr dev, int v[MAX_VALUATORS])
}
/**
- * Generate a series of xEvents (filled into the EventList) representing
- * pointer motion, or button presses. Xi and XKB-aware.
- *
- * DOES NOT GENERATE CORE EVENTS! Core events are created when processing the
- * event (ProcessOtherEvent).
+ * Generate a series of InternalEvents (filled into the EventList)
+ * representing pointer motion, or button presses.
*
* events is not NULL-terminated; the return value is the number of events.
* The DDX is responsible for allocating the event structure in the first
@@ -1183,7 +1172,8 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
/**
- * Post ProximityIn/ProximityOut events, accompanied by valuators.
+ * Generate ProximityIn/ProximityOut InternalEvents, accompanied by
+ * valuators.
*
* events is not NULL-terminated; the return value is the number of events.
* The DDX is responsible for allocating the event structure in the first
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 877eb0382..e71b09cd2 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -1238,40 +1238,43 @@ xf86FirstLocalDevice(void)
/*
* Cx - raw data from touch screen
- * Sxhigh - scaled highest dimension
+ * to_max - scaled highest dimension
* (remember, this is of rows - 1 because of 0 origin)
- * Sxlow - scaled lowest dimension
- * Rxhigh - highest raw value from touch screen calibration
- * Rxlow - lowest raw value from touch screen calibration
+ * to_min - scaled lowest dimension
+ * from_max - highest raw value from touch screen calibration
+ * from_min - lowest raw value from touch screen calibration
*
* This function is the same for X or Y coordinates.
* You may have to reverse the high and low values to compensate for
* different orgins on the touch screen vs X.
+ *
+ * e.g. to scale from device coordinates into screen coordinates, call
+ * xf86ScaleAxis(x, 0, screen_width, dev_min, dev_max);
*/
int
xf86ScaleAxis(int Cx,
- int Sxhigh,
- int Sxlow,
- int Rxhigh,
- int Rxlow )
+ int to_max,
+ int to_min,
+ int from_max,
+ int from_min )
{
int X;
- int64_t dSx = Sxhigh - Sxlow;
- int64_t dRx = Rxhigh - Rxlow;
+ int64_t to_width = to_max - to_min;
+ int64_t from_width = from_max - from_min;
- if (dRx) {
- X = (int)(((dSx * (Cx - Rxlow)) / dRx) + Sxlow);
+ if (from_width) {
+ X = (int)(((to_width * (Cx - from_min)) / from_width) + to_min);
}
else {
X = 0;
ErrorF ("Divide by Zero in xf86ScaleAxis");
}
- if (X > Sxhigh)
- X = Sxhigh;
- if (X < Sxlow)
- X = Sxlow;
+ if (X > to_max)
+ X = to_max;
+ if (X < to_min)
+ X = to_min;
return X;
}
diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h
index 7b60cdfea..1d013aa67 100644
--- a/hw/xfree86/common/xf86Xinput.h
+++ b/hw/xfree86/common/xf86Xinput.h
@@ -184,7 +184,7 @@ extern _X_EXPORT void xf86PostKeyboardEvent(DeviceIntPtr device, unsigned int ke
int is_down);
extern _X_EXPORT int xf86ActivateDevice(LocalDevicePtr local);
extern _X_EXPORT LocalDevicePtr xf86FirstLocalDevice(void);
-extern _X_EXPORT int xf86ScaleAxis(int Cx, int Sxhigh, int Sxlow, int Rxhigh, int Rxlow);
+extern _X_EXPORT int xf86ScaleAxis(int Cx, int to_max, int to_min, int from_max, int from_min);
extern _X_EXPORT void xf86XInputSetScreen(LocalDevicePtr local, int screen_number, int x, int y);
extern _X_EXPORT void xf86ProcessCommonOptions(InputInfoPtr pInfo, pointer options);
extern _X_EXPORT void xf86InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, Atom label, int minval,
diff --git a/include/eventstr.h b/include/eventstr.h
index 433227e6e..377cceba2 100644
--- a/include/eventstr.h
+++ b/include/eventstr.h
@@ -99,7 +99,7 @@ struct _DeviceEvent
struct {
uint8_t mask[(MAX_VALUATORS + 7)/8]; /**< Valuator mask */
uint8_t mode[(MAX_VALUATORS + 7)/8]; /**< Valuator mode (Abs or Rel)*/
- uint32_t data[MAX_VALUATORS]; /**< Valuator data */
+ int32_t data[MAX_VALUATORS]; /**< Valuator data */
int32_t data_frac[MAX_VALUATORS]; /**< Fractional part for data */
} valuators;
struct {