[Keymap] Update to userspace kuchosauroand0 (#6596)

* added combos

* minor adjustments, added combos

* Add second encoder, add modifiers to encoders

Added a skeleton for the possibily having a second encoder.
Added 9 modifiers for the first rotary encoder:

- None
  General navigation. Page up/down
- SHIFT
  Fast navigation. Home/end
- CTRL
  Vertical navigation. Up/down
- CTRL+SHIFT
  Horizontal navigation. Left/right
- ALT
  Audio volume control.
- GUI
  Browser navigation(windows). Forward/backward
- ALT+SHIFT
  Form navigation. Tab up/down
- ALT+CTRL
  Media control. (Play|pause)/mute
- HYPER
  Media navigation. Next/prev track

Key codes are stored in `uint16_t encoder_actions[2][9]`

* Add second encoder, add modifiers to encoders

Added a skeleton for the possibily having a second encoder.
Added 9 modifiers for the first rotary encoder:

- None
  General navigation. Page up/down
- SHIFT
  Fast navigation. Home/end
- CTRL
  Vertical navigation. Up/down
- CTRL+SHIFT
  Horizontal navigation. Left/right
- ALT
  Audio volume control.
- GUI
  Browser navigation(windows). Forward/backward
- ALT+SHIFT
  Form navigation. Tab up/down
- ALT+CTRL
  Media control. (Play|pause)/mute
- HYPER
  Media navigation. Next/prev track

Key codes are stored in `uint16_t encoder_actions[2][9]`

* Clean up; added combos

Combos:
- CV: Copy
- XC: Cut
- ZV: Paste
- QP: KC_SLEEP

* Fix LEADER_DICTIONARY to be more useful

* Add documentation

* Minor fixes

* Raise TAPPING_TERM

* testing

* Rearrange modifiers

* Fix kc being stored in uint8 instead of uint16

* Update documentation

* Clean up

* Remove excess comments

* Put encoder_actions in progmem
This commit is contained in:
kuchosauronad0 2019-08-24 09:01:12 -07:00 committed by Drashna Jaelre
parent 51bcadf38c
commit 2ef6bbbf5f
9 changed files with 252 additions and 87 deletions

View File

@ -0,0 +1,27 @@
#include "combo.h"
void process_combo_event(uint8_t combo_index, bool pressed){
switch(combo_index) {
case ZV_COPY:
if (pressed) {
tap_code16(LCTL(KC_C));
}
break;
case XV_CUT:
if (pressed) {
tap_code16(LCTL(KC_X));
}
break;
case CV_PASTE:
if (pressed) {
tap_code16(LCTL(KC_V));
}
break;
case QP_SLEEP:
if (pressed) {
tap_code16(KC_SYSTEM_SLEEP);
}
break;
}
}

View File

@ -0,0 +1,21 @@
#pragma once
#include "quantum.h"
enum combo_events {
ZV_COPY,
XV_CUT,
CV_PASTE,
QP_SLEEP
};
const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_V, COMBO_END};
const uint16_t PROGMEM cut_combo[] = {KC_X, KC_V, COMBO_END};
const uint16_t PROGMEM paste_combo[] = {KC_C, KC_V, COMBO_END};
const uint16_t PROGMEM sleep_combo[] = {KC_Q, KC_P, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
[ZV_COPY] = COMBO_ACTION(copy_combo),
[XV_CUT] = COMBO_ACTION(cut_combo),
[CV_PASTE] = COMBO_ACTION(paste_combo),
[QP_SLEEP] = COMBO_ACTION(sleep_combo),
};

View File

