54 lines
1.4 KiB
YAML
54 lines
1.4 KiB
YAML
![]() |
# 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
|