# Copyright 2023 Google LLC
# SPDX-License-Identifier: Apache-2.0

description: |
  Input longpress pseudo-device

  Listens for key events as an input and produces key events as output
  corresponding to short and long press.

  Can be optionally be associated to a specific device to listen for events
  only from that device. Example configuration:

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

  longpress {
          input = <&buttons>;
          compatible = "zephyr,input-longpress";
          input-codes = <INPUT_KEY_0>, <INPUT_KEY_1>;
          short-codes = <INPUT_KEY_A>, <INPUT_KEY_B>;
          long-codes = <INPUT_KEY_X>, <INPUT_KEY_Y>;
          long-delay-ms = <1000>;
  };

  Example output:

  input event: dev=buttons          SYN type= 1 code= 11 value=1 # INPUT_KEY_0 press
  # release before one second
  input event: dev=buttons          SYN type= 1 code= 11 value=0 # INPUT_KEY_0 release
  input event: dev=longpress        SYN type= 1 code= 30 value=1 # INPUT_KEY_A press
  input event: dev=longpress        SYN type= 1 code= 30 value=0 # INPUT_KEY_A release

  input event: dev=buttons          SYN type= 1 code= 11 value=1 # INPUT_KEY_0 press
  # hold for more than one second
  input event: dev=longpress        SYN type= 1 code= 45 value=1 # INPUT_KEY_X press
  # wait for release
  input event: dev=buttons          SYN type= 1 code= 11 value=0 # INPUT_KEY_0 release
  input event: dev=longpress        SYN type= 1 code= 45 value=0 # INPUT_KEY_X release

compatible: "zephyr,input-longpress"

properties:
  input:
    type: phandle
    description: |
      Input device phandle, if not specified listen for input from all devices.

  input-codes:
    type: array
    required: true
    description: |
      Array of input event key codes (INPUT_KEY_* or INPUT_BTN_*).

  short-codes:
    type: array
    required: true
    description: |
      Array of key codes to be generated for short press (INPUT_KEY_* or
      INPUT_BTN_*).

  long-codes:
    type: array
    required: true
    description: |
      Array of key codes to be generated for long press (INPUT_KEY_* or
      INPUT_BTN_*).

  long-delay-ms:
    type: int
    required: true
    description: Time delay to register a long press in milliseconds.
