mirror of
https://github.com/qmk/qmk_userspace.git
synced 2025-07-06 11:50:36 -04:00
Reverted Keymap and overhauled Tap-Hold Override
- Went back to num pad - Added function key layer, maybe I'll do override to remove a layer - Symbol layer is tri layer - Redid tap-hold so taps can be held for repeating keys
This commit is contained in:
parent
aa2a8463fe
commit
d5a94942b8
11 changed files with 336 additions and 177 deletions
|
@ -32,12 +32,13 @@ void render_default_layer_state(void) {
|
|||
|
||||
|
||||
void render_layer_state(void) {
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_BASE), get_highest_layer(layer_state) == FIRST_DEFAULT_LAYER);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_BASE), get_highest_layer(layer_state) == FIRST_DEFAULT_LAYER);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_NAVIGATION), get_highest_layer(layer_state) == _NAVIGATION);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_SYMBOL), get_highest_layer(layer_state) == _SYMBOL);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_NUMBER), get_highest_layer(layer_state) == _NUMBER);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_CONFIG), get_highest_layer(layer_state) == _CONFIG);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_NUMBER), get_highest_layer(layer_state) == _NUMBER);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_SYMBOL), get_highest_layer(layer_state) == _SYMBOL);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_FUNCTION), get_highest_layer(layer_state) == _FUNCTION);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_CONFIG), get_highest_layer(layer_state) == _CONFIG);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -13,8 +13,9 @@
|
|||
#define OLED_RENDER_LAYER_NAME "Layer"
|
||||
#define OLED_RENDER_LAYER_BASE " Def "
|
||||
#define OLED_RENDER_LAYER_NAVIGATION " Nav "
|
||||
#define OLED_RENDER_LAYER_SYMBOL " Sym "
|
||||
#define OLED_RENDER_LAYER_NUMBER " Num "
|
||||
#define OLED_RENDER_LAYER_SYMBOL " Sym "
|
||||
#define OLED_RENDER_LAYER_FUNCTION " Fun "
|
||||
#define OLED_RENDER_LAYER_CONFIG " Cfg "
|
||||
|
||||
void render_crkbd_logo(void);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "taphold.h"
|
||||
|
||||
/*
|
||||
void single_tap(uint16_t key, uint16_t altkey, bool isHold) {
|
||||
isHold ? tap_code16(altkey) : tap_code16(key);
|
||||
}
|
||||
|
@ -10,7 +11,6 @@ void double_tap(uint16_t key, uint16_t altkey, uint32_t ms) {
|
|||
isShift ? tap_code16(LSFT(key)) : tap_code16(key);
|
||||
wait_ms(ms);
|
||||
isShift ? tap_code16(LSFT(altkey)) : tap_code16(altkey);
|
||||
}
|
||||
|
||||
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms) {
|
||||
bool isShift = ( (get_mods() & MOD_BIT(KC_LSFT)) || (get_oneshot_mods() & MOD_BIT(KC_LSFT)) );
|
||||
|
@ -21,6 +21,79 @@ void insert_brackets(uint16_t left, uint16_t right, uint32_t ms) {
|
|||
wait_ms(ms);
|
||||
tap_code16(KC_LEFT);
|
||||
}
|
||||
*/
|
||||
|
||||
void single_tap(uint16_t key) {
|
||||
|
||||
tap_code16(key);
|
||||
|
||||
}
|
||||
|
||||
void double_tap(uint16_t key, uint32_t ms) {
|
||||
|
||||
tap_code16(key);
|
||||
wait_ms(ms);
|
||||
tap_code16(key);
|
||||
|
||||
}
|
||||
|
||||
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms) {
|
||||
tap_code16(left);
|
||||
wait_ms(ms);
|
||||
tap_code16(right);
|
||||
wait_ms(ms);
|
||||
tap_code16(KC_LEFT);
|
||||
}
|
||||
|
||||
bool process_tap_hold_key(keyrecord_t* record, uint16_t tap_keycode, uint16_t hold_keycode, int mode) {
|
||||
|
||||
// https://getreuer.info/posts/keyboards/triggers/index.html#tap-vs.-long-press
|
||||
|
||||
if ( record->tap.count > 0 ) {
|
||||
// Key is being tapped
|
||||
|
||||
if (record->event.pressed) {
|
||||
// Handle tap press event...
|
||||
register_code16(tap_keycode);
|
||||
|
||||
} else {
|
||||
// Handle tap release event...
|
||||
unregister_code16(tap_keycode);
|
||||
}
|
||||
|
||||
} else {
|
||||
// Key is being held
|
||||
|
||||
if (record->event.pressed) {
|
||||
// Handle tap press event...
|
||||
switch ( mode ) {
|
||||
case HOLD_BRACKETS:
|
||||
insert_brackets(tap_keycode, hold_keycode, WAIT_DELAY);
|
||||
break;
|
||||
case HOLD_DOUBLETP:
|
||||
double_tap(tap_keycode, WAIT_DELAY);
|
||||
break;
|
||||
default:
|
||||
single_tap(tap_keycode);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
// here we can have the holds be more complex, like sending "" when you hold "
|
||||
bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
||||
|
@ -39,59 +112,42 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
|||
switch(keycode) {
|
||||
|
||||
case TR_LCBR:
|
||||
single_tap(TAPHOLD_LCBR, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_LCBR, isHold); break;
|
||||
case TR_LABK:
|
||||
single_tap(TAPHOLD_LABK, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_LABK, isHold); break;
|
||||
case TR_LBRC:
|
||||
single_tap(TAPHOLD_LBRC, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_LBRC, isHold); break;
|
||||
case TR_LPRN:
|
||||
single_tap(TAPHOLD_LPRN, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_LPRN, isHold); break;
|
||||
case TR_DQUO:
|
||||
single_tap(TAPHOLD_DQUO, isHold); break;
|
||||
case TR_SQUO:
|
||||
single_tap(TAPHOLD_SQUO, isHold);
|
||||
break;
|
||||
case TR_EQL:
|
||||
single_tap(TAPHOLD_EQL, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_SQUO, isHold); break;
|
||||
|
||||
case TR_BSLS:
|
||||
single_tap(TAPHOLD_BSLS, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_BSLS, isHold); break;
|
||||
case TR_SLSH:
|
||||
single_tap(TAPHOLD_SLSH, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_SLSH, isHold); break;
|
||||
case TR_PIPE:
|
||||
single_tap(TAPHOLD_PIPE, isHold); break;
|
||||
|
||||
case TR_COMM:
|
||||
single_tap(TAPHOLD_COMM, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_COMM, isHold); break;
|
||||
case TR_DOT:
|
||||
single_tap(TAPHOLD_DOT, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_DOT, isHold); break;
|
||||
case TR_PERC:
|
||||
single_tap(TAPHOLD_PERC, isHold);
|
||||
break;
|
||||
case TR_EXLM:
|
||||
single_tap(TAPHOLD_EXLM, isHold);
|
||||
break;
|
||||
case TR_AT:
|
||||
single_tap(TAPHOLD_AT, isHold);
|
||||
break;
|
||||
case TR_QUES:
|
||||
single_tap(TAPHOLD_QUES, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_PERC, isHold); break;
|
||||
|
||||
case TR_EQL:
|
||||
single_tap(TAPHOLD_EQL, isHold); break;
|
||||
case TR_MINS:
|
||||
single_tap(TAPHOLD_MINS, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_MINS, isHold); break;
|
||||
case TR_GRV:
|
||||
single_tap(TAPHOLD_GRV, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_GRV, isHold); break;
|
||||
case TR_SCLN:
|
||||
single_tap(TAPHOLD_SCLN, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_SCLN, isHold); break;
|
||||
case TR_QUOT:
|
||||
single_tap(TAPHOLD_QUOT, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_QUOT, isHold); break;
|
||||
|
||||
}
|
||||
|
||||
|
@ -103,67 +159,47 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
|||
|
||||
switch(keycode) {
|
||||
|
||||
// Brackets
|
||||
// Brackets: open and close brackets and put the cursor inside
|
||||
case TR_LCBR:
|
||||
insert_brackets(TAPHOLD_LCBR, WAIT_DELAY);
|
||||
break;
|
||||
insert_brackets(TAPHOLD_LCBR, WAIT_DELAY); break;
|
||||
case TR_LABK:
|
||||
insert_brackets(TAPHOLD_LABK, WAIT_DELAY);
|
||||
break;
|
||||
insert_brackets(TAPHOLD_LABK, WAIT_DELAY); break;
|
||||
case TR_LBRC:
|
||||
insert_brackets(TAPHOLD_LBRC, WAIT_DELAY);
|
||||
break;
|
||||
insert_brackets(TAPHOLD_LBRC, WAIT_DELAY); break;
|
||||
case TR_LPRN:
|
||||
insert_brackets(TAPHOLD_LPRN, WAIT_DELAY);
|
||||
break;
|
||||
insert_brackets(TAPHOLD_LPRN, WAIT_DELAY); break;
|
||||
case TR_DQUO:
|
||||
insert_brackets(TAPHOLD_DQUO, WAIT_DELAY); break;
|
||||
case TR_SQUO:
|
||||
insert_brackets(TAPHOLD_SQUO, WAIT_DELAY);
|
||||
break;
|
||||
insert_brackets(TAPHOLD_SQUO, WAIT_DELAY); break;
|
||||
|
||||
// double tap
|
||||
case TR_EQL:
|
||||
double_tap(TAPHOLD_EQL, WAIT_DELAY);
|
||||
break;
|
||||
case TR_BSLS:
|
||||
double_tap(TAPHOLD_BSLS, WAIT_DELAY);
|
||||
break;
|
||||
double_tap(TAPHOLD_BSLS, WAIT_DELAY); break;
|
||||
case TR_SLSH:
|
||||
double_tap(TAPHOLD_SLSH, WAIT_DELAY);
|
||||
break;
|
||||
double_tap(TAPHOLD_SLSH, WAIT_DELAY); break;
|
||||
case TR_PIPE:
|
||||
double_tap(TAPHOLD_PIPE, WAIT_DELAY); break;
|
||||
|
||||
// custom override without holding shift
|
||||
case TR_COMM:
|
||||
single_tap(TAPHOLD_COMM, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_COMM, isHold); break;
|
||||
case TR_DOT:
|
||||
single_tap(TAPHOLD_DOT, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_DOT, isHold); break;
|
||||
case TR_PERC:
|
||||
single_tap(TAPHOLD_PERC, isHold);
|
||||
break;
|
||||
case TR_EXLM:
|
||||
single_tap(TAPHOLD_EXLM, isHold);
|
||||
break;
|
||||
case TR_AT:
|
||||
single_tap(TAPHOLD_AT, isHold);
|
||||
break;
|
||||
case TR_QUES:
|
||||
single_tap(TAPHOLD_QUES, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_PERC, isHold); break;
|
||||
|
||||
// simulates auto-shift
|
||||
case TR_EQL:
|
||||
single_tap(TAPHOLD_EQL, isHold); break;
|
||||
case TR_MINS:
|
||||
single_tap(TAPHOLD_MINS, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_MINS, isHold); break;
|
||||
case TR_GRV:
|
||||
single_tap(TAPHOLD_GRV, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_GRV, isHold); break;
|
||||
case TR_SCLN:
|
||||
single_tap(TAPHOLD_SCLN, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_SCLN, isHold); break;
|
||||
case TR_QUOT:
|
||||
single_tap(TAPHOLD_QUOT, isHold);
|
||||
break;
|
||||
single_tap(TAPHOLD_QUOT, isHold); break;
|
||||
|
||||
}
|
||||
|
||||
|
@ -172,4 +208,6 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
|||
}
|
||||
|
||||
return true; // Continue default handling.
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
|
@ -1,10 +1,21 @@
|
|||
#pragma once
|
||||
#include "t4corun.h"
|
||||
|
||||
/*
|
||||
void single_tap(uint16_t key, uint16_t altkey, bool isHold);
|
||||
void double_tap(uint16_t key, uint16_t altkey, uint32_t ms);
|
||||
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms);
|
||||
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms);
|
||||
bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode);
|
||||
*/
|
||||
|
||||
void single_tap(uint16_t key);
|
||||
void double_tap(uint16_t key, uint32_t ms);
|
||||
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms);
|
||||
bool process_tap_hold_key(keyrecord_t* record, uint16_t tap_keycode, uint16_t hold_keycode, int mode);
|
||||
|
||||
|
||||
|
||||
|
||||
/* the first element is the alt key (tap action)
|
||||
* the second is altkey (hold action usually)
|
||||
|
@ -13,28 +24,29 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode);
|
|||
* and easier to maintain
|
||||
*/
|
||||
|
||||
/*
|
||||
// Brackets: open and close brackets and put the cursor inside
|
||||
#define TAPHOLD_LCBR KC_LCBR, KC_RCBR
|
||||
#define TAPHOLD_LABK KC_LABK, KC_RABK
|
||||
#define TAPHOLD_LBRC KC_LBRC, KC_RBRC
|
||||
#define TAPHOLD_LPRN KC_LPRN, KC_RPRN
|
||||
#define TAPHOLD_DQUO KC_DQUO, KC_DQUO
|
||||
#define TAPHOLD_SQUO KC_QUOT, KC_QUOT
|
||||
|
||||
// double tap
|
||||
#define TAPHOLD_EQL KC_EQL, KC_EQL
|
||||
#define TAPHOLD_BSLS KC_BSLS, KC_BSLS
|
||||
#define TAPHOLD_SLSH KC_SLSH, KC_SLSH
|
||||
#define TAPHOLD_PIPE KC_PIPE, KC_PIPE
|
||||
|
||||
// Custom override without holding shift
|
||||
#define TAPHOLD_COMM KC_COMM, KC_LPRN
|
||||
#define TAPHOLD_DOT KC_DOT, KC_RPRN
|
||||
#define TAPHOLD_PERC KC_PERC, KC_CIRC
|
||||
#define TAPHOLD_EXLM KC_EXLM, KC_DLR
|
||||
#define TAPHOLD_AT KC_AT, KC_AMPR
|
||||
#define TAPHOLD_QUES KC_QUES, KC_ASTR
|
||||
|
||||
// auto shift
|
||||
#define TAPHOLD_EQL KC_EQL, KC_PLUS
|
||||
#define TAPHOLD_MINS KC_MINS, KC_UNDS
|
||||
#define TAPHOLD_GRV KC_GRV, KC_TILD
|
||||
#define TAPHOLD_SCLN KC_SCLN, KC_COLN
|
||||
#define TAPHOLD_QUOT KC_QUOT, KC_DQUO
|
||||
#define TAPHOLD_QUOT KC_QUOT, KC_DQUO
|
||||
*/
|
Loading…
Add table
Add a link
Reference in a new issue