| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-07-23 20:33:40 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-07-23 20:33:40 +0200 | 
| commit | 6ca39654bfc65eee45cb38cbc53ce838d1f656a0 (patch) | |
| tree | 2d926ef997411c099a0b0897dceb1dfd13ab1c0d /src/device | |
| parent | 87a86b9a599de35d09da7d954ba662091accc90b (diff) | |
Trying out axis renaming...
Diffstat (limited to 'src/device')
| -rw-r--r-- | src/device/axis/axis.c | 10 | ||||
| -rw-r--r-- | src/device/axis/axis_name.c | 41 | ||||
| -rw-r--r-- | src/device/axis/axis_option.c | 19 | ||||
| -rw-r--r-- | src/device/virtual/virtual_device.c | 18 | 
4 files changed, 86 insertions, 2 deletions
| diff --git a/src/device/axis/axis.c b/src/device/axis/axis.c index e854e37..1cdb856 100644 --- a/src/device/axis/axis.c +++ b/src/device/axis/axis.c @@ -20,6 +20,8 @@ void relabsd_axis_initialize  )  {     (void) memset(axis, 0, sizeof(struct relabsd_axis)); + +   axis->convert_to = RELABSD_UNKNOWN;  }  void relabsd_axis_to_absinfo @@ -68,3 +70,11 @@ void relabsd_axis_set_attributes_are_dirty  {     axis->attributes_were_modified = val;  } + +enum relabsd_axis_name relabsd_axis_get_convert_to +( +   const struct relabsd_axis axis [const restrict static 1] +) +{ +   return axis->convert_to; +} diff --git a/src/device/axis/axis_name.c b/src/device/axis/axis_name.c index c18a28f..1ac0715 100644 --- a/src/device/axis/axis_name.c +++ b/src/device/axis/axis_name.c @@ -56,6 +56,47 @@ enum relabsd_axis_name relabsd_axis_parse_name     return RELABSD_UNKNOWN;  } +enum relabsd_axis_name relabsd_axis_parse_name_from_prefix +( +   const char name [const restrict static 1] +) +{ +   if (RELABSD_IS_PREFIX("X", name)) +   { +      return RELABSD_X; +   } +   else if (RELABSD_IS_PREFIX("Y", name)) +   { +      return RELABSD_Y; +   } +   else if (RELABSD_IS_PREFIX("Z", name)) +   { +      return RELABSD_Z; +   } +   else if (RELABSD_IS_PREFIX("RX", name)) +   { +      return RELABSD_RX; +   } +   else if (RELABSD_IS_PREFIX("RY", name)) +   { +      return RELABSD_RY; +   } +   else if (RELABSD_IS_PREFIX("RZ", name)) +   { +      return RELABSD_RZ; +   } +   else if (RELABSD_IS_PREFIX("WL", name)) +   { +      return RELABSD_WHEEL; +   } +   else if (RELABSD_IS_PREFIX("MC", name)) +   { +      return RELABSD_MISC; +   } + +   return RELABSD_UNKNOWN; +} +  const char * relabsd_axis_name_to_string (const enum relabsd_axis_name e)  {     switch (e) diff --git a/src/device/axis/axis_option.c b/src/device/axis/axis_option.c index 1d68b78..8e52fe1 100644 --- a/src/device/axis/axis_option.c +++ b/src/device/axis/axis_option.c @@ -57,6 +57,25 @@ int relabsd_axis_enable_option_from_name           );        }     } +   else if (RELABSD_IS_PREFIX("convert_to=", option_name)) +   { +      axis->convert_to = +         relabsd_axis_parse_name_from_prefix +         ( +            option_name + strlen("convert_to=") +         ); + +      if (axis->convert_to == RELABSD_UNKNOWN) +      { +         RELABSD_ERROR +         ( +            "Unknown target axis to convert to in config for axis '%s'.", +            axis_name +         ); + +         return -1; +      } +   }     else     {        RELABSD_ERROR diff --git a/src/device/virtual/virtual_device.c b/src/device/virtual/virtual_device.c index d4be1b8..5ec06f5 100644 --- a/src/device/virtual/virtual_device.c +++ b/src/device/virtual/virtual_device.c @@ -143,11 +143,23 @@ int relabsd_virtual_device_update_axis_absinfo     const struct relabsd_virtual_device device [const restrict static 1]  )  { +   enum relabsd_axis_name target_axis_name;     struct input_absinfo absinfo;     relabsd_axis_to_absinfo(axis, &absinfo); -   /* TODO: report failure? 0 on success, -1 otherwise, no cause given. */ +   target_axis_name = relabsd_axis_get_convert_to(axis); + +   if (target_axis_name == RELABSD_UNKNOWN) +   { +      target_axis_name = axis_name; +   } + +   /* +    * TODO: report failure? 0 on success, -1 otherwise, no cause given. +    * Might want to add an option to see if people want to use the tool to +    * alter existing EV_ABS axes instead of converting from EV_REL to EV_ABS. +    */     (void) libevdev_disable_event_code     (        device->libevdev, @@ -159,7 +171,7 @@ int relabsd_virtual_device_update_axis_absinfo     (        device->libevdev,        EV_ABS, -      relabsd_axis_name_to_evdev_abs(axis_name), +      relabsd_axis_name_to_evdev_abs(target_axis_name),        &absinfo     ); @@ -267,6 +279,7 @@ int relabsd_virtual_device_recreate  )  {     int err; +     RELABSD_S_DEBUG(RELABSD_DEBUG_PROGRAM_FLOW, "Recreating virtual device...");     libevdev_uinput_destroy(device->uinput_device); @@ -288,6 +301,7 @@ int relabsd_virtual_device_recreate     }     RELABSD_S_DEBUG(RELABSD_DEBUG_PROGRAM_FLOW, "Recreated virtual device."); +     return 0;  } | 


