This adds the following:
- A character map driver API, which maps Unicode code points to behavior
bindings.
- A zmk,character-map driver which implements this API. This driver is
designed for ROM efficiency, so it sends every value defined in the
map to one behavior and passes any code point not in the map through
to another. (A more flexible implementation that allows for a unique
behavior binding per character could be added later if necessary.)
- A zmk,send-string behavior, which users can define and bind to their
keymaps to send strings.
- A zmk_send_string() function, which queues the necessary behaviors
to type a UTF-8 string. This is separated from the send string
behavior since it could be used for other features such as Unicode
key sequences, behaviors that print dynamic messages, etc.
Initial work on a soft on/off support for ZMK. Triggering soft off
puts the device into deep sleep with only a specific GPIO pin
configured to wake the device, avoiding waking from other key
presses in the matrix like the normal deep sleep.
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
* Add HID report/descriptor for a new report with mouse buttons,
and x/y/wheel deltas.
* New mouse key press behavior for press/release of mouse keys.
* Add constants for HID main item values (e.g. data/array/absolute)
* Define and use constants for our HID report IDs.
Added a new setting to remember the user's preferred endpoint. When both USB and
BLE are connected, the preferred endpoint will be used.
Added a new behavior to control this setting. It supports commands:
&end END_USB - Prefer USB output
&end END_BLE - Prefer BLE output
&end END_TOG - Toggle between USB and BLE
* Add `bt` behavior that can be used to perform certain actions,
such as next/prev identity, reset identity, etc.
NOTE: Multiple identities is only supported for non-split shields,
due to missing Zephyr identity functionality for dual
central/peripheral devices.
* Proper bond reset tied to action, that honors peripheral bonds,
so folks can reset and pair to other hosts, without breaking
bonds between splt halves.
* Add initial event manager implementation,
roughly mimicking Nordic's API.
* Add `position_state_changed` and
`keycode_state_changed` events.
* Hook up HID and keymap to new events
instead of using behaviour global event
crazy.