Skip to content

Commit

Permalink
feat(display): Add config for modifier chars
Browse files Browse the repository at this point in the history
  • Loading branch information
caksoylar committed May 12, 2023
1 parent 51edd47 commit 9924e68
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 13 deletions.
8 changes: 8 additions & 0 deletions app/src/display/widgets/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,12 @@ config ZMK_WIDGET_MODS_STATUS
depends on !ZMK_SPLIT || ZMK_SPLIT_ROLE_CENTRAL
select LV_USE_LABEL

if ZMK_WIDGET_MODS_STATUS

config ZMK_WIDGET_MODS_STATUS_CHARACTERS
string "Characters to show for each modifier, corresponding to Control/Shift/Alt/GUI respectively"
default "CSAG"

endif

endmenu
14 changes: 10 additions & 4 deletions app/src/display/widgets/mods_status.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
#include <zmk/endpoints.h>
#include <zmk/hid.h>

#define MOD_CHARS CONFIG_ZMK_WIDGET_MODS_STATUS_CHARACTERS
#define MOD_CHARS_LEN (sizeof(MOD_CHARS) - 1)

BUILD_ASSERT(MOD_CHARS_LEN == 4,
"ERROR: CONFIG_ZMK_WIDGET_MODS_STATUS_CHARACTERS should have exactly 4 characters");

static sys_slist_t widgets = SYS_SLIST_STATIC_INIT(&widgets);

struct mods_status_state {
Expand All @@ -29,13 +35,13 @@ void set_mods_symbol(lv_obj_t *label, struct mods_status_state state) {

LOG_DBG("mods changed to %i", state.mods);
if (state.mods & (MOD_LCTL | MOD_RCTL))
strcat(text, "C");
strncat(text, &MOD_CHARS[0], 1);
if (state.mods & (MOD_LSFT | MOD_RSFT))
strcat(text, "S");
strncat(text, &MOD_CHARS[1], 1);
if (state.mods & (MOD_LALT | MOD_RALT))
strcat(text, "A");
strncat(text, &MOD_CHARS[2], 1);
if (state.mods & (MOD_LGUI | MOD_RGUI))
strcat(text, "G");
strncat(text, &MOD_CHARS[3], 1);

lv_label_set_text(label, text);
lv_obj_align(label, LV_ALIGN_BOTTOM_RIGHT, -1, 0);
Expand Down
19 changes: 10 additions & 9 deletions docs/docs/config/displays.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,16 @@ Definition files:
- [zmk/app/src/display/Kconfig](https://github.com/zmkfirmware/zmk/blob/main/app/src/display/Kconfig)
- [zmk/app/src/display/widgets/Kconfig](https://github.com/zmkfirmware/zmk/blob/main/app/src/display/widgets/Kconfig)

| Config | Type | Description | Default |
| -------------------------------------------------- | ---- | -------------------------------------------------------------- | ------- |
| `CONFIG_ZMK_DISPLAY` | bool | Enable support for displays | n |
| `CONFIG_ZMK_WIDGET_LAYER_STATUS` | bool | Enable a widget to show the highest, active layer | y |
| `CONFIG_ZMK_WIDGET_BATTERY_STATUS` | bool | Enable a widget to show battery charge information | y |
| `CONFIG_ZMK_WIDGET_BATTERY_STATUS_SHOW_PERCENTAGE` | bool | If battery widget is enabled, show percentage instead of icons | n |
| `CONFIG_ZMK_WIDGET_OUTPUT_STATUS` | bool | Enable a widget to show the current output (USB/BLE) | y |
| `CONFIG_ZMK_WIDGET_WPM_STATUS` | bool | Enable a widget to show words per minute | n |
| `CONFIG_ZMK_WIDGET_MODS_STATUS` | bool | Enable a widget to show active modifiers | n |
| Config | Type | Description | Default |
| -------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------- | ------- |
| `CONFIG_ZMK_DISPLAY` | bool | Enable support for displays | n |
| `CONFIG_ZMK_WIDGET_LAYER_STATUS` | bool | Enable a widget to show the highest, active layer | y |
| `CONFIG_ZMK_WIDGET_BATTERY_STATUS` | bool | Enable a widget to show battery charge information | y |
| `CONFIG_ZMK_WIDGET_BATTERY_STATUS_SHOW_PERCENTAGE` | bool | If battery widget is enabled, show percentage instead of icons | n |
| `CONFIG_ZMK_WIDGET_OUTPUT_STATUS` | bool | Enable a widget to show the current output (USB/BLE) | y |
| `CONFIG_ZMK_WIDGET_WPM_STATUS` | bool | Enable a widget to show words per minute | n |
| `CONFIG_ZMK_WIDGET_MODS_STATUS` | bool | Enable a widget to show active modifiers | n |
| `CONFIG_ZMK_WIDGET_MODS_STATUS_CHARACTERS` | string | Characters to show for each modifier, corresponding to Control/Shift/Alt/GUI respectively | "CSAG" |

Note that WPM and modifiers widgets are both shown on the bottom right of the display and hence can conflict with each other.

Expand Down

0 comments on commit 9924e68

Please sign in to comment.