update with qmk master (#2887)
* add splitography * trim keymap.c * add Makefile * rename Makefile to rules.mk * thumb key definition * thumb key definition * thumb key definition * blue/orange layer swap, double qwerty steno exit * fix TxBolt 1-3 key chord suppression (PREVENT_STUCK_MODIFIERS) * add audio control * beakl 8+10, dvorak (standard and splitography wide variant) * beakl 8+10, dvorak (standard and splitography wide variant) * shift layer home blocks * regex layer key changes * tilde align symbol navigation and regex layer * splitography/planck code break out into common .h segments * splitography/planck code break out into common .h segments * splitography common library * splitography common library * splitography beakl altgr home row * updating with qmk master
This commit is contained in:
parent
5170398479
commit
50b5c6ad72
68 changed files with 8574 additions and 0 deletions
41
keyboards/planck/keymaps/sdothum/common/chord_layout.h
Normal file
41
keyboards/planck/keymaps/sdothum/common/chord_layout.h
Normal file
|
@ -0,0 +1,41 @@
|
|||
|
||||
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// .................................................................. Short Cuts
|
||||
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | | Copy | Paste| | | | | | | | |
|
||||
// |--------------------------------------------------------------+------+------+------|
|
||||
// | Undo | Cut | Copy | Paste| | | | | PRIV | PUB | | |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | Nak | Eot | | | | | | | | |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | | | | f() | | | | | |
|
||||
// | | | | | | | | f() | | | | | see _PLOVER
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_EDIT] = {
|
||||
{_______, _______, TMCOPY, TMPASTE, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
{UNDO, CUT, COPY, PASTE, _______, _______, _______, _______, TD_PRIV, TD_SEND, _______, _______},
|
||||
{_______, _______, NAK, EOT, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
{_______, _______, _______, _______, _______, _______, ___fn__, ___fn__, _______, _______, _______, _______},
|
||||
},
|
||||
|
||||
// ................................................................ Adjust Layer
|
||||
|
||||
// ,-----------------------------------------------------------------------------------.
|
||||
// |Plover| | | | | | | | | | | |
|
||||
// |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
// |Aud on| | | | | | | | | | | |
|
||||
// |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
// | Reset| | | | | | | | | | | |
|
||||
// |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
// | | | | f() | | | | | f() | | | |
|
||||
// `-----------------------------------------------------------------------------------'
|
||||
|
||||
[_ADJUST] = {
|
||||
{PLOVER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
{AU_ON, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
{RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
{_______, _______, _______, ___fn__, _______, _______, _______, _______, ___fn__, _______, _______, _______},
|
||||
},
|
56
keyboards/planck/keymaps/sdothum/common/init.h
Normal file
56
keyboards/planck/keymaps/sdothum/common/init.h
Normal file
|
@ -0,0 +1,56 @@
|
|||
|
||||
// ....................................................................... Audio
|
||||
|
||||
void matrix_init_user(void)
|
||||
{
|
||||
#ifdef STENO_ENABLE
|
||||
steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI
|
||||
#endif
|
||||
#ifdef AUDIO_ENABLE
|
||||
startup_user();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
void led_set_user(uint8_t usb_led)
|
||||
{
|
||||
static uint8_t old_usb_led = 0;
|
||||
_delay_ms(10); // gets rid of tick
|
||||
if (!is_playing_notes()) {
|
||||
if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
|
||||
// if capslock LED is turning on
|
||||
PLAY_SONG(song_caps_on);
|
||||
}
|
||||
else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) {
|
||||
// if capslock LED is turning off
|
||||
PLAY_SONG(song_caps_off);
|
||||
}
|
||||
}
|
||||
old_usb_led = usb_led;
|
||||
}
|
||||
#endif
|
||||
|
||||
void startup_user(void)
|
||||
{
|
||||
_delay_ms(20); // gets rid of tick
|
||||
PLAY_SONG(song_startup);
|
||||
}
|
||||
|
||||
void shutdown_user(void)
|
||||
{
|
||||
PLAY_SONG(song_goodbye);
|
||||
_delay_ms(150);
|
||||
stop_all_notes();
|
||||
}
|
||||
|
||||
void music_on_user(void)
|
||||
{
|
||||
music_scale_user();
|
||||
}
|
||||
|
||||
void music_scale_user(void)
|
||||
{
|
||||
PLAY_SONG(music_scale);
|
||||
}
|
||||
#endif
|
656
keyboards/planck/keymaps/sdothum/common/keycode_functions.h
Normal file
656
keyboards/planck/keymaps/sdothum/common/keycode_functions.h
Normal file
|
@ -0,0 +1,656 @@
|
|||
|
||||
// .......................................................... Keycode Primitives
|
||||
|
||||
// register simple key press
|
||||
void tap_key(uint16_t keycode)
|
||||
{
|
||||
register_code (keycode);
|
||||
unregister_code(keycode);
|
||||
}
|
||||
|
||||
void shift_key(uint16_t keycode)
|
||||
{
|
||||
register_code (KC_LSFT);
|
||||
tap_key (keycode);
|
||||
unregister_code(KC_LSFT);
|
||||
}
|
||||
|
||||
#define SHIFT 1
|
||||
#define NOSHIFT 0
|
||||
|
||||
static uint16_t key_timer = 0;
|
||||
|
||||
// key press for thumb_layer() and lt_shift() macros
|
||||
bool key_press(uint8_t shift, uint16_t keycode)
|
||||
{
|
||||
if (keycode) {
|
||||
if (timer_elapsed(key_timer) < TAPPING_TERM) {
|
||||
if (shift) {
|
||||
shift_key(keycode);
|
||||
}
|
||||
else {
|
||||
tap_key(keycode);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// ALT_T, CTL_T, GUI_T, SFT_T for shifted keycodes
|
||||
void mt_shift(keyrecord_t *record, uint16_t modifier, uint16_t modifier2, uint16_t keycode)
|
||||
{
|
||||
if (record->event.pressed) {
|
||||
key_timer = timer_read();
|
||||
register_code(modifier);
|
||||
if (modifier2) {
|
||||
register_code(modifier2);
|
||||
}
|
||||
}
|
||||
else {
|
||||
unregister_code(modifier);
|
||||
if (modifier2) {
|
||||
unregister_code(modifier2);
|
||||
}
|
||||
if (timer_elapsed(key_timer) < TAPPING_TERM) {
|
||||
shift_key(keycode);
|
||||
}
|
||||
key_timer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// ................................................................... Mod Masks
|
||||
|
||||
// tap dance persistant mods, see process_record_user()
|
||||
// keyboard_report->mods (?) appears to be cleared by tap dance
|
||||
static uint8_t mods = 0;
|
||||
|
||||
void tap_mods(keyrecord_t *record, uint16_t keycode)
|
||||
{
|
||||
if (record->event.pressed) {
|
||||
mods |= MOD_BIT(keycode);
|
||||
}
|
||||
else {
|
||||
mods &= ~(MOD_BIT(keycode));
|
||||
}
|
||||
}
|
||||
|
||||
// (un)register modifiers
|
||||
void modifier(void (*f)(uint8_t))
|
||||
{
|
||||
if (mods & MOD_BIT(KC_LCTL)) {
|
||||
(*f)(KC_LCTL);
|
||||
}
|
||||
if (mods & MOD_BIT(KC_LGUI)) {
|
||||
(*f)(KC_LGUI);
|
||||
}
|
||||
if (mods & MOD_BIT(KC_LALT)) {
|
||||
(*f)(KC_LALT);
|
||||
}
|
||||
}
|
||||
|
||||
// .................................................... Triple Dance Shift/Layer
|
||||
|
||||
static uint8_t dt_shift = 0;
|
||||
|
||||
void double_shift(uint16_t keycode, uint8_t layer)
|
||||
{
|
||||
tap_key (keycode);
|
||||
if (DT_SHIFT) {
|
||||
// set_oneshot_mods(MOD_LSFT);
|
||||
// layer_on(layer);
|
||||
layer_on (_SHIFT);
|
||||
set_oneshot_layer(_SHIFT, ONESHOT_START);
|
||||
dt_shift = 1;
|
||||
}
|
||||
else {
|
||||
layer_on(layer);
|
||||
}
|
||||
}
|
||||
|
||||
// tap dance LT (LAYER, KEY) emulation with <KEY><DOWN> -> <KEY><SHIFT> and auto-repeat extensions!
|
||||
void tap_shift(qk_tap_dance_state_t *state, uint16_t keycode, uint8_t layer)
|
||||
{
|
||||
// double tap plus down
|
||||
if (state->count > 2) {
|
||||
// double enter shift
|
||||
if (keycode == KC_ENT) {
|
||||
tap_key (keycode);
|
||||
double_shift(keycode, layer);
|
||||
}
|
||||
// repeating keycode
|
||||
else {
|
||||
register_code(keycode);
|
||||
}
|
||||
}
|
||||
// tap plus down (or double tap): keycode (one shot) shift
|
||||
else if (state->count > 1) {
|
||||
double_shift(keycode, layer);
|
||||
}
|
||||
// down: shift
|
||||
else if (state->pressed) {
|
||||
layer_on(layer);
|
||||
}
|
||||
// tap: keycode
|
||||
else {
|
||||
modifier(register_code);
|
||||
tap_key (keycode);
|
||||
modifier(unregister_code);
|
||||
}
|
||||
}
|
||||
|
||||
void tap_reset(uint16_t keycode, uint8_t layer)
|
||||
{
|
||||
unregister_code(keycode);
|
||||
if (DT_SHIFT && dt_shift) {
|
||||
clear_oneshot_layer_state(ONESHOT_PRESSED);
|
||||
dt_shift = 0;
|
||||
}
|
||||
else {
|
||||
layer_off(layer);
|
||||
}
|
||||
}
|
||||
|
||||
// augment pseudo LT (_RSHIFT, KC_ENT) handling below for rapid <ENTER><SHIFT> sequences
|
||||
void enter(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_shift(state, KC_ENT, _RSHIFT);
|
||||
}
|
||||
|
||||
void enter_reset(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_reset(KC_ENT, _RSHIFT);
|
||||
}
|
||||
|
||||
// augment pseudo LT (_LSHIFT, KC_SPC) handling below for rapid <SPACE><SHIFT> sequences
|
||||
void space(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_shift(state, KC_SPC, _LSHIFT);
|
||||
}
|
||||
|
||||
void space_reset(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_reset(KC_SPC, _LSHIFT);
|
||||
}
|
||||
|
||||
// ......................................................... Triple Dance Insert
|
||||
|
||||
void double_max(uint8_t count, uint8_t shift, uint16_t keycode)
|
||||
{
|
||||
if (shift) {
|
||||
shift_key(keycode);
|
||||
if (count > 1) {
|
||||
shift_key(keycode);
|
||||
}
|
||||
}
|
||||
else {
|
||||
tap_key(keycode);
|
||||
if (count > 1) {
|
||||
tap_key(keycode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void colon(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
if (state->count > 2) {
|
||||
tap_key (KC_SPC);
|
||||
shift_key(KC_SCLN);
|
||||
shift_key(KC_SCLN);
|
||||
tap_key (KC_SPC);
|
||||
}
|
||||
else {
|
||||
double_max(state->count, SHIFT, KC_SCLN);
|
||||
}
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
|
||||
void eql(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
if (state->count > 2) {
|
||||
tap_key(KC_SPC);
|
||||
tap_key(KC_SLSH);
|
||||
tap_key(KC_EQL);
|
||||
tap_key(KC_SPC);
|
||||
}
|
||||
else {
|
||||
double_max(state->count, NOSHIFT, KC_EQL);
|
||||
}
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
|
||||
void greater(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
if (state->count > 2) {
|
||||
tap_key (KC_SPC);
|
||||
tap_key (KC_MINS);
|
||||
shift_key(KC_DOT);
|
||||
tap_key (KC_SPC);
|
||||
}
|
||||
else {
|
||||
double_max(state->count, SHIFT, KC_DOT);
|
||||
}
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
|
||||
void lesser(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
if (state->count > 2) {
|
||||
tap_key (KC_SPC);
|
||||
shift_key(KC_COMM);
|
||||
tap_key (KC_MINS);
|
||||
tap_key (KC_SPC);
|
||||
}
|
||||
else {
|
||||
double_max(state->count, SHIFT, KC_COMM);
|
||||
}
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
|
||||
void tilde(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
// double tap plus down: repeating keycode
|
||||
if (state->count > 2) {
|
||||
register_code(KC_LSFT);
|
||||
register_code(KC_GRV);
|
||||
}
|
||||
// tap: keycode
|
||||
else {
|
||||
shift_key(KC_GRV);
|
||||
// double tap: unix home directory
|
||||
if (state->count > 1) {
|
||||
tap_key(KC_SLSH);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tilde_reset(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
unregister_code(KC_GRV);
|
||||
unregister_code(KC_LSFT);
|
||||
}
|
||||
|
||||
// ............................................................. Tap Dance Pairs
|
||||
|
||||
// tap dance shift rules
|
||||
#define S_NEVER 0
|
||||
#define S_SINGLE 1
|
||||
#define S_DOUBLE 2
|
||||
#define S_ALWAYS S_SINGLE | S_DOUBLE
|
||||
|
||||
void symbol_pair(uint8_t shift, uint16_t left, uint16_t right)
|
||||
{
|
||||
if (shift & S_DOUBLE) {
|
||||
shift_key(left);
|
||||
shift_key(right);
|
||||
}
|
||||
else {
|
||||
tap_key(left);
|
||||
tap_key(right);
|
||||
}
|
||||
}
|
||||
|
||||
#define CLOSE 1
|
||||
|
||||
// tap dance symbol pairs
|
||||
void tap_pair(qk_tap_dance_state_t *state, uint8_t shift, uint16_t left, uint16_t right, uint16_t modifier, uint8_t close)
|
||||
{
|
||||
// triple tap: left right with cursor between symbol pair a la vim :-)
|
||||
if (state->count > 2) {
|
||||
symbol_pair(shift, left, right);
|
||||
tap_key (KC_LEFT);
|
||||
}
|
||||
// double tap: left right
|
||||
else if (state->count > 1) {
|
||||
symbol_pair(shift, left, right);
|
||||
}
|
||||
// down: modifier
|
||||
else if (state->pressed) {
|
||||
if (modifier) {
|
||||
register_code(modifier);
|
||||
}
|
||||
}
|
||||
// tap: left (close: right)
|
||||
else {
|
||||
if (shift & S_SINGLE) {
|
||||
shift_key(close ? right : left);
|
||||
}
|
||||
else {
|
||||
tap_key(close ? right : left);
|
||||
}
|
||||
}
|
||||
if (!modifier) {
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
}
|
||||
|
||||
void doublequote(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_pair(state, S_ALWAYS, KC_QUOT, KC_QUOT, 0, 0);
|
||||
}
|
||||
|
||||
void grave(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_pair(state, S_NEVER, KC_GRV, KC_GRV, 0, 0);
|
||||
}
|
||||
|
||||
void lbrace(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, 0);
|
||||
}
|
||||
|
||||
void lcurly(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, 0);
|
||||
}
|
||||
|
||||
void lparen(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_pair(state, S_ALWAYS, KC_9, KC_0, KC_LCTL, 0);
|
||||
}
|
||||
|
||||
void lparen_reset(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
unregister_code(KC_LCTL);
|
||||
}
|
||||
|
||||
void quote(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_pair(state, S_NEVER, KC_QUOT, KC_QUOT, 0, 0);
|
||||
}
|
||||
|
||||
void rangle(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_pair(state, S_ALWAYS, KC_COMM, KC_DOT, 0, CLOSE);
|
||||
}
|
||||
|
||||
void rbrace(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_pair(state, S_NEVER, KC_LBRC, KC_RBRC, 0, CLOSE);
|
||||
}
|
||||
|
||||
void rcurly(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_pair(state, S_ALWAYS, KC_LBRC, KC_RBRC, 0, CLOSE);
|
||||
}
|
||||
|
||||
void rparen(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_pair(state, S_ALWAYS, KC_9, KC_0, 0, CLOSE);
|
||||
}
|
||||
|
||||
void rparen_reset(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
unregister_code(KC_LCTL);
|
||||
}
|
||||
|
||||
// ............................................................ Tap Dance Insert
|
||||
|
||||
void comma(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
tap_key(KC_COMM);
|
||||
if (state->count > 1) {
|
||||
tap_key(KC_SPC);
|
||||
}
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
|
||||
void dot(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
if (state->count > 1) {
|
||||
shift_key(KC_COLN);
|
||||
}
|
||||
else {
|
||||
tap_key(KC_DOT);
|
||||
}
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
|
||||
// compile time macro string, see functions/hardware planck script
|
||||
void private(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
if (state->count > 1) {
|
||||
#ifdef PRIVATE_STRING
|
||||
#include "private_string.h"
|
||||
#endif
|
||||
}
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
|
||||
// config.h defined string
|
||||
void send(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
if (state->count > 1) {
|
||||
SEND_STRING(PUBLIC_STRING);
|
||||
}
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
|
||||
// .......................................................... Tap Dance One Shot
|
||||
|
||||
void caps(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
if (state->count > 1) {
|
||||
tap_key(KC_CAPS);
|
||||
}
|
||||
else {
|
||||
set_oneshot_mods(MOD_LSFT);
|
||||
register_code (KC_LSFT); // on hold down
|
||||
}
|
||||
}
|
||||
|
||||
void caps_reset(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
unregister_code(KC_LSFT);
|
||||
}
|
||||
|
||||
// ................................................................... Tap Dance
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, caps, caps_reset)
|
||||
,[_COLN] = ACTION_TAP_DANCE_FN (colon)
|
||||
,[_COMM] = ACTION_TAP_DANCE_FN (comma)
|
||||
,[_DOT] = ACTION_TAP_DANCE_FN (dot)
|
||||
,[_DQOT] = ACTION_TAP_DANCE_FN (doublequote)
|
||||
,[_ENT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, enter, enter_reset)
|
||||
,[_EQL] = ACTION_TAP_DANCE_FN (eql)
|
||||
,[_GRV] = ACTION_TAP_DANCE_FN (grave)
|
||||
,[_GT] = ACTION_TAP_DANCE_FN (greater)
|
||||
,[_LBRC] = ACTION_TAP_DANCE_FN (lbrace)
|
||||
,[_LCBR] = ACTION_TAP_DANCE_FN (lcurly)
|
||||
,[_LPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lparen, lparen_reset)
|
||||
,[_LT] = ACTION_TAP_DANCE_FN (lesser)
|
||||
,[_PRIV] = ACTION_TAP_DANCE_FN (private)
|
||||
,[_QUOT] = ACTION_TAP_DANCE_FN (quote)
|
||||
,[_RBRC] = ACTION_TAP_DANCE_FN (rbrace)
|
||||
,[_RCBR] = ACTION_TAP_DANCE_FN (rcurly)
|
||||
,[_RNGL] = ACTION_TAP_DANCE_FN (rangle)
|
||||
,[_RPRN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rparen, rparen_reset)
|
||||
,[_SEND] = ACTION_TAP_DANCE_FN (send)
|
||||
,[_SPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, space, space_reset)
|
||||
,[_TILD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tilde, tilde_reset)
|
||||
};
|
||||
|
||||
// .............................................................. Dynamic Layers
|
||||
|
||||
#define LEFT 1
|
||||
#define RIGHT 2
|
||||
static uint8_t thumb = 0;
|
||||
|
||||
// LEFT (KC_SPC, S(KC_BSLS)), RIGHT (KC_LEFT, S(KC_LEFT)) opposite thumb combinations, see process_record_user()
|
||||
// up, up -> _BASE
|
||||
// up, down -> _SYMBOL
|
||||
// down, up -> _NUMBER
|
||||
// down, down -> _MOUSE // see layer keycodes that raise mouse layer
|
||||
#define THUMBS_DOWN _MOUSE // layer
|
||||
|
||||
static uint8_t overlayer = 0;
|
||||
|
||||
// left right thumb layer combinations
|
||||
void thumb_layer(keyrecord_t *record, uint8_t side, uint8_t shift, uint16_t keycode, uint8_t thumb_dn_layer, uint8_t thumb_up_layer)
|
||||
{
|
||||
if (record->event.pressed) {
|
||||
// layer_on via tap_layer(), see process_record_user()
|
||||
key_timer = timer_read();
|
||||
thumb = thumb | side;
|
||||
}
|
||||
else {
|
||||
layer_off(thumb_dn_layer);
|
||||
// opposite thumb_layer() thumb may have switched effective layer!
|
||||
if (overlayer) {
|
||||
layer_off(overlayer);
|
||||
overlayer = 0;
|
||||
}
|
||||
if (!key_press(shift, keycode)) {
|
||||
layer_off(THUMBS_DOWN); // both thumbs needed
|
||||
// opposite thumb down? see left right combination layer table above
|
||||
if (thumb & (side == LEFT ? RIGHT : LEFT)) {
|
||||
layer_on(thumb_up_layer);
|
||||
overlayer = thumb_up_layer;
|
||||
}
|
||||
}
|
||||
clear_mods();
|
||||
thumb = thumb & ~side;
|
||||
key_timer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// #ifdef STENO_ENABLE
|
||||
// // LT for steno keycode
|
||||
// void stn_layer(keyrecord_t *record, uint16_t keycode, uint8_t layer)
|
||||
// {
|
||||
// if (record->event.pressed) {
|
||||
// key_timer = timer_read();
|
||||
// if (keycode) {
|
||||
// process_steno(keycode, record);
|
||||
// }
|
||||
// layer_on(layer);
|
||||
// }
|
||||
// else {
|
||||
// layer_off(layer);
|
||||
// if (keycode) {
|
||||
// if (timer_elapsed(key_timer) < TAPPING_TERM) {
|
||||
// process_steno(keycode, record);
|
||||
// }
|
||||
// else {
|
||||
// // clear pressed state (request push of updated) process_steno.c and .h
|
||||
// // steno_clear_state();
|
||||
// }
|
||||
// }
|
||||
// key_timer = 0;
|
||||
// }
|
||||
// }
|
||||
// #endif
|
||||
|
||||
// LT for S(keycode)
|
||||
void lt_shift(keyrecord_t *record, uint16_t keycode, uint8_t layer)
|
||||
{
|
||||
if (record->event.pressed) {
|
||||
key_timer = timer_read();
|
||||
layer_on(layer);
|
||||
}
|
||||
else {
|
||||
layer_off(layer);
|
||||
// for shifted keycodes, hence, LT_SHIFT
|
||||
key_press(SHIFT, keycode);
|
||||
clear_mods();
|
||||
key_timer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// set layer asap to overcome macro latency errors, notably tap dance and LT usage
|
||||
// this routine inexplicably (?) sets layer_on() faster than can be done in thumb_layer()
|
||||
void tap_layer(keyrecord_t *record, uint8_t layer)
|
||||
{
|
||||
if (record->event.pressed) {
|
||||
layer_on(layer);
|
||||
}
|
||||
else {
|
||||
layer_off(layer);
|
||||
}
|
||||
}
|
||||
|
||||
// ..................................................................... Keymaps
|
||||
|
||||
// void persistant_default_layer_set(uint16_t default_layer)
|
||||
// {
|
||||
// eeconfig_update_default_layer(default_layer);
|
||||
// default_layer_set (default_layer);
|
||||
// }
|
||||
|
||||
void clear_layers(void)
|
||||
{
|
||||
uint8_t layer;
|
||||
for (layer = 0; layer < _END_LAYERS; layer++) {
|
||||
layer_off(layer);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CENTER_TT
|
||||
static uint16_t tt_keycode = 0; // current TT keycode
|
||||
|
||||
void clear_tt(void)
|
||||
{
|
||||
if (tt_keycode == KC_CAPS) {
|
||||
tap_key(KC_CAPS); // clear capslock
|
||||
}
|
||||
tt_keycode = 0;
|
||||
clear_layers();
|
||||
set_single_persistent_default_layer(_BASE);
|
||||
}
|
||||
#endif
|
||||
|
||||
// txbolt plover run state
|
||||
static uint8_t plover = 0;
|
||||
|
||||
void base_layer(void)
|
||||
{
|
||||
#ifdef AUDIO_ENABLE
|
||||
if (plover) {
|
||||
PLAY_SONG(song_plover_gb);
|
||||
}
|
||||
else {
|
||||
PLAY_SONG(song_qwerty);
|
||||
}
|
||||
#endif
|
||||
clear_layers();
|
||||
set_single_persistent_default_layer(_BASE);
|
||||
}
|
||||
|
||||
void toggle_plover(uint8_t state)
|
||||
{
|
||||
if (plover != state) {
|
||||
#ifdef PLOVER_KEYBIND
|
||||
#include "plover_keybind.h"
|
||||
#endif
|
||||
plover = state;
|
||||
}
|
||||
}
|
||||
|
||||
void steno(keyrecord_t *record)
|
||||
{
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(song_plover);
|
||||
#endif
|
||||
clear_layers();
|
||||
layer_on(_PLOVER);
|
||||
if (!eeconfig_is_enabled()) {
|
||||
eeconfig_init();
|
||||
}
|
||||
keymap_config.raw = eeconfig_read_keymap();
|
||||
keymap_config.nkro = 1;
|
||||
eeconfig_update_keymap(keymap_config.raw);
|
||||
if (!plover) {
|
||||
toggle_plover(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void steno_exit(keyrecord_t *record)
|
||||
{
|
||||
if (record->event.pressed) {
|
||||
base_layer();
|
||||
toggle_plover(0);
|
||||
}
|
||||
}
|
87
keyboards/planck/keymaps/sdothum/common/number_fkey_layout.h
Normal file
87
keyboards/planck/keymaps/sdothum/common/number_fkey_layout.h
Normal file
|
@ -0,0 +1,87 @@
|
|||
|
||||
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ......................................................... Number Keypad Layer
|
||||
#ifdef SHIFT_SYMBOLS
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | F | E | D | | | | / | 7 | 8 | 9 | * |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | Ctrl | C | B | A | | | | . | 4 | 5 | 6 | - |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | # | G | \ | | | | , | 1 | 2 | 3 | + |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | f() | | | | 0 | = | | | |
|
||||
// | | | | f() | | | | = | 0 | | | |
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_NUMBER] = {
|
||||
{_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
|
||||
{OS_CTL, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
|
||||
{_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
|
||||
#ifdef THUMB_0
|
||||
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
|
||||
#else
|
||||
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
|
||||
#endif
|
||||
},
|
||||
#else
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | F | E | D | | | | / | 7 | 8 | 9 | * |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | Ctrl | C | B | A | | | | . | 4 | 5 | 6 | - |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | # | X | G | | | | , | 1 | 2 | 3 | + |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | f() | | | | 0 | = | | | |
|
||||
// | | | | f() | | | | = | 0 | | | |
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_NUMBER] = {
|
||||
{_______, KC_F, MT_E, KC_D, _______, _______, _______, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
|
||||
{OS_CTL, GT_C, AT_B, LT_A, _______, _______, _______, KC_DOT, KC_4, KC_5, KC_6, KC_MINS},
|
||||
{_______, KC_HASH, MT_X, S(KC_G), _______, _______, _______, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
|
||||
#ifdef THUMB_0
|
||||
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_0, LT_EQL, ___x___, ___x___, ___x___},
|
||||
#else
|
||||
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_EQL, LT_0, ___x___, ___x___, ___x___},
|
||||
#endif
|
||||
},
|
||||
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | | | | | | | { | & | ? | : | } |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | f() | | | | ( | $ | % | ^ | ) |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | | | | | [ | < | ~ | > | ] |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | f() | | | | \ | | | | | |
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_NUMSYM] = {
|
||||
{_______, _______, _______, ___x___, _______, _______, _______, TD_LCBR, KC_AMPR, KC_QUES, KC_COLN, KC_RCBR},
|
||||
{___x___, ___x___, ___x___, ___fn__, _______, _______, _______, TD_LPRN, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN},
|
||||
{_______, _______, _______, ___x___, _______, _______, _______, TD_LBRC, KC_LT, KC_TILD, KC_GT, KC_RBRC},
|
||||
{___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___, KC_BSLS, KC_PIPE, ___x___, ___x___, ___x___},
|
||||
},
|
||||
#endif
|
||||
|
||||
// ............ .................................................. Function Keys
|
||||
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | | | | | | | | F7 | F8 | F9 | F12 |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | Ctrl | GUI | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | | | | | | F1 | F2 | F3 | F10 |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | | | f() | | + | | | | |
|
||||
// | | | | | f() | | | + | | | | | see _PLOVER
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_FNCKEY] = {
|
||||
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
|
||||
{OS_CTL, OS_GUI, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
|
||||
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
|
||||
{_______, _______, _______, _______, ___fn__, ___fn__, _______, KC_PLUS, _______, _______, _______, _______},
|
||||
},
|
||||
|
7
keyboards/planck/keymaps/sdothum/common/plover_keybind.h
Normal file
7
keyboards/planck/keymaps/sdothum/common/plover_keybind.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
|
||||
// simple window manager specific plover keybind hook
|
||||
|
||||
// toggle plover application, see herbstluftwm/config/appbinds
|
||||
register_code (KC_LGUI);
|
||||
shift_key (KC_RGHT);
|
||||
unregister_code(KC_LGUI);
|
14
keyboards/planck/keymaps/sdothum/common/sounds.h
Normal file
14
keyboards/planck/keymaps/sdothum/common/sounds.h
Normal file
|
@ -0,0 +1,14 @@
|
|||
|
||||
// ................................................................ Audio Sounds
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
float song_startup [][2] = SONG(STARTUP_SOUND);
|
||||
float song_colemak [][2] = SONG(COLEMAK_SOUND);
|
||||
float song_qwerty [][2] = SONG(QWERTY_SOUND);
|
||||
float song_plover [][2] = SONG(PLOVER_SOUND);
|
||||
float song_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
||||
float song_caps_on [][2] = SONG(CAPS_LOCK_ON_SOUND);
|
||||
float song_caps_off [][2] = SONG(CAPS_LOCK_OFF_SOUND);
|
||||
float music_scale [][2] = SONG(MUSIC_SCALE_SOUND);
|
||||
float song_goodbye [][2] = SONG(GOODBYE_SOUND);
|
||||
#endif
|
39
keyboards/planck/keymaps/sdothum/common/steno_layout.h
Normal file
39
keyboards/planck/keymaps/sdothum/common/steno_layout.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
|
||||
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ...................................................................... Plover
|
||||
#ifdef STENO_ENABLE
|
||||
// ,-----------------------------------------------------------------------------------.
|
||||
// | # | # | # | # | # | # | # | # | # | # | # | # |
|
||||
// |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
// | Base | S | T | P | H | * | * | F | P | L | T | D |
|
||||
// |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
// | Base | S | K | W | R | * | * | R | B | G | S | Z |
|
||||
// |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
// | | A | O | E | U | |
|
||||
// `-----------------------------------------------------------------------------------'
|
||||
|
||||
[_PLOVER] = {
|
||||
{STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC },
|
||||
{BASE1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR },
|
||||
{BASE2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR },
|
||||
{_______, _______, _______, PS_STNA, PS_STNO, _______, _______, PS_STNE, PS_STNU, _______, _______, _______},
|
||||
},
|
||||
#else
|
||||
// ,-----------------------------------------------------------------------------------.
|
||||
// | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
|
||||
// |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
// | Base | S | T | P | H | * | * | F | P | L | T | D |
|
||||
// |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
// | Base | S | K | W | R | * | * | R | B | G | S | Z |
|
||||
// |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
// | | A | O | E | U | |
|
||||
// `-----------------------------------------------------------------------------------'
|
||||
|
||||
[_PLOVER] = {
|
||||
{KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
|
||||
{BASE1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
|
||||
{BASE2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
|
||||
{_______, _______, _______, LT_C, LT_V, _______, _______, LT_N, LT_M, _______, _______, _______},
|
||||
},
|
||||
#endif
|
|
@ -0,0 +1,75 @@
|
|||
|
||||
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ..................................................... Symbol Navigation Layer
|
||||
#ifdef SHIFT_SYMBOLS
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | ~ | * | & | | | | | Home | Up | End | PgUp |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | Ctrl | ^ | % | $ | | | | | Left | Down | Right| PgDn |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | # | @ | ! | | | | | | | | |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | |Adjust| \ | | | | f() | | | |
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_SYMBOL] = {
|
||||
{_______, KC_TILD, KC_ASTR, KC_AMPR, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
|
||||
{OS_CTL, SM_CIRC, SM_PERC, SM_DLR, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
|
||||
{_______, KC_HASH, KC_AT, KC_EXLM, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
|
||||
{___x___, ___x___, ___x___, ADJUST, LT_BSLS, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
|
||||
},
|
||||
#else
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | { | . | * | & | } | | | | Home | Up | End | PgUp |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | ( | ^ | % | $ | ) | | | | Left | Down | Right| PgDn |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | [ | # | @ | ! | ] | | | | | | | |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | | | \ | | | | f() | | | |
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_SYMBOL] = {
|
||||
{KC_LCBR, KC_DOT, KC_ASTR, KC_AMPR, TD_RCBR, _______, _______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
|
||||
{SM_LPRN, SM_CIRC, SM_PERC, SM_DLR, TD_RPRN, _______, _______, _______, LT_LFTX, KC_DOWN, KC_RGHT, KC_PGDN},
|
||||
{KC_LBRC, KC_HASH, KC_AT, KC_EXLM, TD_RBRC, _______, _______, _______, _______, _______, _______, _______},
|
||||
{___x___, ___x___, ___x___, SL_PIPE, LT_BSLS, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
|
||||
},
|
||||
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | ? | + | ~ | | | | | | | | |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | < | = | > | | | | | f() | | | |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | 3 | 2 | 1 | | | | | | | | |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | | | | | | f() | | | |
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_SYMREG] = {
|
||||
{___x___, KC_QUES, KC_PLUS, KC_TILD, ___x___, _______, _______, _______, ___x___, ___x___, ___x___, ___x___},
|
||||
{___x___, KC_LT, KC_EQL, TD_RNGL, ___x___, _______, _______, _______, ___fn__, ___x___, ___x___, ___x___},
|
||||
{___x___, KC_3, KC_2, KC_1, ___x___, _______, _______, _______, _______, _______, _______, _______},
|
||||
{___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___fn__, ___x___, ___x___, ___x___},
|
||||
},
|
||||
#endif
|
||||
|
||||
// ............................................................... Mouse Actions
|
||||
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | | | | | | | | Left | Up | Right| Up |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | | | | | | | | | |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | | f() | | | | f() | | | |
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_MOUSE] = {
|
||||
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
|
||||
{_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
|
||||
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
|
||||
{_______, _______, _______, _______, ___fn__, _______, _______, _______, ___fn__, _______, _______, _______},
|
||||
},
|
49
keyboards/planck/keymaps/sdothum/common/tapdance.h
Normal file
49
keyboards/planck/keymaps/sdothum/common/tapdance.h
Normal file
|
@ -0,0 +1,49 @@
|
|||
|
||||
// tap dance keys
|
||||
enum tap_dance {
|
||||
_CAPS = 0
|
||||
,_COLN
|
||||
,_COMM
|
||||
,_DOT
|
||||
,_DQOT
|
||||
,_ENT
|
||||
,_EQL
|
||||
,_GRV
|
||||
,_GT
|
||||
,_LBRC
|
||||
,_LCBR
|
||||
,_LPRN
|
||||
,_LT
|
||||
,_PRIV
|
||||
,_QUOT
|
||||
,_RBRC
|
||||
,_RCBR
|
||||
,_RNGL
|
||||
,_RPRN
|
||||
,_SEND
|
||||
,_SPC
|
||||
,_TILD
|
||||
};
|
||||
|
||||
#define TD_CAPS TD(_CAPS)
|
||||
#define TD_COLN TD(_COLN)
|
||||
#define TD_COMM TD(_COMM)
|
||||
#define TD_DOT TD(_DOT)
|
||||
#define TD_DQOT TD(_DQOT)
|
||||
#define TD_ENT TD(_ENT)
|
||||
#define TD_EQL TD(_EQL)
|
||||
#define TD_GRV TD(_GRV)
|
||||
#define TD_GT TD(_GT)
|
||||
#define TD_LBRC TD(_LBRC)
|
||||
#define TD_LCBR TD(_LCBR)
|
||||
#define TD_LPRN TD(_LPRN)
|
||||
#define TD_LT TD(_LT)
|
||||
#define TD_PRIV TD(_PRIV) // compile time macro string, provided in private_string.h
|
||||
#define TD_QUOT TD(_QUOT)
|
||||
#define TD_RBRC TD(_RBRC)
|
||||
#define TD_RCBR TD(_RCBR)
|
||||
#define TD_RNGL TD(_RNGL)
|
||||
#define TD_RPRN TD(_RPRN)
|
||||
#define TD_SEND TD(_SEND) // config.h defined macro string
|
||||
#define TD_SPC TD(_SPC) // see process_record_user() for extended handling of Spc
|
||||
#define TD_TILD TD(_TILD)
|
102
keyboards/planck/keymaps/sdothum/common/toggle_layout.h
Normal file
102
keyboards/planck/keymaps/sdothum/common/toggle_layout.h
Normal file
|
@ -0,0 +1,102 @@
|
|||
|
||||
// const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ......................................................... Number Keypad Layer
|
||||
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | F | E | D | | | | / | 7 | 8 | 9 | * |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | Ctrl | C | B | A | | | | . | 4 | 5 | 6 | - |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | # | G | \ | | | | , | 1 | 2 | 3 | + |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | f() | Space| 0 | = | |
|
||||
// | | f() | Space| = | 0 | |
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_TTNUMBER] = {
|
||||
{_______, KC_F, MT_E, KC_D, _______, ___x___, ___x___, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR},
|
||||
{OS_CTL, GT_C, AT_B, ST_A, _______, ___x___, ___x___, TD_DOT, KC_4, KC_5, KC_6, KC_MINS},
|
||||
{_______, KC_HASH, SM_G, KC_BSLS, _______, ___x___, ___x___, TD_COMM, KC_1, KC_2, KC_3, KC_PLUS},
|
||||
#ifdef THUMB_0
|
||||
{_______, _______, _______, _______, TT_ESC, KC_SPC, KC_0, LT_EQL, _______, _______, _______, _______},
|
||||
#else
|
||||
{_______, _______, _______, _______, TT_ESC, KC_SPC, KC_EQL, LT_0, _______, _______, _______, _______},
|
||||
#endif
|
||||
},
|
||||
|
||||
// ............ .................................................. Function Keys
|
||||
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | | | | | | | | F7 | F8 | F9 | F12 |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | Ctrl | GUI | Alt | Shift| | | | | F4 | F5 | F6 | F11 |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | | | | | | F1 | F2 | F3 | F10 |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | f() | | + | | |
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_TTFNCKEY] = {
|
||||
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F7, KC_F8, KC_F9, KC_F12 },
|
||||
{OS_CTL, OS_GUI, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_F4, KC_F5, KC_F6, KC_F11 },
|
||||
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_F1, KC_F2, KC_F3, KC_F10 },
|
||||
{_______, _______, _______, _______, TT_ESC, _______, KC_PLUS, _______, _______, _______, _______, _______},
|
||||
},
|
||||
|
||||
// ....................................................................... Regex
|
||||
|
||||
// ,-----------------------------------------------------------------------------------.
|
||||
// | | ~ | { | } | & | | | % | [ | ] | @ | |
|
||||
// |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
// | | ^ | < | > | ? | | | | | ( | ) | $ | |
|
||||
// |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
// | | : | ! | = | / | | | \ | * | . | # | |
|
||||
// |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
// | | f() | - | + | Space| |
|
||||
// `-----------------------------------------------------------------------------------'
|
||||
|
||||
[_TTREGEX] = {
|
||||
{___x___, KC_TILD, KC_LCBR, KC_RCBR, KC_AMPR, ___x___, ___x___, KC_PERC, KC_LBRC, KC_RBRC, KC_AT, ___x___},
|
||||
{___x___, KC_CIRC, KC_LT, KC_GT, KC_QUES, ___x___, ___x___, KC_PIPE, KC_LPRN, KC_RPRN, KC_DLR, ___x___},
|
||||
{___x___, KC_COLN, KC_EXLM, KC_EQL, KC_SLSH, ___x___, ___x___, KC_BSLS, KC_ASTR, KC_DOT, KC_HASH, ___x___},
|
||||
{_______, _______, _______, _______, TT_ESC, KC_MINS, KC_PLUS, KC_SPC, _______, _______, _______, _______},
|
||||
},
|
||||
|
||||
// ............................................................ Navigation Layer
|
||||
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | | | | | | | | Home | Up | End | PgUp |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | Ctrl | GUI | Alt | Shift| | | | | Left | Down | Right| PgDn |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | | | | | | | | | |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | f() | | | | |
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_TTCURSOR] = {
|
||||
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_HOME, KC_UP, KC_END, KC_PGUP},
|
||||
{OS_CTL, OS_GUI, OS_ALT, OS_SFT, _______, ___x___, ___x___, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN},
|
||||
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
|
||||
{_______, _______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______},
|
||||
},
|
||||
|
||||
// ............................................................... Mouse Actions
|
||||
|
||||
// .-----------------------------------------------------------------------------------.
|
||||
// | | | | | | | | | Left | Up | Right| Up |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | Btn3 | Btn2 | Btn1 | | | | | Left | Down | Right| Down |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | | | | | | | | | | | |
|
||||
// |-----------------------------------------------------------------------------------|
|
||||
// | | f() | | | | |
|
||||
// '-----------------------------------------------------------------------------------'
|
||||
|
||||
[_TTMOUSE] = {
|
||||
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U},
|
||||
{_______, KC_BTN3, KC_BTN2, KC_BTN1, _______, ___x___, ___x___, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D},
|
||||
{_______, _______, _______, _______, _______, ___x___, ___x___, _______, _______, _______, _______, _______},
|
||||
{_______, _______, _______, _______, TT_ESC, _______, _______, _______, _______, _______, _______, _______},
|
||||
},
|
Loading…
Add table
Add a link
Reference in a new issue