Skip to main content

Code Mapper Input Processor

Overview

The code mapper input processor is used to map the code of an event to a new one, e.g. changing a vertical Y movement event into a scroll event.

Usage

When used, a code mapper takes no parameters, as the code mappings are specified in the definition of the specific mapper instance, e.g.:

&zip_xy_to_scroll_mapper

Pre-Defined Instances

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

ReferenceDescription
&zip_xy_to_scroll_mapperMap X/Y movement events to horizontal wheel/wheel events, respectively.
&zip_xy_swap_mapperMap X to Y, and Y to X for movements.

Note that swapping X and Y movements can also be accomplished with the transformer processors.

User-Defined Instances

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

Example

Below example maps the left mouse button code to the middle mouse button.

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

/ {
input_processors {
zip_click_to_middle_click_mapper: zip_click_to_middle_click_mapper {
compatible = "zmk,input-processor-code-mapper";
#input-processor-cells = <0>;
type = <INPUT_EV_KEY>;
map = <INPUT_BTN_0 INPUT_BTN_2>;
};
};
}

Compatible

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

Standard Properties

  • #input-processor-cells - required to be constant value of <0>.

User Properties

  • type - The type of events to scale. Usually, this is INPUT_EV_REL for relative events and INPUT_EV_KEY for key/button events.
  • map - The specific codes of the given type to map, e.g. relative event codes. This list must be an even number of entries which is processed as a list of pairs of codes. The first code in the pair is the source code, and the second is the code to map it to.