# Copyright 2022, Basalte bv
# SPDX-License-Identifier: Apache-2.0

description: |
  SDL keyboard GPIO input Emulator

  Simulate GPIO state/interrupts using SDL keyboard events. This node has
  to be a child of a `zephyr,gpio-emul` compatible.
  Add a list of scancodes for the desired keys to be mapped.

  This driver uses USB HID scancodes, they are different from linux key codes,
  and thus do not match Zephyr code values as described in input-event-codes.h.
  Refer to https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
  section Keyboard/Keypad (p53) for a list of scancode values.

  The following example maps the first 3 numeric keys to GPIO pins:
  - Scancode 30: "Keyboard 1 and !", mapped to gpio0 0
  - Scancode 31: "Keyboard 2 and @", mapped to gpio0 1
  - Scancode 32: "Keyboard 3 and \#", mapped to gpio0 2

  The "typical position" column from HID table suggests to match them
  with standard keycode values 2, 3 and 4, corresponding to
  INPUT_KEY_1, INPUT_KEY_2 and INPUT_KEY_3 in input-event-codes.h.

  /* gpio0 has to be a zephyr,gpio-emul device */
  &gpio0 {
    ngpios = <3>;

    sdl_gpio {
      compatible = "zephyr,gpio-emul-sdl";
      scancodes = <30 31 32>;
    };
  };

  keypad: keypad {
    compatible = "gpio-keys";
    key1: key1 {
      gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
    };
    key2: key2 {
      gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
    };
    key3: key3 {
      gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
    };
  };

  The limitations of usage are:
  - Only active high as we don't get events for keys that aren't pressed
  - Pressing multiple keys is best effort, state will be kept but no events
    are generated once the last key is released

compatible: "zephyr,gpio-emul-sdl"

include: base.yaml

properties:
  scancodes:
    type: array
    required: true
    description: |
      An array of SDL scancodes mapped to its GPIO index
