diff --git a/dix/inpututils.c b/dix/inpututils.c
index 5b7da3ab2db5beade4f3cf933dd23c94c6ea214a..6bff9efab7d1f0c4a07ebc45978d7c2efa3195c2 100644
--- a/dix/inpututils.c
+++ b/dix/inpututils.c
@@ -636,6 +636,19 @@ valuator_mask_drop_unaccelerated(ValuatorMask *mask)
     mask->has_unaccelerated = FALSE;
 }
 
+void
+valuator_mask_set_absolute_unaccelerated(ValuatorMask *mask,
+                                         int valuator,
+                                         int absolute,
+                                         double unaccel)
+{
+    BUG_WARN_MSG(mask->last_bit != -1 && !mask->has_unaccelerated,
+                 "Do not mix valuator types, zero mask first\n");
+    _valuator_mask_set_double(mask, valuator, absolute);
+    mask->has_unaccelerated = TRUE;
+    mask->unaccelerated[valuator] = unaccel;
+}
+
 /**
  * Set both accelerated and unaccelerated value for this mask.
  */
diff --git a/include/input.h b/include/input.h
index e0f6b9b01d97da687781d5878d827d4eeff48f80..c7b1e913c6d7404011daeaf440720c89baad6fc3 100644
--- a/include/input.h
+++ b/include/input.h
@@ -675,12 +675,15 @@ extern _X_EXPORT Bool valuator_mask_fetch(const ValuatorMask *mask,
                                           int valnum, int *val);
 extern _X_EXPORT Bool valuator_mask_fetch_double(const ValuatorMask *mask,
                                                  int valnum, double *val);
-
 extern _X_EXPORT Bool valuator_mask_has_unaccelerated(const ValuatorMask *mask);
 extern _X_EXPORT void valuator_mask_set_unaccelerated(ValuatorMask *mask,
                                                       int valuator,
                                                       double accel,
                                                       double unaccel);
+extern _X_EXPORT void valuator_mask_set_absolute_unaccelerated(ValuatorMask *mask,
+                                                               int valuator,
+                                                               int absolute,
+                                                               double unaccel);
 extern _X_EXPORT double valuator_mask_get_accelerated(const ValuatorMask *mask,
                                                       int valuator);
 extern _X_EXPORT double valuator_mask_get_unaccelerated(const ValuatorMask *mask,