| # 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. |
| |
| 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: |
| |
| /* 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>; |
| }; |
| key1: 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 |