@ -1,6 +1,5 @@
#pragma once #pragma once
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
#define AUDIO_CLICKY #define AUDIO_CLICKY
#define STARTUP_SONG SONG(RICK_ROLL) #define STARTUP_SONG SONG(RICK_ROLL)
@ -10,7 +9,6 @@
SONG(DVORAK_SOUND), \ SONG(DVORAK_SOUND), \
SONG(OVERWATCH_THEME) \ SONG(OVERWATCH_THEME) \
} }
#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f #define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
// #ifdef RGBLIGHT_ENABLE // #ifdef RGBLIGHT_ENABLE
// #define NO_MUSIC_MODE // #define NO_MUSIC_MODE
@ -19,13 +17,11 @@
// #undef NOTE_REST // #undef NOTE_REST
// #define NOTE_REST 1.00f // #define NOTE_REST 1.00f
// #endif // !__arm__ // #endif // !__arm__
#define UNICODE_SONG_OSX SONG(RICK_ROLL)
#define UNICODE_SONG_OSX SONG(RICK_ROLL) #define UNICODE_SONG_LNX SONG(RICK_ROLL)
#define UNICODE_SONG_LNX SONG(RICK_ROLL) #define UNICODE_SONG_WIN SONG(RICK_ROLL)
#define UNICODE_SONG_WIN SONG(RICK_ROLL) #define UNICODE_SONG_BSD SONG(RICK_ROLL)
#define UNICODE_SONG_BSD SONG(RICK_ROLL) #define UNICODE_SONG_WINC SONG(RICK_ROLL)
#define UNICODE_SONG_WINC SONG(RICK_ROLL)
#endif // !AUDIO_ENABLE #endif // !AUDIO_ENABLE
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
@ -48,7 +44,19 @@
#define QMK_KEYS_PER_SCAN 4 #define QMK_KEYS_PER_SCAN 4
#endif // !QMK_KEYS_PER_SCAN #endif // !QMK_KEYS_PER_SCAN
#if defined(LEADER_ENABLE)
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 250
#endif // !LEADER_ENABLE
#if defined(COMBO_ENABLE)
#define COMBO_COUNT 4
#define COMBO_TERM 150
#endif // !COMBO_ENABLE
#if defined(NKRO_ENABLE)
#define FORCE_NKRO
#endif // !NKRO_ENABLE
// this makes it possible to do rolling combos (zx) with keys that // this makes it possible to do rolling combos (zx) with keys that
// convert to other keys on hold (z becomes ctrl when you hold it, // convert to other keys on hold (z becomes ctrl when you hold it,
@ -59,8 +67,6 @@
//#define TAPPING_FORCE_HOLD //#define TAPPING_FORCE_HOLD
//#define RETRO_TAPPING //#define RETRO_TAPPING
#define FORCE_NKRO
#ifndef TAPPING_TOGGLE #ifndef TAPPING_TOGGLE
#define TAPPING_TOGGLE 1 #define TAPPING_TOGGLE 1
#endif #endif
@ -68,26 +74,17 @@
#ifdef TAPPING_TERM #ifdef TAPPING_TERM
#undef TAPPING_TERM #undef TAPPING_TERM
#endif // !TAPPING_TERM #endif // !TAPPING_TERM
#if defined(KEYBOARD_ergodox_ez) #if defined(KEYBOARD_handwired_kuchosauronad0_planckenstein)
#define TAPPING_TERM 185 #define TAPPING_TERM 185
#elif defined(KEYBOARD_crkbd) #elif defined(KEYBOARD_c39)
#define TAPPING_TERM 200 #define TAPPING_TERM 200
#else #else
#define TAPPING_TERM 150 #define TAPPING_TERM 180
#endif #endif
// Disable action_get_macro and fn_actions, since we don't use these
// and it saves on space in the firmware.
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#define TAP_CODE_DELAY 5 #define TAP_CODE_DELAY 5
// Enable Leader key
#if defined(LEADER_ENABLE)
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 250
#endif // !LEADER_ENABLE
#define MACRO_TIMER 5 #define MACRO_TIMER 5

View File

