Skip to main content

Scaler Input Processor

Overview

The scaler input processor is used to scale the value of an input event that has a code matching the codes set on the scaler. Events with other codes will be ignored. Values are scaled by multiplying by the multiplier parameter, and then dividing by the divisor parameter.

Usage

When used, a scaler takes two parameters that are positive integers, a multiplier and a divisor, e.g.:

&zip_xy_scaler 2 1

which will double all the X/Y movement, or:

&zip_xy_scaler 1 3

which will make movements more granular by reducing the speed to one third.

warning

A maximum value of 16 should be used for the multiplier and divisor parameters to avoid overflows.

Pre-Defined Instances

Three pre-defined instance of the scaler input processor are available:

ReferenceDescription
&zip_xy_scalerScale X- and Y-axis values by the same amount
&zip_x_scalerScale X-axis values
&zip_y_scalerScale Y-axis values

User-Defined Instances

Users can define new instances of the scaler input processor if they want to target different codes.

Example

#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
input_processors {
zip_wheel_scaler: zip_wheel_scaler {
compatible = "zmk,input-processor-scaler";
#input-processor-cells = <2>;
type = <INPUT_EV_REL>;
codes = <INPUT_REL_WHEEL>;
track-remainders;
};
};
}

Compatible

The scaler input processor uses a compatible property of "zmk,input-processor-scaler".

Standard Properties

  • #input-processor-cells - required to be constant value of <2>.
  • track-remainders - boolean flag that indicates callers should allow the processor to track remainders between events.

User Properties

  • type - The type of events to scale. Usually, this is INPUT_EV_REL for relative events.
  • codes - The specific codes within the given type to scale, e.g. relative event codes