Browse Source

feat(behaviors): Add &none behavior

xmkb
Pete Johanson 4 years ago
parent
commit
63e02d60dc
  1. 1
      app/CMakeLists.txt
  2. 1
      app/dts/behaviors.dtsi
  3. 15
      app/dts/behaviors/none.dtsi
  4. 8
      app/dts/bindings/behaviors/zmk,behavior-none.yaml
  5. 48
      app/src/behaviors/behavior_none.c
  6. 41
      docs/docs/behavior/misc.md
  7. 1
      docs/sidebars.js

1
app/CMakeLists.txt

@ -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_mod_tap.c)
target_sources(app PRIVATE src/behaviors/behavior_momentary_layer.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_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(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_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c)
target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble.c)

1
app/dts/behaviors.dtsi

@ -1,5 +1,6 @@
#include <behaviors/key_press.dtsi> #include <behaviors/key_press.dtsi>
#include <behaviors/transparent.dtsi> #include <behaviors/transparent.dtsi>
#include <behaviors/none.dtsi>
#include <behaviors/mod_tap.dtsi> #include <behaviors/mod_tap.dtsi>
#include <behaviors/momentary_layer.dtsi> #include <behaviors/momentary_layer.dtsi>
#include <behaviors/reset.dtsi> #include <behaviors/reset.dtsi>

15
app/dts/behaviors/none.dtsi

@ -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

@ -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

@ -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

@ -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
```

1
docs/sidebars.js

@ -10,6 +10,7 @@ module.exports = {
Behaviors: [ Behaviors: [
"behavior/key-press", "behavior/key-press",
"behavior/layers", "behavior/layers",
"behavior/misc",
"behavior/lighting", "behavior/lighting",
], ],
Development: [ Development: [

Loading…
Cancel
Save