@ -1,10 +1,63 @@
#include "encoder.h" #include "encoder.h"
void encoder_update_user(uint8_t index, bool clockwise) { void encoder_update_user(uint8_t index, bool clockwise) {
static uint16_t kc;
uint8_t temp_mod = get_mods();
if (index == 0) { /* first encoder */
if (clockwise) {
//if (temp_mod & MOD_BIT(KC_HYPR)){ // TODO: not how this works, only registers CTRL
if ((temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) && (temp_mod & MOD_MASK_GUI)) { // HYPER
kc = encoder_actions[0][8];
} else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) ) { // ALT+SHIFT
kc = encoder_actions[0][7];
} else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_CTRL) ) { // CTRL+SHIFT
kc = encoder_actions[0][6];
} else if ( (temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_ALT) ) { // CTRL+ALT
kc = encoder_actions[0][5];
} else if (temp_mod & MOD_MASK_GUI) { // GUI
kc = encoder_actions[0][4];
} else if (temp_mod & MOD_MASK_SHIFT) { // SHIFT
kc = encoder_actions[0][3];
} else if (temp_mod & MOD_MASK_ALT) { // ALT
kc = encoder_actions[0][2];
} else if (temp_mod & MOD_MASK_CTRL) { // CTRL
kc = encoder_actions[0][1];
} else { // None
kc = encoder_actions[0][0];
}
} else { // Counter Clockwise
if ((temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) && (temp_mod & MOD_MASK_GUI)) { // HYPER
kc = encoder_actions[1][8];
} else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) ) { // ALT+SHIFT
kc = encoder_actions[1][7];
} else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_CTRL) ) { // CTRL+SHIFT
kc = encoder_actions[1][6];
} else if ( (temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_ALT) ) { // CTRL+ALT
kc = encoder_actions[1][5];
} else if (temp_mod & MOD_MASK_GUI) { // GUI
kc = encoder_actions[1][4];
} else if (temp_mod & MOD_MASK_SHIFT) { // SHIFT
kc = encoder_actions[1][3];
} else if (temp_mod & MOD_MASK_ALT) { // ALT
kc = encoder_actions[1][2];
} else if (temp_mod & MOD_MASK_CTRL) { // CTRL
kc = encoder_actions[1][1];
} else { // None
kc = encoder_actions[1][0];
}
}
clear_mods();
tap_code16(kc);
set_mods(temp_mod);
} else if (index == 1){ // second Encoder
if (clockwise) { if (clockwise) {
tap_code(KC_1);
} else {
tap_code(KC_0); tap_code(KC_0);
} else{
tap_code(KC_1);
}
} }
} }
const uint16_t PROGMEM encoder_actions[][9] = { \
// None CTRL ALT SHIFT GUI CTRL+ALT CTRL+SHFT ALT+SHFT HYPER
{ KC_PGDN, KC_DOWN, KC_AUDIO_VOL_UP, KC_END, KC_WWW_FORWARD, KC_AUDIO_MUTE, KC_RIGHT, LSFT(KC_TAB), KC_MEDIA_NEXT_TRACK}, \
{ KC_PGUP, KC_UP, KC_AUDIO_VOL_DOWN, KC_HOME, KC_WWW_BACK, KC_MEDIA_PLAY_PAUSE, KC_LEFT, KC_TAB, KC_MEDIA_PREV_TRACK}
};

View File

@ -1,3 +1,4 @@
#pragma once #pragma once
#include "quantum.h" #include "quantum.h"
const uint16_t PROGMEM encoder_actions[][9];
void encoder_update_user(uint8_t index, bool clockwise); void encoder_update_user(uint8_t index, bool clockwise);

View File

