qmk/users/datagrok
Michael F. Lamb 5fb95c5f94 create users/datagrok (#7653)
* users/datagrok: add shared functions

* users/datagrok: improve base-layer selection feature

* users/datagrok: add README.md
2020-01-26 23:26:40 -05:00
..
feature_cdeq.c create users/datagrok (#7653) 2020-01-26 23:26:40 -05:00
feature_cdeq.h create users/datagrok (#7653) 2020-01-26 23:26:40 -05:00
feature_default_layers_selector.c create users/datagrok (#7653) 2020-01-26 23:26:40 -05:00
feature_default_layers_selector.h create users/datagrok (#7653) 2020-01-26 23:26:40 -05:00
README.md create users/datagrok (#7653) 2020-01-26 23:26:40 -05:00

datagrok's QMK user-space code

cdeq "comma dot exclamation question"

This is a hack to place question mark on shift-comma and exclamation mark on shift-period.

When using an operating system configured for a US/qwerty layout this replaces the angle brackets < > with ? !. This helps on small keyboards to keep symbols for prose co-located in one layer, and symbols for programming in another.

It's a "hack" because the "proper" way to accomplish this would be to edit the operating system's keymap.

setup

in your keymap.c:

#include "feature_cdeq.h"

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    return process_record_cdeq(keycode, record);
}

in your rules.mk,

SRC += feature_cdeq.c

examples

  • atreus:datagrok
  • bm43a:datagrok
  • mitosis:datagrok

base layer selector

Defines a keycode KF_LAYO to rotate between available default layers.

Shift+KF_LAYO makes the currently selected one persistent across reboots.

This is useful if you'd like your keyboard to support and toggle between QWERTY, Dvorak, Colemak, Workman, and other layouts while keeping a common arrangement of modifier and function keys.

Since toggling layouts seems like something one does infrequently, I wanted to be able to operate this feature with a single key, instead of one for each layer like planck:default or bootmagic.

setup

in your keymap.c:

#define KF_LAYO SAFE_RANGE
#include "feature_default_layers_selector.h"
const uint8_t highest_base_layer = 4;

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  return \
    process_record_save_default_layer(keycode, record) && \
    process_record_select_default_layer(keycode, record);
}

in your rules.mk,

SRC += feature_default_layers_selector.c

examples

  • atreus:datagrok
  • bm43a:datagrok
  • mitosis:datagrok