Storing the defaults for strips and wheels in individual variables makes updating and scanning through them very tedious. This patch replaces the variables with arrays and introduces new #define statements to keep the level of semantic meaning we had.
Signed-off-by: Jason Gerecke <killert...@gmail.com> --- src/wcmCommon.c | 22 ++++++++++---------- src/wcmConfig.c | 24 +++++++++++----------- src/wcmValidateDevice.c | 10 +++++----- src/wcmXCommand.c | 20 +++++++++---------- src/xf86WacomDefs.h | 53 +++++++++++++++++++++++++------------------------ 5 files changed, 65 insertions(+), 64 deletions(-) diff --git a/src/wcmCommon.c b/src/wcmCommon.c index a6fa309..0184176 100644 --- a/src/wcmCommon.c +++ b/src/wcmCommon.c @@ -295,7 +295,7 @@ static void sendAButton(InputInfoPtr pInfo, int button, int mask, { /* No button action configured, send button */ xf86PostButtonEventP(pInfo->dev, is_absolute(pInfo), - priv->button[button], (mask != 0), + priv->button_default[button], (mask != 0), first_val, num_val, VCOPY(valuators, num_val)); return; @@ -425,8 +425,8 @@ static void sendWheelStripEvents(InputInfoPtr pInfo, const WacomDeviceState* ds, if (delta && IsPad(priv) && priv->oldProximity == ds->proximity) { DBG(10, priv, "Left touch strip scroll delta = %d\n", delta); - fakeButton = getWheelButton(delta, priv->striplup, priv->stripldn, - priv->strip_keys[0], priv->strip_keys[1], &fakeKey); + fakeButton = getWheelButton(delta, priv->strip_default[STRIP_LEFT_UP], priv->strip_default[STRIP_LEFT_DN], + priv->strip_keys[STRIP_LEFT_UP], priv->strip_keys[STRIP_LEFT_DN], &fakeKey); sendWheelStripEvent(fakeButton, fakeKey, pInfo, first_val, num_vals, valuators); } @@ -435,8 +435,8 @@ static void sendWheelStripEvents(InputInfoPtr pInfo, const WacomDeviceState* ds, if (delta && IsPad(priv) && priv->oldProximity == ds->proximity) { DBG(10, priv, "Right touch strip scroll delta = %d\n", delta); - fakeButton = getWheelButton(delta, priv->striprup, priv->striprdn, - priv->strip_keys[2], priv->strip_keys[3], &fakeKey); + fakeButton = getWheelButton(delta, priv->strip_default[STRIP_RIGHT_UP], priv->strip_default[STRIP_RIGHT_DN], + priv->strip_keys[STRIP_RIGHT_UP], priv->strip_keys[STRIP_RIGHT_DN], &fakeKey); sendWheelStripEvent(fakeButton, fakeKey, pInfo, first_val, num_vals, valuators); } @@ -445,8 +445,8 @@ static void sendWheelStripEvents(InputInfoPtr pInfo, const WacomDeviceState* ds, if (delta && (IsCursor(priv) || IsPad(priv)) && priv->oldProximity == ds->proximity) { DBG(10, priv, "Relative wheel scroll delta = %d\n", delta); - fakeButton = getWheelButton(delta, priv->relup, priv->reldn, - priv->wheel_keys[0], priv->wheel_keys[1], &fakeKey); + fakeButton = getWheelButton(delta, priv->wheel_default[WHEEL_REL_UP], priv->wheel_default[WHEEL_REL_DN], + priv->wheel_keys[WHEEL_REL_UP], priv->wheel_keys[WHEEL_REL_DN], &fakeKey); sendWheelStripEvent(fakeButton, fakeKey, pInfo, first_val, num_vals, valuators); } @@ -455,8 +455,8 @@ static void sendWheelStripEvents(InputInfoPtr pInfo, const WacomDeviceState* ds, if (delta && IsPad(priv) && priv->oldProximity == ds->proximity) { DBG(10, priv, "Left touch wheel scroll delta = %d\n", delta); - fakeButton = getWheelButton(delta, priv->wheelup, priv->wheeldn, - priv->wheel_keys[2], priv->wheel_keys[3], &fakeKey); + fakeButton = getWheelButton(delta, priv->wheel_default[WHEEL_ABS_UP], priv->wheel_default[WHEEL_ABS_DN], + priv->wheel_keys[WHEEL_ABS_UP], priv->wheel_keys[WHEEL_ABS_DN], &fakeKey); sendWheelStripEvent(fakeButton, fakeKey, pInfo, first_val, num_vals, valuators); } @@ -465,8 +465,8 @@ static void sendWheelStripEvents(InputInfoPtr pInfo, const WacomDeviceState* ds, if (delta && IsPad(priv) && priv->oldProximity == ds->proximity) { DBG(10, priv, "Right touch wheel scroll delta = %d\n", delta); - fakeButton = getWheelButton(delta, priv->wheel2up, priv->wheel2dn, - priv->wheel_keys[4], priv->wheel_keys[5], &fakeKey); + fakeButton = getWheelButton(delta, priv->wheel_default[WHEEL2_ABS_UP], priv->wheel_default[WHEEL2_ABS_DN], + priv->wheel_keys[WHEEL2_ABS_UP], priv->wheel_keys[WHEEL2_ABS_DN], &fakeKey); sendWheelStripEvent(fakeButton, fakeKey, pInfo, first_val, num_vals, valuators); } } diff --git a/src/wcmConfig.c b/src/wcmConfig.c index e7fea5b..157d9d3 100644 --- a/src/wcmConfig.c +++ b/src/wcmConfig.c @@ -71,21 +71,21 @@ static int wcmAllocate(InputInfoPtr pInfo) /* Default button and expresskey values, offset buttons 4 and higher * by the 4 scroll buttons. */ for (i=0; i<WCM_MAX_BUTTONS; i++) - priv->button[i] = (i < 3) ? i + 1 : i + 5; + priv->button_default[i] = (i < 3) ? i + 1 : i + 5; - priv->nbuttons = WCM_MAX_BUTTONS; /* Default number of buttons */ - priv->relup = 5; /* Default relative wheel up event */ - priv->reldn = 4; /* Default relative wheel down event */ + priv->nbuttons = WCM_MAX_BUTTONS; /* Default number of buttons */ + priv->wheel_default[WHEEL_REL_UP] = 5; + priv->wheel_default[WHEEL_REL_DN] = 4; /* wheel events are set to 0, but the pad overwrites this default * later in wcmParseOptions, when we have IsPad() available */ - priv->wheelup = 0; /* Default absolute wheel up event */ - priv->wheeldn = 0; /* Default absolute wheel down event */ - priv->wheel2up = 0; /* Default absolute wheel2 up event */ - priv->wheel2dn = 0; /* Default absolute wheel2 down event */ - priv->striplup = 4; /* Default left strip up event */ - priv->stripldn = 5; /* Default left strip down event */ - priv->striprup = 4; /* Default right strip up event */ - priv->striprdn = 5; /* Default right strip down event */ + priv->wheel_default[WHEEL_ABS_UP] = 0; + priv->wheel_default[WHEEL_ABS_DN] = 0; + priv->wheel_default[WHEEL2_ABS_UP] = 0; + priv->wheel_default[WHEEL2_ABS_DN] = 0; + priv->strip_default[STRIP_LEFT_UP] = 4; + priv->strip_default[STRIP_LEFT_DN] = 5; + priv->strip_default[STRIP_RIGHT_UP] = 4; + priv->strip_default[STRIP_RIGHT_DN] = 5; priv->naxes = 6; /* Default number of axes */ /* JEJ - throttle sampling code */ diff --git a/src/wcmValidateDevice.c b/src/wcmValidateDevice.c index 6c08c45..0fa98cc 100644 --- a/src/wcmValidateDevice.c +++ b/src/wcmValidateDevice.c @@ -735,8 +735,8 @@ Bool wcmPreInitParseOptions(InputInfoPtr pInfo, Bool is_primary, */ if (IsPad(priv)) { - priv->wheelup = priv->wheel2up = 4; - priv->wheeldn = priv->wheel2dn = 5; + priv->wheel_default[WHEEL_ABS_UP] = priv->wheel_default[WHEEL2_ABS_UP] = 4; + priv->wheel_default[WHEEL_ABS_DN] = priv->wheel_default[WHEEL2_ABS_DN] = 5; set_absolute(pInfo, TRUE); } @@ -916,15 +916,15 @@ Bool wcmPreInitParseOptions(InputInfoPtr pInfo, Bool is_primary, /* Swap stylus buttons 2 and 3 for Tablet PCs */ if (TabletHasFeature(common, WCM_TPC) && IsStylus(priv)) { - priv->button[1] = 3; - priv->button[2] = 2; + priv->button_default[1] = 3; + priv->button_default[2] = 2; } for (i=0; i<WCM_MAX_BUTTONS; i++) { char b[12]; sprintf(b, "Button%d", i+1); - priv->button[i] = xf86SetIntOption(pInfo->options, b, priv->button[i]); + priv->button_default[i] = xf86SetIntOption(pInfo->options, b, priv->button_default[i]); } /* Now parse class-specific options */ diff --git a/src/wcmXCommand.c b/src/wcmXCommand.c index 1cbae62..85a86bd 100644 --- a/src/wcmXCommand.c +++ b/src/wcmXCommand.c @@ -542,12 +542,12 @@ static int wcmSetWheelProperty(DeviceIntPtr dev, Atom property, WacomDevicePtr priv = (WacomDevicePtr) pInfo->private; struct wheel_strip_update_t wsup = { - .up1 = &priv->relup, - .dn1 = &priv->reldn, - .up2 = &priv->wheelup, - .dn2 = &priv->wheeldn, - .up3 = &priv->wheel2up, - .dn3 = &priv->wheel2dn, + .up1 = &priv->wheel_default[WHEEL_REL_UP], + .dn1 = &priv->wheel_default[WHEEL_REL_DN], + .up2 = &priv->wheel_default[WHEEL_ABS_UP], + .dn2 = &priv->wheel_default[WHEEL_ABS_DN], + .up3 = &priv->wheel_default[WHEEL2_ABS_UP], + .dn3 = &priv->wheel_default[WHEEL2_ABS_DN], .handlers = priv->wheel_actions, .keys = priv->wheel_keys, @@ -564,10 +564,10 @@ static int wcmSetStripProperty(DeviceIntPtr dev, Atom property, WacomDevicePtr priv = (WacomDevicePtr) pInfo->private; struct wheel_strip_update_t wsup = { - .up1 = &priv->striplup, - .dn1 = &priv->stripldn, - .up2 = &priv->striprup, - .dn2 = &priv->striprdn, + .up1 = &priv->strip_default[STRIP_LEFT_UP], + .dn1 = &priv->strip_default[STRIP_LEFT_DN], + .up2 = &priv->strip_default[STRIP_RIGHT_UP], + .dn2 = &priv->strip_default[STRIP_RIGHT_DN], .up3 = NULL, .dn3 = NULL, diff --git a/src/xf86WacomDefs.h b/src/xf86WacomDefs.h index 60fbd7b..08dd55f 100644 --- a/src/xf86WacomDefs.h +++ b/src/xf86WacomDefs.h @@ -192,6 +192,18 @@ struct _WacomModel #define AXIS_INVERT 0x01 /* Flag describing an axis which increases "downward" */ #define AXIS_BITWISE 0x02 /* Flag describing an axis which changes bitwise */ +/* Indicies into the wheel/strip default/keys/actions arrays */ +#define WHEEL_REL_UP 0 +#define WHEEL_REL_DN 1 +#define WHEEL_ABS_UP 2 +#define WHEEL_ABS_DN 3 +#define WHEEL2_ABS_UP 4 +#define WHEEL2_ABS_DN 5 +#define STRIP_LEFT_UP 0 +#define STRIP_LEFT_DN 1 +#define STRIP_RIGHT_UP 2 +#define STRIP_RIGHT_DN 3 + /* get/set/property */ typedef struct _PROPINFO PROPINFO; @@ -231,29 +243,23 @@ struct _WacomDeviceRec int maxHeight; /* max active screen height in screen coords */ int leftPadding; /* left padding for virtual tablet in device coordinates*/ int topPadding; /* top padding for virtual tablet in device coordinates*/ - /* map zero based internal buttons to one based X buttons */ - int button[WCM_MAX_BUTTONS]; - /* map one based X buttons to keystrokes */ - unsigned keys[WCM_MAX_BUTTONS][256]; - int relup; - int reldn; - int wheelup; - int wheeldn; - int wheel2up; - int wheel2dn; - /* keystrokes assigned to wheel events (default is the buttons above). - * Order is relup, reldwn, wheelup, wheeldn, wheel2up, wheel2dn. - * Like 'keys', this array is one-indexed */ - unsigned wheel_keys[6][256]; - int striplup; - int stripldn; - int striprup; - int striprdn; - /* keystrokes assigned to strip events (default is the buttons above). - * Order is striplup, stripldn, striprup, striprdn. Like 'keys', this - * array is one-indexed */ + /* button mapping information + * + * 'button' variables are indexed by physical button number (0..nbuttons) + * 'strip' variables are indexed by STRIP_* defines + * 'wheel' variables are indexed by WHEEL_* defines + */ + int button_default[WCM_MAX_BUTTONS]; /* Default mappings set by ourselves (possibly overridden by xorg.conf) */ + int strip_default[4]; + int wheel_default[6]; + unsigned keys[WCM_MAX_BUTTONS][256]; /* Action codes to perform when the associated event occurs */ unsigned strip_keys[4][256]; + unsigned wheel_keys[6][256]; + Atom btn_actions[WCM_MAX_BUTTONS]; /* Action references so we can update the action codes when a client makes a change */ + Atom strip_actions[4]; + Atom wheel_actions[6]; + int nbuttons; /* number of buttons for this subdevice */ int naxes; /* number of axes */ /* FIXME: always 6, and the code relies on that... */ @@ -297,11 +303,6 @@ struct _WacomDeviceRec int isParent; /* set to 1 if the device is not auto-hotplugged */ - /* property handlers to listen to for action properties */ - Atom btn_actions[WCM_MAX_BUTTONS]; - Atom wheel_actions[6]; - Atom strip_actions[4]; - OsTimerPtr serial_timer; /* timer used for serial number property update */ }; -- 1.7.11.1 ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel