Keymap introspection for combos. (#19670)
This commit is contained in:
parent
433dc60686
commit
5faa23d54c
@ -75,6 +75,10 @@ $(TEST)_SRC += \
|
||||
tests/test_common/main.cpp \
|
||||
$(QUANTUM_PATH)/logging/print.c
|
||||
|
||||
ifneq ($(strip $(INTROSPECTION_KEYMAP_C)),)
|
||||
$(TEST)_DEFS += -DINTROSPECTION_KEYMAP_C=\"$(strip $(INTROSPECTION_KEYMAP_C))\"
|
||||
endif
|
||||
|
||||
$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)
|
||||
$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC)
|
||||
$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS)
|
||||
|
@ -43,7 +43,6 @@
|
||||
"DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.double_tap_shift_turns_on", "value_type": "bool"},
|
||||
|
||||
// Combos
|
||||
"COMBO_COUNT": {"info_key": "combo.count", "value_type": "int"},
|
||||
"COMBO_TERM": {"info_key": "combo.term", "value_type": "int"},
|
||||
|
||||
// Dynamic Keymap
|
||||
@ -182,9 +181,10 @@
|
||||
"TAPPING_FORCE_HOLD": {"info_key": "tapping.force_hold", "value_type": "bool", "deprecated": true},
|
||||
"TAPPING_FORCE_HOLD_PER_KEY": {"info_key": "tapping.force_hold_per_key", "value_type": "bool", "deprecated": true},
|
||||
"UNUSED_PINS": {"info_key": "_invalid.unused_pins", "deprecated": true},
|
||||
"COMBO_COUNT": {"info_key": "_invalid.combo.count", "invalid": true},
|
||||
|
||||
// USB params, need to mark as failure when specified in config.h, rather than deprecated
|
||||
"DEVICE_VER": {"info_key": "usb.device_version", "value_type": "bcd_version", "deprecated": true, "replace_with": "`usb.device_version` in info.json"}
|
||||
"DEVICE_VER": {"info_key": "usb.device_version", "value_type": "bcd_version", "deprecated": true, "replace_with": "`usb.device_version` in info.json"},
|
||||
"MANUFACTURER": {"info_key": "manufacturer", "value_type": "str", "deprecated": true, "replace_with": "`manufacturer` in info.json"},
|
||||
"PRODUCT": {"info_key": "keyboard_name", "warn_duplicate": false, "value_type": "str", "deprecated": true, "replace_with": "`keyboard_name` in info.json"},
|
||||
"PRODUCT_ID": {"info_key": "usb.pid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.pid` in info.json"},
|
||||
|
@ -186,8 +186,6 @@ If you define these options you will enable the associated feature, which may in
|
||||
* how long before oneshot times out
|
||||
* `#define ONESHOT_TAP_TOGGLE 2`
|
||||
* how many taps before oneshot toggle is triggered
|
||||
* `#define COMBO_COUNT 2`
|
||||
* Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature. Or leave it undefined and programmatically set the count.
|
||||
* `#define COMBO_TERM 200`
|
||||
* how long for the Combo keys to be detected. Defaults to `TAPPING_TERM` if not defined.
|
||||
* `#define COMBO_MUST_HOLD_MODS`
|
||||
|
@ -4,15 +4,12 @@ The Combo feature is a chording type solution for adding custom actions. It lets
|
||||
|
||||
To enable this feature, you need to add `COMBO_ENABLE = yes` to your `rules.mk`.
|
||||
|
||||
Additionally, in your `config.h`, you'll need to specify the number of combos that you'll be using, by adding `#define COMBO_COUNT 1` (replacing 1 with the number that you're using). It is also possible to not define this and instead set the variable `COMBO_LEN` yourself. There's a trick where we don't need to think about this variable at all. More on this later.
|
||||
|
||||
|
||||
Then, in your `keymap.c` file, you'll need to define a sequence of keys, terminated with `COMBO_END`, and a structure to list the combination of keys, and its resulting action.
|
||||
|
||||
```c
|
||||
const uint16_t PROGMEM test_combo1[] = {KC_A, KC_B, COMBO_END};
|
||||
const uint16_t PROGMEM test_combo2[] = {KC_C, KC_D, COMBO_END};
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
COMBO(test_combo1, KC_ESC),
|
||||
COMBO(test_combo2, LCTL(KC_Z)), // keycodes with modifiers are possible too!
|
||||
};
|
||||
@ -33,7 +30,7 @@ It is possible to overlap combos. Before, with the example below both combos wou
|
||||
```c
|
||||
const uint16_t PROGMEM test_combo1[] = {LSFT_T(KC_A), LT(1, KC_B), COMBO_END};
|
||||
const uint16_t PROGMEM test_combo2[] = {LSFT_T(KC_A), LT(1, KC_B), KC_C, COMBO_END};
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
COMBO(test_combo1, KC_ESC)
|
||||
COMBO(test_combo2, KC_TAB)
|
||||
};
|
||||
@ -41,17 +38,15 @@ combo_t key_combos[COMBO_COUNT] = {
|
||||
|
||||
## Examples
|
||||
|
||||
A long list of combos can be defined in an `enum` list that ends with `COMBO_LENGTH` and you can leave `COMBO_COUNT` undefined:
|
||||
A long list of combos can be defined in an `enum` list:
|
||||
|
||||
```c
|
||||
enum combos {
|
||||
AB_ESC,
|
||||
JK_TAB,
|
||||
QW_SFT,
|
||||
SD_LAYER,
|
||||
COMBO_LENGTH
|
||||
SD_LAYER
|
||||
};
|
||||
uint16_t COMBO_LEN = COMBO_LENGTH; // remove the COMBO_COUNT define and use this instead!
|
||||
|
||||
const uint16_t PROGMEM ab_combo[] = {KC_A, KC_B, COMBO_END};
|
||||
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
|
||||
@ -72,9 +67,7 @@ For a more complicated implementation, you can use the `process_combo_event` fun
|
||||
enum combo_events {
|
||||
EM_EMAIL,
|
||||
BSPC_LSFT_CLEAR,
|
||||
COMBO_LENGTH
|
||||
};
|
||||
uint16_t COMBO_LEN = COMBO_LENGTH; // remove the COMBO_COUNT define and use this instead!
|
||||
|
||||
const uint16_t PROGMEM email_combo[] = {KC_E, KC_M, COMBO_END};
|
||||
const uint16_t PROGMEM clear_line_combo[] = {KC_BSPC, KC_LSFT, COMBO_END};
|
||||
@ -259,18 +252,6 @@ bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode
|
||||
}
|
||||
```
|
||||
|
||||
### Variable Length Combos
|
||||
If you leave `COMBO_COUNT` undefined in `config.h`, it allows you to programmatically declare the size of the Combo data structure and avoid updating `COMBO_COUNT`. Instead a variable called `COMBO_LEN` has to be set. It can be set with something similar to the following in `keymap.c`: `uint16_t COMBO_LEN = ARRAY_SIZE(key_combos);` or by adding `COMBO_LENGTH` as the *last* entry in the combo enum and then `uint16_t COMBO_LEN = COMBO_LENGTH;` as such:
|
||||
```c
|
||||
enum myCombos {
|
||||
...,
|
||||
COMBO_LENGTH
|
||||
};
|
||||
uint16_t COMBO_LEN = COMBO_LENGTH;
|
||||
```
|
||||
Regardless of the method used to declare `COMBO_LEN`, this also requires to convert the `combo_t key_combos[COMBO_COUNT] = {...};` line to `combo_t key_combos[] = {...};`.
|
||||
|
||||
|
||||
### Combo timer
|
||||
|
||||
Normally, the timer is started on the first key press and then reset on every subsequent key press within the `COMBO_TERM`.
|
||||
@ -300,10 +281,8 @@ Here's an example where a combo resolves to two modifiers, and on key releases t
|
||||
|
||||
```c
|
||||
enum combos {
|
||||
AB_MODS,
|
||||
COMBO_LENGTH
|
||||
AB_MODS
|
||||
};
|
||||
uint16_t COMBO_LEN = COMBO_LENGTH;
|
||||
|
||||
const uint16_t PROGMEM ab_combo[] = {KC_A, KC_B, COMBO_END};
|
||||
|
||||
@ -415,6 +394,4 @@ SUBS(TH_THE, "the", KC_T, KC_H) // SUBS uses SEND_STRING to output the give
|
||||
...
|
||||
```
|
||||
|
||||
Now, you can update only one place to add or alter combos. You don't even need to remember to update the `COMBO_COUNT` or the `COMBO_LEN` variables at all. Everything is taken care of. Magic!
|
||||
|
||||
For small to huge ready made dictionaries of combos, you can check out http://combos.gboards.ca/.
|
||||
|
@ -176,8 +176,6 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
|
||||
* ワンショットがタイムアウトするまでの時間
|
||||
* `#define ONESHOT_TAP_TOGGLE 2`
|
||||
* ワンショットトグルが引き起こされるまでのタップ数
|
||||
* `#define COMBO_COUNT 2`
|
||||
* [コンボ](ja/feature_combo.md)機能で使っているコンボの数にこれを設定します。
|
||||
* `#define COMBO_TERM 200`
|
||||
* コンボキーが検出されるまでの時間。定義されていない場合は、デフォルトは `TAPPING_TERM` です。
|
||||
* `#define TAP_CODE_DELAY 100`
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
```c
|
||||
const uint16_t PROGMEM test_combo[] = {KC_A, KC_B, COMBO_END};
|
||||
combo_t key_combos[COMBO_COUNT] = {COMBO(test_combo, KC_ESC)};
|
||||
combo_t key_combos[] = {COMBO(test_combo, KC_ESC)};
|
||||
```
|
||||
|
||||
これは、A と B のキーを押した場合に、"Escape" を送信します。
|
||||
@ -38,7 +38,7 @@ enum combos {
|
||||
const uint16_t PROGMEM ab_combo[] = {KC_A, KC_B, COMBO_END};
|
||||
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[AB_ESC] = COMBO(ab_combo, KC_ESC),
|
||||
[JK_TAB] = COMBO(jk_combo, KC_TAB)
|
||||
};
|
||||
@ -55,7 +55,7 @@ enum combo_events {
|
||||
const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_C, COMBO_END};
|
||||
const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[ZC_COPY] = COMBO_ACTION(copy_combo),
|
||||
[XV_PASTE] = COMBO_ACTION(paste_combo),
|
||||
};
|
||||
|
@ -10,7 +10,6 @@
|
||||
|
||||
|
||||
#ifdef COMBO_ENABLE
|
||||
#define COMBO_COUNT 9
|
||||
#define COMBO_TERM 20
|
||||
#define COMBO_ONLY_FROM_LAYER 0
|
||||
#endif
|
||||
|
@ -73,7 +73,7 @@ const uint16_t PROGMEM ent_combo[] = {HM_K, HM_L, COMBO_END};
|
||||
const uint16_t PROGMEM tab_combo[] = {HM_F, HM_D, COMBO_END};
|
||||
const uint16_t PROGMEM esc_combo[] = {HM_D, HM_S, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
COMBO(ae_combo, RALT(KC_Q)),
|
||||
COMBO(ss_combo, RALT(KC_S)),
|
||||
COMBO(ue_combo, RALT(KC_Y)),
|
||||
@ -298,7 +298,3 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_NUMBERS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_FUNCTION] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -19,16 +19,14 @@
|
||||
#define CB(name, action, ...) C_##name,
|
||||
enum user_combos {
|
||||
#include "combos.def"
|
||||
COMBO_LENGTH
|
||||
};
|
||||
#undef CB
|
||||
uint16_t COMBO_LEN = COMBO_LENGTH;
|
||||
|
||||
#define CB(name, action, ...) const uint16_t PROGMEM name##_combo[] = {__VA_ARGS__, COMBO_END};
|
||||
#include "combos.def"
|
||||
#undef CB
|
||||
|
||||
combo_t key_combos[COMBO_LENGTH] = {
|
||||
combo_t key_combos[] = {
|
||||
#define CB(name, action, ...) COMBO(name##_combo, action),
|
||||
#include "combos.def"
|
||||
#undef CB
|
||||
|
@ -37,8 +37,6 @@
|
||||
// how long before oneshot times out
|
||||
#define ONESHOT_TAP_TOGGLE 2
|
||||
// how many taps before oneshot toggle is triggered
|
||||
#define COMBO_COUNT 2
|
||||
// Set this to the number of combos that you're using in the Combo feature.
|
||||
#define COMBO_TERM 200
|
||||
// how long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
|
||||
#define TAP_CODE_DELAY 100
|
||||
|
@ -19,7 +19,5 @@
|
||||
#define RETRO_TAPPING_PER_KEY
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
|
||||
#define COMBO_COUNT 2 // number of combos used
|
||||
#define COMBO_TERM 40 // time out for combos in ms
|
||||
#define TAPPING_TERM 200 // time out for tap-hold in ms
|
||||
|
||||
|
@ -99,14 +99,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
)
|
||||
};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
COMBO(df_tab, KC_TAB),
|
||||
COMBO(jk_alt, KC_LALT),
|
||||
};
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
|
@ -20,5 +20,4 @@
|
||||
|
||||
|
||||
/* Add combos */
|
||||
#define COMBO_COUNT 1
|
||||
#define COMBO_TERM 200
|
||||
|
@ -32,7 +32,7 @@ enum combo_events {
|
||||
|
||||
const uint16_t PROGMEM reset_combo[] = {KC_LCTL, KC_PAUS, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[CTRL_PAUS_RESET] = COMBO_ACTION(reset_combo),
|
||||
};
|
||||
|
||||
@ -44,4 +44,4 @@ void process_combo_event(uint16_t combo_index, bool pressed) {
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -21,8 +21,6 @@
|
||||
#define BACKLIGHT_LIMIT_VAL 255
|
||||
#define BACKLIGHT_DEFAULT_LEVEL 3
|
||||
|
||||
#define COMBO_COUNT 3
|
||||
|
||||
#define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_WINDOWS, UNICODE_MODE_MACOS, UNICODE_MODE_LINUX
|
||||
|
||||
#define QUICK_TAP_TERM 0
|
||||
|
@ -65,7 +65,7 @@ const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_C, COMBO_END};
|
||||
const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END};
|
||||
const uint16_t PROGMEM cut_combo[] = {KC_Z, KC_X, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[ZC_COPY] = COMBO_ACTION(copy_combo),
|
||||
[XV_PASTE] = COMBO_ACTION(paste_combo),
|
||||
[ZX_CUT] = COMBO_ACTION(cut_combo),
|
||||
|
@ -15,4 +15,3 @@
|
||||
*/
|
||||
#pragma once
|
||||
#define ONESHOT_TIMEOUT 1000
|
||||
#define COMBO_COUNT 2
|
||||
|
@ -33,7 +33,7 @@ enum combos {
|
||||
};
|
||||
const uint16_t PROGMEM accent_combo[] = {KC_SPC, MO(_SYM1), COMBO_END};
|
||||
const uint16_t PROGMEM settings_combo[] = {MO(_EXT), SFT_T(KC_SPC), COMBO_END};
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[ACC] = COMBO(accent_combo, MO(_ACC)),
|
||||
[SET] = COMBO(settings_combo, MO(_SET)),
|
||||
};
|
||||
@ -78,37 +78,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_EXT] = LAYOUT_split_3x5_3(
|
||||
KC_ESC, _______, _______, _______, _______, KC_PAGE_UP, KC_HOME, KC_UP, KC_END, KC_CAPS,
|
||||
OS_ALT, OS_GUI, OS_SFT, OS_CTL, OS_RALT, KC_PAGE_DOWN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DELETE,
|
||||
UNDO, CUT, COPY, KC_TAB, PASTE, DEL_WORD, KC_BSPC, _______, _______, _______,
|
||||
UNDO, CUT, COPY, KC_TAB, PASTE, DEL_WORD, KC_BSPC, _______, _______, _______,
|
||||
_______, _______, _______, KC_ENT, FNC, _______
|
||||
),
|
||||
[_FNC] = LAYOUT_split_3x5_3(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
OS_ALT, OS_GUI, OS_SFT, OS_CTL, OS_RALT, KC_F11, KC_F12, KC_PSCR, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
OS_ALT, OS_GUI, OS_SFT, OS_CTL, OS_RALT, KC_F11, KC_F12, KC_PSCR, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_SYM2] = LAYOUT_split_3x5_3(
|
||||
IT_CIRC, IT_UNDS, IT_PND, IT_EURO, IT_HASH, _______, _______, _______, _______, _______,
|
||||
BACKTICK, TILDE, IT_BSLS, IT_PIPE, IT_AMPR, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
IT_CIRC, IT_UNDS, IT_PND, IT_EURO, IT_HASH, _______, _______, _______, _______, _______,
|
||||
BACKTICK, TILDE, IT_BSLS, IT_PIPE, IT_AMPR, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_ACC] = LAYOUT_split_3x5_3(
|
||||
_______, _______, _______, CEGR, _______, _______, _______, _______, _______, _______,
|
||||
IT_AGRV, IT_IGRV, IT_OGRV, IT_EGRV, IT_EACU, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, IT_UGRV, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, CEGR, _______, _______, _______, _______, _______, _______,
|
||||
IT_AGRV, IT_IGRV, IT_OGRV, IT_EGRV, IT_EACU, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, IT_UGRV, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_SET] = LAYOUT_split_3x5_3(
|
||||
_______, _______, _______, RGB_RMOD, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, _______,
|
||||
_______, _______, _______, RGB_M_B, RGB_M_P, RGB_HUI, RGB_HUD, _______, _______, _______,
|
||||
QK_BOOT, _______, _______, RGB_M_R, RGB_TOG, RGB_SAI, RGB_SAD, _______, _______, QK_BOOT,
|
||||
_______, _______, _______, RGB_RMOD, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, _______,
|
||||
_______, _______, _______, RGB_M_B, RGB_M_P, RGB_HUI, RGB_HUD, _______, _______, _______,
|
||||
QK_BOOT, _______, _______, RGB_M_R, RGB_TOG, RGB_SAI, RGB_SAD, _______, _______, QK_BOOT,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
// [_TEMP] = LAYOUT_split_3x5_3(
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______
|
||||
// ),
|
||||
};
|
||||
|
@ -17,7 +17,6 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef COMBO_ENABLE
|
||||
# define COMBO_COUNT 10
|
||||
# define COMBO_TERM 50
|
||||
#endif
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
// entirely and just use numbers.
|
||||
|
||||
|
||||
enum centromere_layers
|
||||
@ -57,7 +57,7 @@ enum centromere_layers
|
||||
* | | | | | | | |
|
||||
* '-------------------------' '-----------------'
|
||||
*/
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Keymap 0: Basic layer
|
||||
@ -97,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_NO, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_TILD, KC_TRNS, KC_TRNS, KC_BSLS, KC_NO,
|
||||
KC_NO, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BTN2, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_QUOT, KC_NO,
|
||||
KC_NO, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BTN1, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_MINS, KC_NO,
|
||||
CM_TOGG, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, KC_DEL
|
||||
CM_TOGG, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, KC_DEL
|
||||
),
|
||||
|
||||
/* Keymap 2: Pad/Function layer
|
||||
@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_NUMB] = LAYOUT(
|
||||
KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
|
||||
KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU, KC_NO,
|
||||
KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_VOLD, KC_NO,
|
||||
KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_VOLD, KC_NO,
|
||||
KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT
|
||||
),
|
||||
|
||||
@ -137,8 +137,8 @@ const uint16_t PROGMEM combo_less[] = {KC_H, KC_J, COMBO_END};
|
||||
const uint16_t PROGMEM combo_more[] = {KC_K, KC_L, COMBO_END};
|
||||
const uint16_t PROGMEM combo_quot[] = {KC_N, KC_M, COMBO_END};
|
||||
const uint16_t PROGMEM combo_dash[] = {KC_X, KC_C, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
|
||||
combo_t key_combos[] = {
|
||||
[COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC),
|
||||
[COMBO_TAB] = COMBO(combo_tab,KC_TAB),
|
||||
[COMBO_ESC] = COMBO(combo_esc,KC_ESC),
|
||||
@ -148,6 +148,6 @@ combo_t key_combos[COMBO_COUNT] = {
|
||||
[COMBO_LESS] = COMBO(combo_less,KC_LT),
|
||||
[COMBO_MORE] = COMBO(combo_more,KC_GT),
|
||||
[COMBO_QUOT] = COMBO(combo_quot, KC_QUOT),
|
||||
[COMBO_DASH] = COMBO(combo_dash, KC_MINS),
|
||||
[COMBO_DASH] = COMBO(combo_dash, KC_MINS),
|
||||
};
|
||||
#endif
|
||||
|
@ -21,5 +21,3 @@ const uint16_t PROGMEM bootloader_combo[] = {
|
||||
combo_t key_combos[] = {
|
||||
COMBO(bootloader_combo, QK_BOOTLOADER),
|
||||
};
|
||||
|
||||
uint16_t COMBO_LEN = sizeof(key_combos) / sizeof(key_combos[0]);
|
||||
|
@ -27,7 +27,7 @@ const uint16_t PROGMEM sd_combo[] = {KC_S, KC_D, COMBO_END}; // Combo: S + D fo
|
||||
const uint16_t PROGMEM kl_combo[] = {KC_K, KC_L, COMBO_END}; // Combo: K + L for Meh modifier
|
||||
|
||||
// Register the combo action
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[SD_LAYER_COMBO] = COMBO_ACTION(sd_combo),
|
||||
[KL_MEH_COMBO] = COMBO_ACTION(kl_combo),
|
||||
};
|
||||
|
@ -20,5 +20,4 @@
|
||||
|
||||
#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY // Allows configuration of hold on other key press per key in keymap.c
|
||||
|
||||
#define COMBO_COUNT 2 // Number of defined combos
|
||||
#define COMBO_TERM 20 // Delay for combo keys to be chained together
|
||||
|
@ -24,7 +24,6 @@
|
||||
#define TAPPING_TERM 100
|
||||
|
||||
#define COMBO_TERM 20
|
||||
#define COMBO_COUNT 1
|
||||
|
||||
#define PERMISSIVE_HOLD
|
||||
|
||||
|
@ -165,11 +165,8 @@ enum combo_events {
|
||||
DELQ_COMBO,
|
||||
SAVEQ_COMBO,
|
||||
BSPCQ_COMBO,
|
||||
BSPCWQ_COMBO,
|
||||
|
||||
COMBO_LENGTH
|
||||
BSPCWQ_COMBO
|
||||
};
|
||||
uint16_t COMBO_LEN = COMBO_LENGTH;
|
||||
|
||||
const uint16_t PROGMEM ru_combo[] = {KC_R, U_CTRL, COMBO_END};
|
||||
const uint16_t PROGMEM en_combo[] = {U_CTRL, S_ALT, COMBO_END};
|
||||
@ -216,7 +213,7 @@ combo_t key_combos[] = {
|
||||
[SAVEQ_COMBO] = COMBO(saveq_combo, VIM_SAVE),
|
||||
[BSPCWQ_COMBO] = COMBO(bspcwq_combo, DELETE_WORD),
|
||||
};
|
||||
|
||||
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
@ -398,4 +395,3 @@ void matrix_scan_user(void) {
|
||||
#include "mod_tap_keys.h"
|
||||
#undef MOD_TAP_KEY
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@ enum layers {
|
||||
|
||||
// One shot mods
|
||||
enum keycodes {
|
||||
OS_SHFT = QK_USER,
|
||||
OS_SHFT = QK_USER,
|
||||
OS_CTRL,
|
||||
OS_ALT,
|
||||
OS_GUI,
|
||||
@ -159,11 +159,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
};
|
||||
|
||||
enum combo_events {
|
||||
CAPS_COMBO,
|
||||
// Other combos...
|
||||
COMBO_LENGTH
|
||||
CAPS_COMBO
|
||||
};
|
||||
uint16_t COMBO_LEN = COMBO_LENGTH;
|
||||
|
||||
const uint16_t PROGMEM caps_combo[] = {KC_F, KC_J, COMBO_END};
|
||||
|
||||
|
@ -43,11 +43,9 @@ This is the C configuration file for the keymap
|
||||
#define QMK_SPEAKER C6
|
||||
|
||||
// When enabled, typing a mod-tap plus second within term will register as the mod-combo
|
||||
// Ref: https://beta.docs.qmk.fm/using-qmk/software-features/tap_hold#permissive-hold
|
||||
// Ref: https://beta.docs.qmk.fm/using-qmk/software-features/tap_hold#permissive-hold
|
||||
#define PERMISSIVE_HOLD
|
||||
|
||||
#define COMBO_COUNT 2
|
||||
|
||||
// Set the COMBO_TERM so low that I won't type the keys one after each other during normal typing.
|
||||
// They would have be held together intentionally to trigger this.
|
||||
#define COMBO_TERM 40
|
||||
@ -56,4 +54,3 @@ This is the C configuration file for the keymap
|
||||
// I want a relatively low timeout, so if I accidentally type "Shift", I can pause just briefly and move on.
|
||||
#define ONESHOT_TAP_TOGGLE 3 /* Tapping this number of times holds the key until tapped once again. */
|
||||
#define ONESHOT_TIMEOUT 2000 /* Time (in ms) before the one shot key is released */
|
||||
|
||||
|
@ -18,7 +18,7 @@ enum combos {
|
||||
const uint16_t PROGMEM df_combo[] = {KC_D, KC_F, COMBO_END};
|
||||
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
// Add commonly used dash to home row
|
||||
[DF_DASH] = COMBO(df_combo, KC_MINS),
|
||||
// For Vim, put Escape on the home row
|
||||
@ -43,7 +43,7 @@ enum custom_layers {
|
||||
#define GUI_ENT GUI_T(KC_ENT)
|
||||
#define LOW_TAB LT(_LOWER, KC_TAB)
|
||||
#define RSE_BSP LT(_RAISE, KC_BSPC)
|
||||
#define OSM_SFT OSM(MOD_LSFT)
|
||||
#define OSM_SFT OSM(MOD_LSFT)
|
||||
|
||||
|
||||
// For _RAISE layer
|
||||
|
@ -15,7 +15,6 @@
|
||||
|
||||
|
||||
// combo
|
||||
#define COMBO_COUNT 7
|
||||
#define EXTRA_SHORT_COMBOS
|
||||
|
||||
//Tapping values
|
||||
@ -68,7 +67,7 @@
|
||||
// NOTE: the below effects are super cool but they go absolutely nuts if you manually set hsv colors (eg with layers)
|
||||
|
||||
//#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||
//#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||
//#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||
//#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
#endif
|
||||
|
||||
|
@ -20,7 +20,7 @@ enum custom_key_codes {
|
||||
MOVE_END_LINE_TERMINAL, // move to the end of the line in the terminal
|
||||
/* macros */
|
||||
PASTE_VIM, // paste in vim from system register
|
||||
ACIRCLE, // å
|
||||
ACIRCLE, // å
|
||||
ADOT, // ä
|
||||
ODOT, // ö
|
||||
COMPOSE_MACRO, // compose key for mac or linux
|
||||
@ -44,7 +44,7 @@ enum {
|
||||
#define SHOW_WINDOWS LCTL(KC_UP) //'Expose' on Mac, overview on linux. Just all the windows
|
||||
#define WINDOW_LEFT LCTL(LGUI(LSFT(KC_LEFT))) //custom shortcut for this feature -- make window take up 50% left screen (using gui and ctl to make it os agnostic)
|
||||
#define WINDOW_RIGHT LCTL(LGUI(LSFT(KC_RIGHT))) //custom shortcut for this feature -- make window take up 50% right screen (using gui and ctl to make it os agnostic)/fully custom shortcut, using ctl and gui keys so will need them both irrespective of os
|
||||
#define SHOW_APP_WINDOWS LCTL(KC_DOWN)
|
||||
#define SHOW_APP_WINDOWS LCTL(KC_DOWN)
|
||||
#define LOCK_SCREEN LCTL(LGUI(KC_Q)) //manually set this on linux to match osx default
|
||||
#define EURO LALT(LSFT(KC_2))
|
||||
#define EMOJI_KBD LCTL(LGUI(KC_SPACE)) //manually set this on linux to match osx default, with 'emote' on linux and a custom shortcut (probably better to use compose feature)
|
||||
@ -86,7 +86,7 @@ const uint16_t PROGMEM adot_combo[] = {KC_BSPC, KC_SPACE, MT(MOD_RALT,KC_L), COM
|
||||
// combo - press combo+ ; to get ö
|
||||
const uint16_t PROGMEM odot_combo[] = {KC_BSPC, KC_SPACE, MT(MOD_LCTL,KC_SCLN),COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
COMBO(compose_combo, COMPOSE_MACRO),
|
||||
COMBO(search_combo, FINDER),
|
||||
COMBO(calculator_combo, CALCULATOR),
|
||||
@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_NUMS] = LAYOUT_split_3x6_3( //numbers
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
SCREENSHOT, KC_EXCLAIM,KC_AT, KC_HASH, KC_DOLLAR,KC_PERCENT, KC_CIRCUMFLEX, KC_7, KC_8, KC_9, KC_TRANSPARENT, KC_PIPE,
|
||||
SCREENSHOT, KC_EXCLAIM,KC_AT, KC_HASH, KC_DOLLAR,KC_PERCENT, KC_CIRCUMFLEX, KC_7, KC_8, KC_9, KC_TRANSPARENT, KC_PIPE,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
TO(_BASE), KC_LCTL, KC_LALT, KC_RSFT, KC_LGUI,KC_PLUS, KC_EQL, KC_4, KC_5, KC_6, KC_BSLS, KC_TRANSPARENT,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_NUM_MASK] = LAYOUT_split_3x6_3( //NUM MASK, so I can still have backspace/enter/tab etc but with the nums, arrows and formatters too
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
KC_TRANSPARENT, KC_TRANSPARENT,KC_TRANSPARENT, KC_UP, KC_TRANSPARENT,KC_TRANSPARENT, KC_TRANSPARENT, KC_7, KC_8, KC_9, KC_TRANSPARENT, KC_TRANSPARENT,
|
||||
KC_TRANSPARENT, KC_TRANSPARENT,KC_TRANSPARENT, KC_UP, KC_TRANSPARENT,KC_TRANSPARENT, KC_TRANSPARENT, KC_7, KC_8, KC_9, KC_TRANSPARENT, KC_TRANSPARENT,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
TO(_BASE), KC_TRANSPARENT, KC_LEFT, KC_DOWN, KC_RIGHT,KC_TRANSPARENT, KC_TRANSPARENT, KC_4, KC_5, KC_6, KC_TRANSPARENT, KC_TRANSPARENT,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
@ -164,7 +164,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_FN_KEYS] = LAYOUT_split_3x6_3( //fn keys, terminal text navigation keys
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
KC_TRANSPARENT, KC_LCBR,KC_LBRC, KC_RBRC, KC_RCBR, MOVE_BEGIN_LINE_TERMINAL, MOVE_END_LINE_TERMINAL, KC_F7, KC_F8, KC_F9, KC_F11, KC_TRANSPARENT,
|
||||
KC_TRANSPARENT, KC_LCBR,KC_LBRC, KC_RBRC, KC_RCBR, MOVE_BEGIN_LINE_TERMINAL, MOVE_END_LINE_TERMINAL, KC_F7, KC_F8, KC_F9, KC_F11, KC_TRANSPARENT,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
TO(_BASE), KC_LCTL, KC_LALT, KC_RSFT, KC_LGUI, KC_TRANSPARENT, KC_TRANSPARENT, KC_F4, KC_F5, KC_F6, KC_F12, KC_TRANSPARENT,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
@ -173,7 +173,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT , KC_HASH , KC_TRANSPARENT, KC_F10
|
||||
//`--------------------------' `--------------------------'
|
||||
)
|
||||
|
||||
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
@ -183,19 +183,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
// as of this writing, you can't do a layer tap (LT)
|
||||
// and also send a shifted code, like left parens
|
||||
// If you call such a function, it'll do the layer shift but
|
||||
// If you call such a function, it'll do the layer shift but
|
||||
// it'll ignore the key code on tap... this is the workaround
|
||||
|
||||
|
||||
case LT(_NUMS,KC_LPRN): // Shift to _NUMS layer on hold, but send left paren on press
|
||||
if (record->tap.count && record->event.pressed) {
|
||||
tap_code16(KC_LPRN);
|
||||
return false;
|
||||
tap_code16(KC_LPRN);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case LT(_NUMS,KC_RPRN): // Shift to _NUMS on hold, send right parens on press
|
||||
if (record->tap.count && record->event.pressed) {
|
||||
tap_code16(KC_RPRN);
|
||||
return false;
|
||||
tap_code16(KC_RPRN);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -203,20 +203,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->tap.count && record->event.pressed) {
|
||||
tap_code16(SHOW_WINDOWS); // Intercept tap function
|
||||
} else if (record->event.pressed) {
|
||||
tap_code16(WINDOW_LEFT); // Intercept hold function
|
||||
tap_code16(WINDOW_LEFT); // Intercept hold function
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
|
||||
case LT(0, NUMERIC_WIN_RIGHT):
|
||||
if (record->tap.count && record->event.pressed) {
|
||||
layer_on(_NUM_MASK);// Intercept tap function
|
||||
} else if (record->event.pressed) {
|
||||
tap_code16(WINDOW_RIGHT); // Intercept hold function
|
||||
tap_code16(WINDOW_RIGHT); // Intercept hold function
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
|
||||
case PASTE_VIM:
|
||||
if (record->event.pressed){
|
||||
SEND_STRING(SS_TAP(X_ESCAPE)"\"+pi");
|
||||
@ -225,7 +225,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
break;
|
||||
|
||||
//only read the keymap config if it's one of the below cases (instead of every time)
|
||||
case DEL_WORD:
|
||||
case DEL_WORD:
|
||||
case SELECT_LEFT_WD:
|
||||
case SELECT_RIGHT_WD:
|
||||
case SELECT_LEFT_LINE:
|
||||
@ -235,7 +235,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
case MOVE_LEFT_LINE:
|
||||
case MOVE_RIGHT_LINE:
|
||||
case PASTE_NOSTYLE:
|
||||
case MOVE_BEGIN_LINE_TERMINAL:
|
||||
case MOVE_BEGIN_LINE_TERMINAL:
|
||||
case MOVE_END_LINE_TERMINAL:
|
||||
case ACIRCLE:
|
||||
case ADOT:
|
||||
@ -313,28 +313,28 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if(keymap_config.swap_lctl_lgui){ //Linux
|
||||
tap_code16(LCTL(RSFT(KC_V)));
|
||||
} else { //osx
|
||||
tap_code16(LGUI(LALT(LSFT(KC_V))));
|
||||
tap_code16(LGUI(LALT(LSFT(KC_V))));
|
||||
}
|
||||
break;
|
||||
case MOVE_BEGIN_LINE_TERMINAL:
|
||||
if(keymap_config.swap_lctl_lgui){ //Linux
|
||||
tap_code16(KC_HOME);
|
||||
} else { //osx
|
||||
tap_code16(LSFT(KC_HOME));
|
||||
tap_code16(LSFT(KC_HOME));
|
||||
}
|
||||
break;
|
||||
case MOVE_END_LINE_TERMINAL:
|
||||
if(keymap_config.swap_lctl_lgui){ //Linux
|
||||
tap_code16(KC_END);
|
||||
} else { //osx
|
||||
tap_code16(LSFT(KC_END));
|
||||
tap_code16(LSFT(KC_END));
|
||||
}
|
||||
break;
|
||||
case ACIRCLE: // å
|
||||
if(keymap_config.swap_lctl_lgui){ //Linux
|
||||
SEND_STRING(SS_TAP(X_COMPOSE_KEY)"aa");
|
||||
} else { //osx
|
||||
tap_code16(LALT(KC_A));
|
||||
tap_code16(LALT(KC_A));
|
||||
}
|
||||
break;
|
||||
case ADOT: // ä
|
||||
@ -351,14 +351,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
SEND_STRING(SS_LALT("u")"o");
|
||||
}
|
||||
break;
|
||||
case COMPOSE_MACRO:
|
||||
case COMPOSE_MACRO:
|
||||
if(keymap_config.swap_lctl_lgui){ //Linux
|
||||
tap_code16(COMPOSE_KEY);
|
||||
} else { //osx
|
||||
tap_code16(COMPOSE_MAC);
|
||||
}
|
||||
break;
|
||||
case SCREENSHOT:
|
||||
case SCREENSHOT:
|
||||
if(keymap_config.swap_lctl_lgui){ //Linux
|
||||
tap_code16(KC_PSCR);
|
||||
} else { //osx
|
||||
@ -381,7 +381,7 @@ void dance_left_finished (tap_dance_state_t *state, void *user_data) {
|
||||
if(keymap_config.swap_lctl_lgui){ //Linux
|
||||
tap_code16(KC_HOME);
|
||||
} else { //osx
|
||||
tap_code16(LGUI(KC_LEFT));
|
||||
tap_code16(LGUI(KC_LEFT));
|
||||
}
|
||||
} else { //2 taps, make a circumflex
|
||||
tap_code16(KC_CIRC);
|
||||
@ -394,7 +394,7 @@ void dance_right_finished (tap_dance_state_t *state, void *user_data) {
|
||||
if(keymap_config.swap_lctl_lgui){ //Linux
|
||||
tap_code16(KC_END);
|
||||
} else { //osx
|
||||
tap_code16(LGUI(KC_RIGHT));
|
||||
tap_code16(LGUI(KC_RIGHT));
|
||||
}
|
||||
} else { //2 taps, dollar
|
||||
tap_code16(KC_DOLLAR);
|
||||
@ -429,7 +429,7 @@ void set_lighting_user(void) {
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
if(led_state.caps_lock){
|
||||
rgblight_sethsv_noeeprom(HSV_RED);
|
||||
}
|
||||
}
|
||||
//rgblight_sethsv(HSV_OFF);
|
||||
break;
|
||||
case _NUMS:
|
||||
@ -482,7 +482,7 @@ void oled_render_general_state(void){
|
||||
else {
|
||||
oled_write_ln_P(PSTR("OSX"), false);
|
||||
}
|
||||
|
||||
|
||||
//oled_write_ln(get_u8_str(get_current_wpm(), '0'), false);
|
||||
/*
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
@ -492,7 +492,7 @@ void oled_render_general_state(void){
|
||||
//Layer color has to be handled by master
|
||||
|
||||
|
||||
// led state doesn't have to be handled by master, but
|
||||
// led state doesn't have to be handled by master, but
|
||||
// the keyboard will freeze if you type too fast
|
||||
// and have this handled on the slave side
|
||||
|
||||
@ -541,7 +541,7 @@ void oled_render_layer_mod_state(void) {
|
||||
break;
|
||||
case _FN_KEYS:
|
||||
oled_write_ln_P(PSTR("Fn"), false);
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -575,7 +575,7 @@ void oled_render_layer_mod_state(void) {
|
||||
bool oled_task_user(void) {
|
||||
if (is_keyboard_master()) {
|
||||
oled_render_general_state();
|
||||
}
|
||||
}
|
||||
else {
|
||||
oled_render_layer_mod_state();
|
||||
}
|
||||
|
@ -26,5 +26,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define TAPPING_TERM 200
|
||||
|
||||
#define COMBO_PDL
|
||||
#define COMBO_COUNT 28
|
||||
#define COMBO_TERM 100
|
||||
|
@ -15,5 +15,4 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define COMBO_COUNT 8
|
||||
#define COMBO_TERM 40
|
||||
|
@ -42,7 +42,7 @@ const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END};
|
||||
const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END};
|
||||
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[combo_ESC] = COMBO(esc_combo, KC_ESC),
|
||||
[combo_BACK] = COMBO(bspc_combo, KC_BSPC),
|
||||
[combo_TAB] = COMBO(tab_combo, KC_TAB),
|
||||
@ -71,12 +71,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_HOME, KC_END, KC_PIPE, KC_BSLS, KC_DQUO, KC_QUOT,
|
||||
xxx, xxx, xxx, xxx, KC_PGUP, KC_PGDN
|
||||
),
|
||||
|
||||
|
||||
[_FN] = LAYOUT(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_F11, KC_F12,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx
|
||||
)
|
||||
|
||||
};
|
||||
|
@ -15,5 +15,4 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define COMBO_COUNT 7
|
||||
#define COMBO_TERM 40
|
||||
|
@ -40,7 +40,7 @@ const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END};
|
||||
const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END};
|
||||
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[combo_ESC] = COMBO(esc_combo, KC_ESC),
|
||||
[combo_BACK] = COMBO(bspc_combo, KC_BSPC),
|
||||
[combo_TAB] = COMBO(tab_combo, KC_TAB),
|
||||
@ -68,9 +68,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
),
|
||||
|
||||
[_FN] = LAYOUT_ortho_3x12(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
|
||||
KC_VOLD, KC_VOLU, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE, KC_MRWD, KC_MFFD, xxx, xxx, xxx
|
||||
KC_VOLD, KC_VOLU, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE, KC_MRWD, KC_MFFD, xxx, xxx, xxx
|
||||
)
|
||||
|
||||
};
|
||||
|
@ -15,5 +15,4 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define COMBO_COUNT 7
|
||||
#define COMBO_TERM 40
|
||||
|
@ -42,7 +42,7 @@ const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END};
|
||||
const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END};
|
||||
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[combo_ESC] = COMBO(esc_combo, KC_ESC),
|
||||
[combo_BACK] = COMBO(bspc_combo, KC_BSPC),
|
||||
[combo_TAB] = COMBO(tab_combo, KC_TAB),
|
||||
@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
xxx, xxx, xxx, xxx, xxx, BASE, xxx, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_P4, KC_P5, KC_P6, KC_PCMM,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_P1, KC_P2, KC_P3, KC_PEQL,
|
||||
xxx, xxx, xxx, xxx, KC_P0, KC_PDOT, KC_PENT
|
||||
xxx, xxx, xxx, xxx, KC_P0, KC_PDOT, KC_PENT
|
||||
|
||||
),
|
||||
|
||||
@ -85,8 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, xxx, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_F11, KC_F12,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
|
@ -15,5 +15,4 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define COMBO_COUNT 7
|
||||
#define COMBO_TERM 40
|
||||
|
@ -41,7 +41,7 @@ const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END};
|
||||
const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END};
|
||||
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[combo_ESC] = COMBO(esc_combo, KC_ESC),
|
||||
[combo_BACK] = COMBO(bspc_combo, KC_BSPC),
|
||||
[combo_TAB] = COMBO(tab_combo, KC_TAB),
|
||||
@ -74,8 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, xxx, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_F11, KC_F12,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
|
||||
xxx, xxx, xxx, xxx, xxx, xxx
|
||||
xxx, xxx, xxx, xxx, xxx, xxx
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
|
@ -30,10 +30,8 @@
|
||||
#undef ONESHOT_TIMEOUT
|
||||
#define ONESHOT_TIMEOUT 5000
|
||||
|
||||
#define COMBO_COUNT 4
|
||||
#define COMBO_TERM 200
|
||||
|
||||
|
||||
#undef RGBLIGHT_HUE_STEP
|
||||
#define RGBLIGHT_HUE_STEP 24
|
||||
|
||||
|
@ -1,19 +1,18 @@
|
||||
/* Copyright 2020 Austin "TuckTuckFloof" Ashmore
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define COMBO_COUNT 5
|
||||
#define COMBO_TERM 175
|
||||
|
@ -1,16 +1,16 @@
|
||||
/* Copyright 2020 Austin "TuckTuckFloof" Ashmore
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
@ -31,7 +31,7 @@ enum WOMBO_COMBOS {
|
||||
const uint16_t PROGMEM VOLUME_UP_COMBO[] = { KC_F1, KC_F2, COMBO_END };
|
||||
const uint16_t PROGMEM VOLUME_DN_COMBO[] = { KC_F3, KC_F4, COMBO_END };
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[VOLUME_UP] = COMBO(VOLUME_UP_COMBO, KC_VOLU),
|
||||
[VOLUME_DOWN] = COMBO(VOLUME_DN_COMBO, KC_VOLD)
|
||||
};
|
||||
|
@ -1,19 +1,18 @@
|
||||
/* Copyright 2020 Austin "TuckTuckFloof" Ashmore
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define COMBO_COUNT 5
|
||||
#define COMBO_TERM 175
|
||||
|
@ -1,16 +1,16 @@
|
||||
/* Copyright 2020 Austin "TuckTuckFloof" Ashmore
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
@ -31,7 +31,7 @@ enum WOMBO_COMBOS {
|
||||
const uint16_t PROGMEM VOLUME_UP_COMBO[] = { KC_F1, KC_F2, COMBO_END };
|
||||
const uint16_t PROGMEM VOLUME_DN_COMBO[] = { KC_F3, KC_F4, COMBO_END };
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[VOLUME_UP] = COMBO(VOLUME_UP_COMBO, KC_VOLU),
|
||||
[VOLUME_DOWN] = COMBO(VOLUME_DN_COMBO, KC_VOLD)
|
||||
};
|
||||
|
@ -1,19 +1,18 @@
|
||||
/* Copyright 2020 Austin "TuckTuckFloof" Ashmore
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define COMBO_COUNT 5
|
||||
#define COMBO_TERM 175
|
||||
|
@ -1,16 +1,16 @@
|
||||
/* Copyright 2020 Austin "TuckTuckFloof" Ashmore
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
@ -31,7 +31,7 @@ enum WOMBO_COMBOS {
|
||||
const uint16_t PROGMEM VOLUME_UP_COMBO[] = { KC_F1, KC_F2, COMBO_END };
|
||||
const uint16_t PROGMEM VOLUME_DN_COMBO[] = { KC_F3, KC_F4, COMBO_END };
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[VOLUME_UP] = COMBO(VOLUME_UP_COMBO, KC_VOLU),
|
||||
[VOLUME_DOWN] = COMBO(VOLUME_DN_COMBO, KC_VOLD)
|
||||
};
|
||||
|
@ -26,5 +26,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define TAPPING_TERM 200
|
||||
|
||||
#define COMBO_PDL
|
||||
#define COMBO_COUNT 28
|
||||
#define COMBO_TERM 100
|
||||
|
@ -16,5 +16,4 @@
|
||||
#pragma once
|
||||
|
||||
/* Combos */
|
||||
#define COMBO_COUNT 5
|
||||
#define COMBO_TERM 50
|
||||
|
@ -63,7 +63,7 @@ const uint16_t PROGMEM combo_esc[] = {KC_N, KC_T, COMBO_END};
|
||||
const uint16_t PROGMEM combo_del[] = {KC_MINS, KC_EQL, COMBO_END};
|
||||
const uint16_t PROGMEM combo_ret[] = {KC_LGUI, KC_LALT, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
//[COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC),
|
||||
[COMBO_NUMBAK] = COMBO(combo_numbak,KC_BSPC),
|
||||
[COMBO_TAB] = COMBO(combo_tab,KC_TAB),
|
||||
|
@ -16,5 +16,4 @@
|
||||
#pragma once
|
||||
|
||||
/* Combos */
|
||||
#define COMBO_COUNT 5
|
||||
#define COMBO_TERM 50
|
||||
|
@ -63,7 +63,7 @@ const uint16_t PROGMEM combo_tab[] = {KC_Q, KC_W, COMBO_END};
|
||||
const uint16_t PROGMEM combo_esc[] = {KC_J, KC_F, COMBO_END};
|
||||
const uint16_t PROGMEM combo_del[] = {KC_MINS, KC_EQL, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
//[COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC),
|
||||
[COMBO_NUMBAK] = COMBO(combo_numbak,KC_BSPC),
|
||||
[COMBO_TAB] = COMBO(combo_tab,KC_TAB),
|
||||
|
@ -41,10 +41,7 @@
|
||||
#define TOGG A_ENUM
|
||||
enum combos {
|
||||
#include "combos.def"
|
||||
COMBO_LENGTH
|
||||
};
|
||||
// Export length to combo module
|
||||
uint16_t COMBO_LEN = COMBO_LENGTH;
|
||||
|
||||
// Bake combos into mem
|
||||
#undef COMB
|
||||
|
@ -14,7 +14,6 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define COMBO_COUNT 1
|
||||
#define COMBO_TERM 100
|
||||
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[JK_ESC] = COMBO(jk_combo, KC_ESC),
|
||||
};
|
||||
|
||||
|
@ -1,3 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#define COMBO_COUNT 1
|
@ -15,7 +15,7 @@ enum custom_keycodes {
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM lock_combo[] = {KC_J, KC_K, KC_L, KC_SCLN, COMBO_END};
|
||||
combo_t key_combos[COMBO_COUNT] = {COMBO(lock_combo, LGUI(KC_O))};
|
||||
combo_t key_combos[] = {COMBO(lock_combo, LGUI(KC_O))};
|
||||
|
||||
// Define the keycodes for one qwerty layer and one Fn layer.
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* │ Ctrl │ Alt │↯ATab │ Space │ Gui │ Alt │ Ctrl │
|
||||
* └──────┴──────┴──────┴──────────────────────────────────────────────────────────────┴──────┴──────┴──────┘
|
||||
*
|
||||
* Hidden features :
|
||||
* Hidden features :
|
||||
* - Left Shift is also Home on a single tap.
|
||||
* - Left Ctrl is also End on a single tap.
|
||||
* - Right Shift is also page-up on a single tap.
|
||||
|
@ -16,7 +16,6 @@
|
||||
#pragma once
|
||||
|
||||
#define COMBO_TERM 50
|
||||
#define COMBO_COUNT 50
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM 175
|
||||
#define TAPPING_TERM 175
|
||||
|
@ -188,7 +188,7 @@ const uint16_t PROGMEM rl_r_m_i_combo[] = {RLR, RLM, RLI, COMBO_END};
|
||||
// both hand combinations.
|
||||
const uint16_t PROGMEM bl_m_m_combo[] = {LLM, RLM, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
// left hand combinations.
|
||||
[L_U_PINKY_RING] = COMBO(lu_p_r_combo, KC_TAB),
|
||||
[L_U_RING_MIDDLE] = COMBO(lu_r_m_combo, KC_QUES),
|
||||
|
@ -1,5 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#define COMBO_TERM 100
|
||||
#define COMBO_COUNT 38
|
||||
#define PERMISSIVE_HOLD
|
||||
|
@ -105,7 +105,7 @@ const uint16_t PROGMEM z_slash_combo[] = {KC_Z, KC_SLSH, COMBO_END};
|
||||
const uint16_t PROGMEM x_comma_combo[] = {KC_X, KC_COMM, COMBO_END};
|
||||
const uint16_t PROGMEM j_f_combo[] = {KC_F, KC_J, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
// left hand combinations.
|
||||
[Q_W] = COMBO(q_w_combo, KC_TAB),
|
||||
[W_E] = COMBO(w_e_combo, KC_DQT),
|
||||
|
@ -20,5 +20,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#pragma once
|
||||
|
||||
#define COMBO_TERM 100
|
||||
#define COMBO_COUNT 38
|
||||
#define PERMISSIVE_HOLD
|
||||
|
@ -105,7 +105,7 @@ const uint16_t PROGMEM z_slash_combo[] = {KC_Z, KC_SLSH, COMBO_END};
|
||||
const uint16_t PROGMEM x_comma_combo[] = {KC_X, KC_COMM, COMBO_END};
|
||||
const uint16_t PROGMEM j_f_combo[] = {KC_F, KC_J, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
// left hand combinations.
|
||||
[Q_W] = COMBO(q_w_combo, KC_TAB),
|
||||
[W_E] = COMBO(w_e_combo, KC_DQT),
|
||||
|
@ -17,5 +17,4 @@
|
||||
#pragma once
|
||||
|
||||
#define COMBO_TERM 100
|
||||
#define COMBO_COUNT 38
|
||||
#define PERMISSIVE_HOLD
|
||||
|
@ -105,7 +105,7 @@ const uint16_t PROGMEM z_slash_combo[] = {KC_Z, KC_SLSH, COMBO_END};
|
||||
const uint16_t PROGMEM x_comma_combo[] = {KC_X, KC_COMM, COMBO_END};
|
||||
const uint16_t PROGMEM j_f_combo[] = {KC_F, KC_J, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
// left hand combinations.
|
||||
[Q_W] = COMBO(q_w_combo, KC_TAB),
|
||||
[W_E] = COMBO(w_e_combo, KC_DQT),
|
||||
|
@ -1,5 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#define COMBO_TERM 100
|
||||
#define COMBO_COUNT 38
|
||||
#define PERMISSIVE_HOLD
|
||||
|
@ -105,7 +105,7 @@ const uint16_t PROGMEM z_slash_combo[] = {KC_Z, KC_SLSH, COMBO_END};
|
||||
const uint16_t PROGMEM x_comma_combo[] = {KC_X, KC_COMM, COMBO_END};
|
||||
const uint16_t PROGMEM j_f_combo[] = {KC_F, KC_J, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
// left hand combinations.
|
||||
[Q_W] = COMBO(q_w_combo, KC_TAB),
|
||||
[W_E] = COMBO(w_e_combo, KC_DQT),
|
||||
|
@ -1,7 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#define COMBO_TERM 100
|
||||
#define COMBO_COUNT 38
|
||||
#define PERMISSIVE_HOLD
|
||||
|
||||
#define LEADER_TIMEOUT 300
|
||||
|
@ -121,7 +121,7 @@ const uint16_t PROGMEM m_b_combo[] = {KC_M, KC_B, COMBO_END};
|
||||
// both hand combinations.
|
||||
const uint16_t PROGMEM j_w_combo[] = {KC_J, KC_W, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
// left hand combinations.
|
||||
[COLON_COMMA] = COMBO(colon_comma_combo, KC_TAB),
|
||||
[COMMA_DOT] = COMBO(comma_dot_combo, KC_QUES),
|
||||
|
@ -1,5 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#define COMBO_TERM 100
|
||||
#define COMBO_COUNT 38
|
||||
#define PERMISSIVE_HOLD
|
||||
|
@ -121,7 +121,7 @@ const uint16_t PROGMEM m_b_combo[] = {KC_M, KC_B, COMBO_END};
|
||||
// both hand combinations.
|
||||
const uint16_t PROGMEM j_w_combo[] = {KC_J, KC_W, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
// left hand combinations.
|
||||
[COLON_COMMA] = COMBO(colon_comma_combo, KC_TAB),
|
||||
[COMMA_DOT] = COMBO(comma_dot_combo, KC_QUES),
|
||||
|
@ -20,5 +20,4 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define COMBO_COUNT 3
|
||||
#define COMBO_TERM 200
|
||||
|
@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
||||
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, KC_DEL,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, BL_DOWN, BL_TOGG, BL_UP, NK_TOGG, _______, _______, _______, _______, _______, BL_UP,
|
||||
_______, _______, _______, BL_DOWN, BL_TOGG, BL_UP, NK_TOGG, _______, _______, _______, _______, _______, BL_UP,
|
||||
_______, _______, _______, _______, _______, _______, BL_TOGG, BL_DOWN, BL_STEP
|
||||
),
|
||||
[2] = LAYOUT_ansi(
|
||||
@ -52,7 +52,7 @@ const uint16_t PROGMEM slashDown_combo[] = {KC_SLSH, KC_DOWN, COMBO_END};
|
||||
const uint16_t PROGMEM slashUp_combo[] = {KC_SLSH, KC_UP, COMBO_END};
|
||||
const uint16_t PROGMEM raltBackspace_combo[] = {KC_RALT, KC_BSPC, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[SLSHDN_PGDN] = COMBO(slashDown_combo, KC_PGDN),
|
||||
[SLSHUP_PGUP] = COMBO(slashUp_combo, KC_PGUP),
|
||||
[RALTBKSPC_DELETE] = COMBO(raltBackspace_combo, KC_DEL),
|
||||
|
@ -4,7 +4,6 @@
|
||||
#define TAPPING_TERM 150
|
||||
|
||||
#define COMBO_TERM 20
|
||||
#define COMBO_COUNT 1
|
||||
|
||||
#define PERMISSIVE_HOLD
|
||||
|
||||
|
@ -1,23 +1,21 @@
|
||||
/* Copyright Wong Jing Ping <@wongjingping>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// use 1 combo
|
||||
#define COMBO_COUNT 1
|
||||
#define COMBO_TERM 300
|
||||
|
||||
// mod taps for home row mods
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
|
||||
|
@ -33,7 +33,7 @@ enum layer_names {
|
||||
|
||||
/* combos */
|
||||
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
|
||||
combo_t key_combos[COMBO_COUNT] = {COMBO(jk_combo, KC_ESC)};
|
||||
combo_t key_combos[] = {COMBO(jk_combo, KC_ESC)};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Base */
|
||||
|
@ -1,19 +0,0 @@
|
||||
/* Copyright 2022 Sandipratama <https://github.com/nendezkombet>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define COMBO_COUNT 7
|
@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_CIRC, KC_UNDS, KC_MINS, KC_4, KC_5, KC_6,
|
||||
KC_PERC, KC_AMPR, KC_LBRC, KC_RBRC, KC_ASTR, _______, _______, KC_1, KC_2, KC_3,
|
||||
TO(0), _______, KC_BSLS, KC_PIPE, _______, _______, _______, KC_EQL, KC_0, KC_BSPC
|
||||
),
|
||||
),
|
||||
|
||||
/* THIRD
|
||||
* ,---------------------------------------------------------------------.
|
||||
@ -75,10 +75,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
*/
|
||||
[_THIRD] = LAYOUT_ortho_4x10(
|
||||
KC_INS, KC_HOME, KC_PGUP, KC_NO, SGUI(KC_S), LCTL(KC_A), KC_NO, KC_NO, KC_UP, KC_NO,
|
||||
KC_DEL, KC_END, KC_PGDN, KC_NO, LCTL(KC_S), LCTL(KC_C), KC_NO, KC_LEFT, KC_DOWN, KC_RGHT,
|
||||
KC_DEL, KC_END, KC_PGDN, KC_NO, LCTL(KC_S), LCTL(KC_C), KC_NO, KC_LEFT, KC_DOWN, KC_RGHT,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, LWIN(KC_E), LCTL(KC_V), KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
TO(0), _______, _______, _______, _______, _______, _______, KC_VOLD, _______, KC_VOLU
|
||||
),
|
||||
),
|
||||
/* FOURTH
|
||||
* ,---------------------------------------------------------------------.
|
||||
* |RGB M+| HUD | HUI | | F1 | F2 | F3 | F4 | F5 | F6 |
|
||||
@ -106,7 +106,7 @@ const uint16_t PROGMEM test_combo4[] = {KC_A, KC_S, COMBO_END};
|
||||
const uint16_t PROGMEM test_combo5[] = {KC_G, KC_H, COMBO_END};
|
||||
const uint16_t PROGMEM test_combo6[] = {KC_B, KC_N, COMBO_END};
|
||||
const uint16_t PROGMEM test_combo7[] = {KC_O, KC_P, COMBO_END};
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
COMBO(test_combo1, KC_ESC),
|
||||
COMBO(test_combo2, TO(3)),
|
||||
COMBO(test_combo3, KC_CAPS),
|
||||
|
@ -18,5 +18,3 @@
|
||||
|
||||
// place overrides here
|
||||
#define OLED_FONT_H "keyboards/keycapsss/plaid_pad/keymaps/oled/glcdfont.c"
|
||||
|
||||
#define COMBO_COUNT 3
|
||||
|
@ -72,7 +72,7 @@ const uint16_t PROGMEM zeroDot_combo[] = {KC_P0, KC_PDOT, COMBO_END};
|
||||
const uint16_t PROGMEM leftDown_combo[] = {KC_LEFT, KC_DOWN, COMBO_END};
|
||||
const uint16_t PROGMEM prevPlay_combo[] = {KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[COMBO1] = COMBO_ACTION(zeroDot_combo),
|
||||
[COMBO2] = COMBO_ACTION(leftDown_combo),
|
||||
[COMBO3] = COMBO_ACTION(prevPlay_combo),
|
||||
|
@ -24,7 +24,6 @@
|
||||
#define MOUSEKEY_TIME_TO_MAX 64
|
||||
|
||||
// The firmware is too large!
|
||||
#define COMBO_COUNT 1 // number of combo
|
||||
#define COMBO_TERM 80 // timeout period for combos to 40ms.
|
||||
|
||||
//disable broken animations
|
||||
|
@ -37,21 +37,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_Navi] = LAYOUT_planck_mit(
|
||||
KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_ESC, KC_NO, KC_NO, KC_DEL, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
|
||||
KC_LSFT, HOME_S, HOME_D, HOME_F, KC_TAB, KC_NO, KC_NO, KC_ENT, KC_RSFT, HOME_K, HOME_L, HOME_QU,
|
||||
KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, KC_NO, KC_NO, KC_BTN2, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
|
||||
KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, KC_NO, KC_NO, KC_BTN2, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, Lay_SPC, KC_NO, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
),
|
||||
[_Numb] = LAYOUT_planck_mit(
|
||||
KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, KC_NO, KC_NO, KC_DEL, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, KC_NO, KC_NO, KC_ENT, KC_RSFT, HOME_K, HOME_L, HOME_QU,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KR_HAEN, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_0, KC_MINS, KC_NO, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
),
|
||||
[_Func] = LAYOUT_planck_mit(
|
||||
KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_F11, KC_F4, KC_F5, KC_F6, KC_SCRL, KC_NO, KC_NO, KC_CAPS, KC_RSFT, HOME_K, HOME_L, HOME_QU,
|
||||
KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, KC_NO, KC_NO, KC_INS, KC_NO, KC_NO, KR_HAEN, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, Lay_SPC, KC_NO, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
),
|
||||
};
|
||||
|
||||
|
||||
@ -75,10 +75,8 @@ layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
}
|
||||
|
||||
// COMBO key for HOME ROW modifier
|
||||
// modify `config.h` file
|
||||
// by adding #define COMBO_COUNT 1 (replacing 1 with the number that you’re using).
|
||||
// modify `rules.mk` file
|
||||
// by adding # COMBO_ENABLE = yes
|
||||
// by adding # COMBO_ENABLE = yes
|
||||
|
||||
enum combos {
|
||||
SFT_HAN,
|
||||
@ -86,6 +84,6 @@ enum combos {
|
||||
|
||||
const uint16_t PROGMEM sft_han_combo[] = {LSFT_T(KC_F), LT(_Func,KC_SPC), COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[SFT_HAN] = COMBO(sft_han_combo, KC_LNG1),
|
||||
};
|
||||
};
|
||||
|
@ -49,7 +49,6 @@
|
||||
// #define LEADER_KEY_STRICT_KEY_PROCESSING // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A.
|
||||
// #define ONESHOT_TIMEOUT 300 // How long before oneshot times out
|
||||
// #define ONESHOT_TAP_TOGGLE 2 // How many taps before oneshot toggle is triggered
|
||||
// #define COMBO_COUNT 2 // Set this to the number of combos that you're using in the Combo feature.
|
||||
// #define COMBO_TERM 200 // How long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
|
||||
// #define TAP_CODE_DELAY 100 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
|
||||
// #define TAP_HOLD_CAPS_DELAY 80 // Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPS_LOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
|
||||
|
@ -34,7 +34,6 @@
|
||||
// #define LEADER_KEY_STRICT_KEY_PROCESSING // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A.
|
||||
// #define ONESHOT_TIMEOUT 300 // How long before oneshot times out
|
||||
// #define ONESHOT_TAP_TOGGLE 2 // How many taps before oneshot toggle is triggered
|
||||
// #define COMBO_COUNT 2 // Set this to the number of combos that you're using in the Combo feature.
|
||||
// #define COMBO_TERM 200 // How long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
|
||||
// #define TAP_CODE_DELAY 100 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
|
||||
// #define TAP_HOLD_CAPS_DELAY 80 // Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPS_LOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
|
||||
@ -75,7 +74,7 @@
|
||||
#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
|
||||
#define DISABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
|
||||
#define DISABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
|
||||
#define DISABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
|
||||
#define DISABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
|
||||
// =================================================== Requires RGB_MATRIX_FRAMEBUFFER_EFFECTS =============================================================
|
||||
// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
|
||||
#define DISABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
|
||||
|
@ -32,8 +32,6 @@
|
||||
// how long before oneshot times out
|
||||
#define ONESHOT_TAP_TOGGLE 2
|
||||
// how many taps before oneshot toggle is triggered
|
||||
#define COMBO_COUNT 2
|
||||
// Set this to the number of combos that you're using in the Combo feature.
|
||||
#define COMBO_TERM 200
|
||||
// how long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
|
||||
#define TAP_CODE_DELAY 100
|
||||
|
@ -50,6 +50,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
}
|
||||
#endif
|
||||
|
||||
#define COMBO_COUNT 1
|
||||
|
||||
#define TAPPING_TERM 220
|
||||
|
@ -35,14 +35,14 @@ enum custom_keycodes {
|
||||
#define RAISE MO(_RAISE)
|
||||
#define RAS RAISE
|
||||
|
||||
enum combos //match combo_count in config.h
|
||||
enum combos
|
||||
{
|
||||
EU_ENT,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM eu_combo[] = {KC_E, KC_U, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[EU_ENT] = COMBO_ACTION(eu_combo),
|
||||
};
|
||||
|
||||
@ -58,38 +58,38 @@ void process_combo_event(uint16_t combo_index, bool pressed) {
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_DVORAK] = LAYOUT(
|
||||
KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
|
||||
KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
|
||||
KC_EQL, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSLS,
|
||||
XXXXXXX, KC_ENT, KC_LALT, TT(LWR), KC_LSFT, KC_LCTL, KC_BSPC, KC_SPC, TT(RAS), KC_DEL, KC_LGUI, XXXXXXX
|
||||
[_DVORAK] = LAYOUT(
|
||||
KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
|
||||
KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
|
||||
KC_EQL, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSLS,
|
||||
XXXXXXX, KC_ENT, KC_LALT, TT(LWR), KC_LSFT, KC_LCTL, KC_BSPC, KC_SPC, TT(RAS), KC_DEL, KC_LGUI, XXXXXXX
|
||||
),
|
||||
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
_______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______,
|
||||
_______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_ASTR, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______,
|
||||
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______,
|
||||
[_LOWER] = LAYOUT(
|
||||
_______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______,
|
||||
_______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_ASTR, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______,
|
||||
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_KP_0, _______, _______, _______, _______ //This kp_0 is blocking the space key.... may want to do something about that.
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT(
|
||||
[_RAISE] = LAYOUT(
|
||||
_______, KC_PSCR, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
|
||||
KC_CAPS, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_VOLD, KC_F4, KC_F5, KC_F6, KC_F11, XXXXXXX,
|
||||
_______, KC_NUM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_F1, KC_F2, KC_F3, KC_F12, XXXXXXX,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT(
|
||||
TO_DV, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
|
||||
RGB_TOG, RGB_MOD, VK_TOGG, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, DVORAK, _______, _______, _______,
|
||||
RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
|
||||
[_ADJUST] = LAYOUT(
|
||||
TO_DV, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
|
||||
RGB_TOG, RGB_MOD, VK_TOGG, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, DVORAK, _______, _______, _______,
|
||||
RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
|
@ -33,8 +33,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#endif
|
||||
#define TAPPING_TERM 120
|
||||
|
||||
#ifdef COMBO_COUNT
|
||||
#undef COMBO_COUNT
|
||||
#endif
|
||||
#define COMBO_COUNT 2
|
||||
#define COMBO_TERM 20
|
||||
|
@ -36,7 +36,7 @@ static long int oled_timeout = 300000;
|
||||
enum combos { ESCAPE_COMBO, DELETE_COMBO };
|
||||
const uint16_t PROGMEM escape_combo[] = { KC_GRV, KC_1, COMBO_END };
|
||||
const uint16_t PROGMEM delete_combo[] = { KC_DOT, KC_SLSH, COMBO_END };
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[ESCAPE_COMBO] = COMBO(escape_combo, KC_ESC),
|
||||
[DELETE_COMBO] = COMBO(delete_combo, KC_DEL)
|
||||
};
|
||||
|
@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
// #define EE_HANDS
|
||||
|
||||
#define COMBO_TERM 20
|
||||
#define COMBO_COUNT 3
|
||||
|
||||
#define PERMISSIVE_HOLD
|
||||
|
||||
|
@ -4,7 +4,6 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef COMBO_ENABLE
|
||||
# define COMBO_COUNT 4
|
||||
# define COMBO_TERM 50
|
||||
#endif
|
||||
|
||||
|
@ -28,7 +28,7 @@ const uint16_t PROGMEM combo_ent[] = {ALT_D, GUI_F, COMBO_END};
|
||||
const uint16_t PROGMEM combo_tab[] = {KC_C, KC_V, COMBO_END};
|
||||
const uint16_t PROGMEM combo_del[] = {KC_M, KC_COMM, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
COMBO(combo_bspc,KC_BSPC), // 1
|
||||
COMBO(combo_ent,KC_ENT), // 2
|
||||
COMBO(combo_tab,KC_TAB), // 3
|
||||
@ -61,4 +61,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS,
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
};
|
||||
|
@ -4,7 +4,6 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef COMBO_ENABLE
|
||||
# define COMBO_COUNT 4
|
||||
# define COMBO_TERM 50
|
||||
#endif
|
||||
|
||||
|
@ -29,7 +29,7 @@ const uint16_t PROGMEM combo_ent[] = {ALT_D, GUI_F, COMBO_END};
|
||||
const uint16_t PROGMEM combo_tab[] = {KC_C, KC_V, COMBO_END};
|
||||
const uint16_t PROGMEM combo_del[] = {KC_M, KC_COMM, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
COMBO(combo_bspc,KC_BSPC), // 1
|
||||
COMBO(combo_ent,KC_ENT), // 2
|
||||
COMBO(combo_tab,KC_TAB), // 3
|
||||
@ -62,4 +62,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS,
|
||||
QK_BOOT
|
||||
)
|
||||
};
|
||||
};
|
||||
|
@ -4,7 +4,6 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef COMBO_ENABLE
|
||||
# define COMBO_COUNT 4
|
||||
# define COMBO_TERM 50
|
||||
#endif
|
||||
|
||||
|
@ -28,7 +28,7 @@ const uint16_t PROGMEM combo_ent[] = {ALT_D, GUI_F, COMBO_END};
|
||||
const uint16_t PROGMEM combo_tab[] = {KC_C, KC_V, COMBO_END};
|
||||
const uint16_t PROGMEM combo_del[] = {KC_M, KC_COMM, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
COMBO(combo_bspc,KC_BSPC), // 1
|
||||
COMBO(combo_ent,KC_ENT), // 2
|
||||
COMBO(combo_tab,KC_TAB), // 3
|
||||
@ -61,4 +61,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS,
|
||||
QK_BOOT, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
};
|
||||
|
@ -2,6 +2,4 @@
|
||||
|
||||
#define EE_HANDS
|
||||
|
||||
|
||||
#define COMBO_COUNT 10
|
||||
#define COMBO_TERM 100
|
||||
|
@ -32,7 +32,7 @@ const uint16_t PROGMEM kz_combo[] = {KC_K, KC_Z, COMBO_END};
|
||||
const uint16_t PROGMEM dm_combo[] = {KC_D, KC_M, COMBO_END};
|
||||
const uint16_t PROGMEM bx_combo[] = {KC_B, KC_X, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[TOP_L] = COMBO(fk_combo, KC_ESC),
|
||||
[TOP_R] = COMBO(zl_combo, KC_AT),
|
||||
[MID_L] = COMBO(hd_combo, KC_TAB),
|
||||
|
@ -37,7 +37,6 @@
|
||||
// #define LEADER_KEY_STRICT_KEY_PROCESSING // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A.
|
||||
// #define ONESHOT_TIMEOUT 3000 // How long before oneshot times out
|
||||
// #define ONESHOT_TAP_TOGGLE 2 // How many taps before oneshot toggle is triggered
|
||||
// #define COMBO_COUNT 2 // Set this to the number of combos that you're using in the Combo feature.
|
||||
// #define COMBO_TERM 200 // How long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
|
||||
// #define TAP_CODE_DELAY 100 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
|
||||
#define TAP_CODE_DELAY 25 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
|
||||
|
@ -50,7 +50,6 @@
|
||||
// #define LEADER_KEY_STRICT_KEY_PROCESSING // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A.
|
||||
// #define ONESHOT_TIMEOUT 3000 // How long before oneshot times out
|
||||
// #define ONESHOT_TAP_TOGGLE 2 // How many taps before oneshot toggle is triggered
|
||||
// #define COMBO_COUNT 2 // Set this to the number of combos that you're using in the Combo feature.
|
||||
// #define COMBO_TERM 200 // How long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
|
||||
// #define TAP_CODE_DELAY 100 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
|
||||
// #define TAP_HOLD_CAPS_DELAY 80 // Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPS_LOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
|
||||
|
@ -34,7 +34,6 @@
|
||||
// #define LEADER_KEY_STRICT_KEY_PROCESSING // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A.
|
||||
// #define ONESHOT_TIMEOUT 300 // How long before oneshot times out
|
||||
// #define ONESHOT_TAP_TOGGLE 2 // How many taps before oneshot toggle is triggered
|
||||
// #define COMBO_COUNT 2 // Set this to the number of combos that you're using in the Combo feature.
|
||||
// #define COMBO_TERM 200 // How long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
|
||||
// #define TAP_CODE_DELAY 100 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
|
||||
// #define TAP_HOLD_CAPS_DELAY 80 // Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPS_LOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user