From: Ian Jackson Date: Sat, 23 Apr 2016 22:17:51 +0000 (+0100) Subject: Offsets: Introduce cfg->pad_xmin and ymin, and cap_get_xmin, ymin X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=xf86-input-mtrack.git;a=commitdiff_plain;h=481529ad21f4b8518434cca82c533277f1353352 Offsets: Introduce cfg->pad_xmin and ymin, and cap_get_xmin, ymin These are going to be needed to cope properly with pads whose origins are not at (0,0). Signed-off-by: Ian Jackson --- diff --git a/include/capabilities.h b/include/capabilities.h index 65777d3..69affb4 100644 --- a/include/capabilities.h +++ b/include/capabilities.h @@ -44,6 +44,9 @@ int get_cap_wsize(const struct Capabilities *cap); int get_cap_xmid(const struct Capabilities *cap); int get_cap_ymid(const struct Capabilities *cap); +int get_cap_xmin(const struct Capabilities *cap); +int get_cap_ymin(const struct Capabilities *cap); + int get_cap_xflip(const struct Capabilities *cap, int x); int get_cap_yflip(const struct Capabilities *cap, int y); diff --git a/include/mconfig.h b/include/mconfig.h index 2c3c86f..e14d53c 100644 --- a/include/mconfig.h +++ b/include/mconfig.h @@ -97,6 +97,8 @@ struct MConfig { int touch_max; // Maximum touch value. int pad_width; // Width of the touchpad. int pad_height; // Height of the touchpad. + int pad_xmin; // Minimum x coordinate. + int pad_ymin; // Minimum y coordinate. // Set by config. int touch_down; // When is a finger touching? 0 - 100 (percentage) diff --git a/src/capabilities.c b/src/capabilities.c index 310ee0b..d95de60 100644 --- a/src/capabilities.c +++ b/src/capabilities.c @@ -151,6 +151,18 @@ int get_cap_ymid(const struct Capabilities *cap) return (y->maximum + y->minimum) >> 1; } +int get_cap_xmin(const struct Capabilities *cap) +{ + const struct input_absinfo *x = &cap->abs[MTDEV_POSITION_X]; + return x->minimum; +} + +int get_cap_ymin(const struct Capabilities *cap) +{ + const struct input_absinfo *y = &cap->abs[MTDEV_POSITION_Y]; + return y->minimum; +} + int get_cap_xflip(const struct Capabilities *cap, int x) { const struct input_absinfo *i = &cap->abs[MTDEV_POSITION_X]; diff --git a/src/mconfig.c b/src/mconfig.c index 761b9a1..b68c63c 100644 --- a/src/mconfig.c +++ b/src/mconfig.c @@ -86,6 +86,8 @@ void mconfig_init(struct MConfig* cfg, cfg->touch_minor = caps->has_abs[MTDEV_TOUCH_MINOR]; cfg->pad_width = get_cap_xsize(caps); cfg->pad_height = get_cap_ysize(caps); + cfg->pad_xmin = get_cap_xmin(caps); + cfg->pad_ymin = get_cap_ymin(caps); if (caps->has_abs[MTDEV_TOUCH_MAJOR] && caps->has_abs[MTDEV_WIDTH_MAJOR]) { cfg->touch_type = MCFG_SCALE;