@ -20,12 +20,9 @@ void matrix_scan_user(void){
LEADER_DICTIONARY() { LEADER_DICTIONARY() {
leading = false; leading = false;
leader_end(); leader_end();
// Q is for TMUX
// Z is for OS related things
// other single key sequences are mostly for terminals and vim
SEQ_ONE_KEY(KC_W) { SEQ_ONE_KEY(KC_W) {
// Vim + Tmux Macro, when in command mode in vim: write to file, change to the other pane in the current session and repeat the last command // vim/tmux: Use in command mode in vim: write to file, switch tmux pane in the current session window and repeat the last command
SEND_STRING(":w" SS_TAP(X_ENTER)); SEND_STRING(":w" SS_TAP(X_ENTER));
tmux_pane_switch_repeat(); tmux_pane_switch_repeat();
} }
@ -36,42 +33,38 @@ void matrix_scan_user(void){
} }
SEQ_ONE_KEY(KC_A) { SEQ_ONE_KEY(KC_A) {
// Send the Tmux Prefix and press 'right' arrow // tmux: Send the prefix and press 'right' arrow
tmux_prefix(); tmux_prefix();
tap_code(KC_RIGHT); tap_code(KC_RIGHT);
} }
SEQ_TWO_KEYS(KC_T, KC_T) { SEQ_TWO_KEYS(KC_T, KC_T) {
// Send the Tmux Prefix to a nested session // tmux: Send the prefix to a nested session
tmux_prefix(); tmux_prefix();
tmux_prefix(); tmux_prefix();
} }
SEQ_TWO_KEYS(KC_Q, KC_A) { SEQ_TWO_KEYS(KC_T, KC_R) {
// Switch pane and repeat last action // tmux: Switch pane and repeat last action
tmux_pane_switch_repeat(); tmux_pane_switch_repeat();
} }
SEQ_TWO_KEYS(KC_Z, KC_P){ SEQ_TWO_KEYS(KC_V, KC_Z){
// Press windows key, send string 'plex' and press enter // vim: Zoom pane
register_code(KC_LGUI); tap_code16(LCTL(KC_W));
register_code(KC_S); tap_code16(LSFT(KC_BSLS));
unregister_code(KC_S);
unregister_code(KC_LGUI);
SEND_STRING("plex");
tap_code(KC_ENTER);
} }
SEQ_TWO_KEYS(KC_Z, KC_F) { SEQ_TWO_KEYS(KC_V, KC_R) {
// Open a search // vim: Substitute and place cursor
register_code(KC_LGUI); SEND_STRING(":%s///g" SS_TAP(X_LEFT));
register_code(KC_S); tap_code(KC_LEFT);
unregister_code(KC_S); tap_code(KC_LEFT);
unregister_code(KC_LGUI);
} }
SEQ_TWO_KEYS(KC_Z, KC_Z) { SEQ_TWO_KEYS(KC_V, KC_T) {
SEND_STRING("https://start.duckduckgo.com"SS_TAP(X_ENTER)); // vim: move current pane to new tab
tap_code16(LCTL(KC_W));
tap_code16(LSFT(KC_T));
} }
SEQ_THREE_KEYS(KC_BSPC, KC_BSPC, KC_BSPC){ SEQ_THREE_KEYS(KC_BSPC, KC_BSPC, KC_BSPC){

View File

@ -1,10 +1,19 @@
# qmk userspace for kuchosauronad0 # Table of Contents
Thanks to drashna and everyone else in the qmk_firmware/users/ directory :) 1. [Overview](#overview)[[documentation](https://docs.qmk.fm/#/feature_userspace)]
2. [Keyboard Layout Templates](#keyboard-layout-templates)
3. [Custom Keycodes](#custom-keycodes) [[documentation](https://docs.qmk.fm/#/feature_macros?id=the-new-way-send_string-amp-process_record_user)]
4. [Tap Dances](#tap-dances) [[documentation](https://docs.qmk.fm/#/feature_tap_dance)]
5. [Encoders](#encoders) [[documentation](https://docs.qmk.fm/#/feature_encoders)]
6. [Leader Key](#leader-key) [[documentation](https://docs.qmk.fm/#/feature_leader_key)]
7. [Unicode](#unicode) [[documentation](https://docs.qmk.fm/#/feature_unicode)]
8. [Combo Keys](#combo-keys) [[documentation](https://docs.qmk.fm/#/feature_combo)]
9. [Secret Macros](#secret-macros) [[documentation](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/readme_secrets.md)]
# Overview # [Overview](#overview)
Thanks to [drashna](https://github.com/drashna) and the people of the discord server and everyone else in the qmk_firmware/users/ directory :)
## Keyboard Layout Templates ## [Keyboard Layout Templates](#keyboard-layout-temple)
This borrows from @jola5's "Not quite neo" code. This allows me to maintain blocks of keymaps in the userspace, so that I can modify the userspace, and this is reflected in all of the keyboards that use it, at once. This borrows from [jola5](https://github.com/jola5)'s "Not quite neo" code. The code of the userspace is shared between all keyboards, so that one can maintain functionality of all keyboards at once by modifying a few files in a central location.
This makes adding tap/hold mods, or other special keycodes or functions to all keyboards super easy, as it's done to all of them at once. This makes adding tap/hold mods, or other special keycodes or functions to all keyboards super easy, as it's done to all of them at once.
@ -14,45 +23,107 @@ The caveat here is that the keymap needs a processor/wrapper, as it doesn't like
Once that's been done and you've switched the keymaps to use the "wrapper", it will read the substitution blocks just fine. Once that's been done and you've switched the keymaps to use the "wrapper", it will read the substitution blocks just fine.
Credit goes to @jola5 for first implementing this awesome idea. Credit goes to [jola5](https://github.com/jola5) for first implementing this awesome idea.
## Custom Keycodes ## [Custom Keycodes](#custom-keycodes)
Declared in `process_records.h` and `template.h` and defined in `process_record_user` in template.c Declared in `process_records.h` and `template.h` and defined in `process_record_user` in template.c
## Tap Dances ## [Tap Dances](#tap-dances)
Set `TAP_DANCE_ENABLE = yes` in rules.mk. See file tap_dances.{c,h} To enable set `TAP_DANCE_ENABLE = yes` in *rules.mk*. See file *tap_dances.{c,h}*
## Leader Key TODO: Command-line movement stuff is a pain when typing normally
Set `LEADER_ENABLE = yes` in rules.mk.
TODO: document tmux / vim / os TODO: Make use of `TD_SPC` and `TD_QT{1..3}`
## [Leader Key](#leader-key)
To enable set `LEADER_ENABLE = yes` in file *rules.mk*
|LEADER_DICTIONARY()|program| description |
|---|---|---|
| W |vim/tmux| save file, switch pane and repeat last command |
| T |tmux| send default prefix |
| A |tmux| switch pane|
|T + T|tmux| send default prefix to a nested session |
|T + R|tmux| switch pane and repeat last command |
|V + Z|vim | zoom current split|
|V + R|vim | search and replace|
|V + T|vim | move current split to its own tab|
|3x Backspace|keyboard| Reset Keyboard |
`LEADER_DICTIONARY()` is defined in *leader.c*
## [Combo Keys](#combo-keys)
To enable set `COMBO_ENABLE = yes` in file *rules.mk*.
Number of combos and timeout are defined in *config.h*
Press key chord to use.
|Combo|description |
|---|---|
| CV | Paste |
| XC | Cut |
| ZV | Copy |
| QP | KC_SLEEP |
Combos are defined in *combo.h* and *combo.c*
## [Unicode](#unicode)
To enable set `UNICODE_ENABLE = yes` or `UNICODEMAP_ENABLE = yes` in file *rules.mk*
## [Encoders](#encoders)
To enable set `ENCODER_ENABLE = yes` in *rules.mk*.
In the keyboard's *config.h* adjust according to your keyboard:
```c
// Example ProMicro
#define ENCODERS_PAD_A { F4 } //PIN A3
#define ENCODERS_PAD_B { F5 } //PIN A2
```
Check the [documentation](https://docs.qmk.fm/#/feature_encoders) for more information
The first rotary encoder is configured such as:
|Modifier|description|
|---|---|
| None | General navigation. Page up/down |
| SHIFT | Fast navigation. Home/end |
| CTRL | Vertical navigation. Up/down |
| CTRL+SHIFT | Horizontal navigation. Left/right |
| ALT | Audio volume control. |
| GUI | Browser navigation(windows). Forward/backward |
| ALT+SHIFT | Form navigation. Tab up/down |
| ALT+CTRL | Media control. (Play|pause)/mute |
| HYPER | Media navigation. Next/prev track |
Key codes are stored as `uint16_t encoder_actions[2][9]` in *encoder.c*
## Unicode
TODO: Set `idk` in `idc`
## Diablo Layer ## Diablo Layer
Currently not in use. Currently not in use.
[Back to Top](#table-of-contents)
# Secret Macros # [Secret Macros](#secret-macros)
Set `NO_SECRETS = yes` in rules.mk. To enable set `NO_SECRETS = yes` in *rules.mk*.
With help from gitter and Colinta, this adds the ability to add hidden macros from other users. With help from gitter and Colinta, this adds the ability to add hidden macros from other users.
First, I have several files that are hidden/excluded from Git/GitHub. These contain everything needed for the macros. To hide these files, open `.git/info/exclude` and add `secrets.c` and `secrets.h` to that file, below the comments. First, I have several files that are hidden/excluded from Git/GitHub. These contain everything needed for the macros. To hide these files, open *.git/info/exclude* and add `secrets.c` and `secrets.h` to that file, below the comments.
And this requires `KC_SECRET_1` through `KC_SECRET_5` to be defined in your `<name>.h` file to define the keycodes for the new macros. And this requires `KC_SECRET_1` through `KC_SECRET_5` to be defined in your *<name>.h* file to define the keycodes for the new macros.
### .git/info/exclude ### .git/info/exclude
``` ```console
# git ls-files --others --exclude-from=.git/info/exclude # git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments. # Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of # For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them): # exclude patterns (uncomment them if you want to use them):
# *.[oa] # *.[oa]
# *~ # *~
/users/kuchosauronad0/secrets.c /users/<name>/secrets.c
/users/kuchosauronad0/secrets.h /users/<name>/secrets.h
``` ```
Then you can create these files: Then you can create these files:
@ -60,7 +131,7 @@ Then you can create these files:
### secrets.c ### secrets.c
```c ```c
#include "kuchosauronad0.h" // replace with your keymap's "h" file, or whatever file stores the keycodes #include "<name>.h" // replace <name> with your keymap's "h" file, or whatever file stores the keycodes
#if (__has_include("secrets.h") && !defined(NO_SECRETS)) #if (__has_include("secrets.h") && !defined(NO_SECRETS))
#include "secrets.h" #include "secrets.h"
@ -106,7 +177,7 @@ Replacing the strings with the codes that you need.
### name.c ### name.c
In the `<name>.c` file, you will want to add this to the top: In the *<name>.c* file, you will want to add this to the top:
```c ```c
__attribute__ ((weak)) __attribute__ ((weak))
@ -126,7 +197,7 @@ And then, in the `process_record_user` function, assuming you have `return proce
### rules.mk ### rules.mk
Here, you want your `/users/<name>/rules.mk` file to "detect" the existence of the `secrets.c` file, and only add it if the file exists. To do so, add this block: Here, you want your */users/<name>/rules.mk* file to "detect" the existence of the *secrets.c* file, and only add it if the file exists. To do so, add this block:
```make ```make
ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
@ -134,7 +205,7 @@ ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
endif endif
``` ```
Additionally, if you want to make sure that you can disable the function without messing with the file, you need to add this to your `/users/<name>/rules.mk`, so that it catches the flag: Additionally, if you want to make sure that you can disable the function without messing with the file, you need to add this to your */users/<name>/rules.mk*, so that it catches the flag:
```make ```make
ifeq ($(strip $(NO_SECRETS)), yes) ifeq ($(strip $(NO_SECRETS)), yes)
@ -142,4 +213,5 @@ ifeq ($(strip $(NO_SECRETS)), yes)
endif endif
``` ```
Then, if you run `make keyboard:name NO_SECRETS=yes`, it will default to the test strings in your `<name>.c` file, rather than reading from your file. Then, if you run `make keyboard:name NO_SECRETS=yes`, it will default to the test strings in your *<name>.c* file, rather than reading from your file.
[Back to Top](#table-of-contents)

View File

@ -14,6 +14,9 @@ endif
ifeq ($(strip $(ENCODER_ENABLE)), yes) ifeq ($(strip $(ENCODER_ENABLE)), yes)
SRC += encoder.c SRC += encoder.c
endif endif
ifeq ($(strip $(COMBO_ENABLE)), yes)
SRC += combo.c
endif
ifeq ($(strip $(LEADER_ENABLE)), yes) ifeq ($(strip $(LEADER_ENABLE)), yes)
SRC += leader.c SRC += leader.c

View File

@ -1,14 +1,12 @@
#include "tap_dances.h" #include "tap_dances.h"
void td_parenthesis (qk_tap_dance_state_t *state, void *user_data) { void td_parenthesis (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) { if (state->count == 1) {
SEND_STRING ("\("); // SEND_STRING ("\(");
tap_code(KC_QUOT);
reset_tap_dance (state); reset_tap_dance (state);
} }
else if (state->count == 2) { else if (state->count == 2) {
SEND_STRING("()" SS_TAP(X_LEFT)); SEND_STRING("()" SS_TAP(X_LEFT));
//tap_code(KC_2);
//tap_code(KC_3);
//tap_code(KC_LEFT);
reset_tap_dance (state); reset_tap_dance (state);
} }
else if (state->count == 3) { else if (state->count == 3) {