feat(behaviors): Add &none behavior
This commit is contained in:
parent
d7dee20e8d
commit
63e02d60dc
7 changed files with 115 additions and 0 deletions
|
@ -39,6 +39,7 @@ target_sources(app PRIVATE src/behaviors/behavior_reset.c)
|
|||
target_sources(app PRIVATE src/behaviors/behavior_mod_tap.c)
|
||||
target_sources(app PRIVATE src/behaviors/behavior_momentary_layer.c)
|
||||
target_sources(app PRIVATE src/behaviors/behavior_transparent.c)
|
||||
target_sources(app PRIVATE src/behaviors/behavior_none.c)
|
||||
target_sources(app PRIVATE src/behaviors/behavior_sensor_rotate_key_press.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble.c)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include <behaviors/key_press.dtsi>
|
||||
#include <behaviors/transparent.dtsi>
|
||||
#include <behaviors/none.dtsi>
|
||||
#include <behaviors/mod_tap.dtsi>
|
||||
#include <behaviors/momentary_layer.dtsi>
|
||||
#include <behaviors/reset.dtsi>
|
||||
|
|
15
app/dts/behaviors/none.dtsi
Normal file
15
app/dts/behaviors/none.dtsi
Normal file
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* Copyright (c) 2020 Pete Johanson
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
/ {
|
||||
behaviors {
|
||||
none: behavior_none {
|
||||
compatible = "zmk,behavior-none";
|
||||
label = "NONE";
|
||||
#binding-cells = <0>;
|
||||
};
|
||||
};
|
||||
};
|
8
app/dts/bindings/behaviors/zmk,behavior-none.yaml
Normal file
8
app/dts/bindings/behaviors/zmk,behavior-none.yaml
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Copyright (c) 2020, Pete Johanson
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
description: None Binding Behavior
|
||||
|
||||
compatible: "zmk,behavior-none"
|
||||
|
||||
include: zero_param.yaml
|
48
app/src/behaviors/behavior_none.c
Normal file
48
app/src/behaviors/behavior_none.c
Normal file
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#define DT_DRV_COMPAT zmk_behavior_none
|
||||
|
||||
#include <device.h>
|
||||
#include <power/reboot.h>
|
||||
#include <drivers/behavior.h>
|
||||
#include <logging/log.h>
|
||||
|
||||
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
|
||||
|
||||
struct behavior_none_config { };
|
||||
struct behavior_none_data { };
|
||||
|
||||
static int behavior_none_init(struct device *dev)
|
||||
{
|
||||
return 0;
|
||||
};
|
||||
|
||||
static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t _param1, u32_t _param2)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t _param1, u32_t _param2)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const struct behavior_driver_api behavior_none_driver_api = {
|
||||
.binding_pressed = on_keymap_binding_pressed,
|
||||
.binding_released = on_keymap_binding_released,
|
||||
};
|
||||
|
||||
|
||||
static const struct behavior_none_config behavior_none_config = {};
|
||||
|
||||
static struct behavior_none_data behavior_none_data;
|
||||
|
||||
DEVICE_AND_API_INIT(behavior_none, DT_INST_LABEL(0), behavior_none_init,
|
||||
&behavior_none_data,
|
||||
&behavior_none_config,
|
||||
APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
|
||||
&behavior_none_driver_api);
|
41
docs/docs/behavior/misc.md
Normal file
41
docs/docs/behavior/misc.md
Normal file
|
@ -0,0 +1,41 @@
|
|||
---
|
||||
title: Miscellaneous
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
There are a few miscellaneous behaviors that are helpful when working with layers in keymaps,
|
||||
in particular, with handling what happens in higher layers, and if events are passed to
|
||||
the next layer or not
|
||||
|
||||
## Transparent
|
||||
|
||||
The transparent behavior simply ignores key position presses/releases, so they will be
|
||||
passed down to the next active layer in the stack.
|
||||
|
||||
### Behavior Binding
|
||||
|
||||
- Reference: `&trans`
|
||||
- Parameters: None
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
&trans
|
||||
```
|
||||
|
||||
## None
|
||||
|
||||
The none behavior simply swallows and stops key position presses/releases, so they will **not**
|
||||
be passed down to the next active layer in the stack.
|
||||
|
||||
### Behavior Binding
|
||||
|
||||
- Reference: `&none`
|
||||
- Parameters: None
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
&none
|
||||
```
|
|
@ -10,6 +10,7 @@ module.exports = {
|
|||
Behaviors: [
|
||||
"behavior/key-press",
|
||||
"behavior/layers",
|
||||
"behavior/misc",
|
||||
"behavior/lighting",
|
||||
],
|
||||
Development: [
|
||||
|
|
Loading…
Reference in a new issue