Merge pull request #16 from t4corun/mouseredo

Mouse Functionality Redo
This commit is contained in:
Victor 2024-07-01 18:36:07 -05:00 committed by GitHub
commit db534a12b8
Failed to generate hash of commit
32 changed files with 364 additions and 634 deletions

View file

@ -14,7 +14,6 @@ The custom layout optimizes for programming (SQL, Powershell, C) and minimizes h
Notes:
- Outside thumb keys are encoder clicks. Some keyboards may have extra thumb keys
- Pressing Pointer DPI and Drag Scroll Toggle together will enter Ploopy Nano's boot loader
![image](my_keymap.png)
@ -40,7 +39,7 @@ One Shot Mods is here to minimize holding, simplify layers, and avoid misfires f
### Mouse Keys
This layout is designed to be used with a Ploopy Nano. Mouse buttons and scroll wheel is handled on the keyboard side via combos. There are macros with the host status (Caps lock, Num Lock) to toggle Ploopy Nano settings and switch to drag scrolling (simulates scroll wheel)
This layout is designed to be used with a Ploopy Nano. Mouse buttons and scroll wheel is handled on the keyboard side via combos. There are macros with the host status (Scroll lock, Num Lock) to switch DPI and enable momentary drag scrolling
### Caps Word
@ -82,30 +81,22 @@ Enables additional keys to be mapped by pressing multiple keys simultaneously. P
| Combo | Result | Comment |
| ------------- | -------------------- | ------------------------------------------------- |
| `D` + `F` | `Mouse Button 1` | Left click. Mouse buttons only work on base layer |
| `S` + `D` | `Mouse Button 2` | RIght click |
| `F` + `G` | `Mouse Button 3` | Middle click |
| `R` + `F` | `Mouse Button 4` | Back |
| `T` + `G` | `Mouse Button 5` | Forward |
| `T` + `G` | `Drag Scroll Toggle` | |
| `C` + `V` | `Enter` | |
| `U` + `I` | `Tab` | |
| `M` + `Comma` | `Backspace` | |
| `C` + `V` | `KC_BTN1` | Left click. Mouse buttons only work on base layer |
| `X` + `V` | `Drag Scroll Toggle` | Actual command varies per board |
| `D` + `F` | `KC_ENT` | |
| `J` + `K` | `KC_TAB` | |
| `M` + `Comma` | `KC_BSPC` | |
### Key Overrides
Enables us to customize the result of applying certain mods to keycodes. For example, Shift + Backspace will give Delete. Primarily used to minimize the number of layers required and the layout itself
Enables us to customize the result of applying certain mods to keycodes. For example, Shift + Backspace will give Delete. Primarily used to minimize the number of layers and the layout
| Shortcut | Result | Comment |
| --------------------- | -------------------- | ----------------------------------------------------------------------------- |
| `Shift` + `Backspace` | `Delete` | Backspace is a combo. There are no dedicated backspace and delete keys mapped |
| `Shift` + `Next Song` | `Prev Song` | Only works on `NAVIGATION` layer |
| `Meh` + `1...9` | `F1...F9` | Only works on `NUMBER` layer. Meh is Shift + Ctrl + Alt. |
| `Meh` + `Comma` | `F10` | Only works on `NUMBER` layer |
| `Meh` + `Dot` | `F11` | Only works on `NUMBER` layer |
| `Meh` + `Minus` | `F12` | Only works on `NUMBER` layer |
| `Ctrl` + `Mouse 1` | `Print Screen` | Only works on `NUMBER` layer |
| `Alt` + `Mouse 2` | `Open File Explorer` | Only works on `NUMBER` layer. Keyboard Shortcut `GUI` + `E` |
| Shortcut | Result | Comment |
| ------------------- | --------- | ----------------------------------------------------------------------------- |
| `Shift` + `KC_BSPC` | `KC_DEL` | Backspace is a combo. There are no dedicated backspace and delete keys mapped |
| `Shift` + `HF_NEXT` | `HF_PREV` | Only works on `CONFIG` layer Only for keyboards with Haptic feedback enabled |
| `Shift` + `HF_CONU` | `HF_COND` | Only works on `CONFIG` layer. Only for keyboards with Haptic feedback enabled |
| `Shift` + `CK_UP` | `CK_DOWN` | Only works on `CONFIG` layer. Only for keyboards with Audio enabled |
## Optional Features
@ -115,31 +106,36 @@ These features can be disabled due to MCU size constraints or because certain ke
Enables trackball functionality on certain boards (e.g., Ploopy Nano and Bastardkb Charybdis Nano). The board definitions enables unique functionality:
- Charybdis Nano: "Sniper" precision tracking, drag Scroll, DPI changes
- Ploopy Nano: Ties with Host Status LED macros to enable drag scroll, dpi changes, and bootloader
- Charybdis Nano: "Sniper" precision tracking, toggle/momentary drag scroll, DPI changes
- Ploopy Nano: Ties with Host State for momentary drag scroll, dpi changes, and bootloader
Note: `MOUSEKEY_ENABLE` do not need to be enabled in tandem with this to get the mouse buttons.
Note: Enabling Num Lock, Caps Lock, and Scroll Lock simultaneously will tell the Ploopy Nano to enter bootloader mode
### RGB Matrix
Taste the rainbow for boards with RGB LEDs and large MCU memory footprints. Enables RGB lighting effects and layer/host status indicators. Review the keyboard files to identify the key position for each LED and update the preprocessor definitions in `config\rgbmatrix_config.h`
Enable RGB lighting effects for large MCU memory footprints. Review the keyboard files to identify the key position for each LED and update the preprocessor definitions in `config.h`
### OLED
Enables keyboard status visualization. Shows currently selected layer, active modifiers, and host status (e.g, Num / Caps / Scroll Lock)
Enables keyboard status visualization. Shows information like selected layer, active modifiers, and host state (e.g, Num / Caps / Scroll Lock), and Luna pet animation
### Haptic Feedback and Audio
Basic keyboard buzzing and key click audio for the Geist KLOR.
## Target Keyboards
All boards use my keymaps unless noted
- Ploopy Nano: `lkbm` keymap
- Ploopy Nano
- Bastardkb Charybdis Nano 3x5
- Crkbd 3x6
- Planck Rev6
- Ferris Swoop
- Barbell Rollow (non-tree)
- Geist KLOR (non-tree)
- DZRGB60v2 (coming)
- Geist KLOR (coming)
- Crkbd 3x6 (deprecated)
## Links

View file

@ -25,6 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVIGATION] = ROLLOW(LAYER_NAVIGATION),
[_NUMBER] = ROLLOW(LAYER_NUMBER),
[_SYMBOL] = ROLLOW(LAYER_SYMBOL),
[_MOUSE_FUNC] = ROLLOW(LAYER_MOUSE_FUNC),
[_CONFIG] = ROLLOW(LAYER_CONFIG)
};
@ -41,6 +42,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_NAVIGATION] = { ENCODER_CCW_CW(ZOOMIN, ZOOMOUT), ENCODER_CCW_CW(___x___, ___x___) },
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) },
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
[_MOUSE_FUNC] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
[_CONFIG] = { ENCODER_CCW_CW(BASELYR, RBSELYR), ENCODER_CCW_CW(TR_RMOD, TR_RRMD) }
};

View file

@ -40,6 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVIGATION] = CNANO(LAYER_NAVIGATION),
[_NUMBER] = CNANO(LAYER_NUMBER),
[_SYMBOL] = CNANO(LAYER_SYMBOL),
[_MOUSE_FUNC] = CNANO(LAYER_MOUSE_FUNC),
[_CONFIG] = CNANO(LAYER_CONFIG)
};

View file

@ -1,9 +1,9 @@
# override userspace defaults
# override keyboard defaults
# keyboards\bastardkb\info.json
# keyboards\bastardkb\charybdis\info.json
# keyboards\bastardkb\charybdis\3x5\info.json
# keyboards\bastardkb\charybdis\3x5\v2\splinky_3\info.json
# keyboards\bastardkb\charybdis\3x5\v2\splinky_3\rules.mk
MOUSEKEY_ENABLE = yes

View file

@ -41,6 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVIGATION] = SWOOP(LAYER_NAVIGATION),
[_NUMBER] = SWOOP(LAYER_NUMBER),
[_SYMBOL] = SWOOP(LAYER_SYMBOL),
[_MOUSE_FUNC] = SWOOP(LAYER_MOUSE_FUNC),
[_CONFIG] = SWOOP(LAYER_CONFIG)
};
@ -57,6 +58,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_NAVIGATION] = { ENCODER_CCW_CW(ZOOMOUT, ZOOMIN), ENCODER_CCW_CW(___x___, ___x___) },
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
[_MOUSE_FUNC] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_CONFIG] = { ENCODER_CCW_CW(RBSELYR, BASELYR), ENCODER_CCW_CW(TR_RRMD, TR_RMOD) }
};

View file

@ -40,6 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVIGATION] = CRKBD(LAYER_NAVIGATION),
[_NUMBER] = CRKBD(LAYER_NUMBER),
[_SYMBOL] = CRKBD(LAYER_SYMBOL),
[_MOUSE_FUNC] = CRKBD(LAYER_MOUSE_FUNC),
[_CONFIG] = CRKBD(LAYER_CONFIG)
};

View file

@ -25,6 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVIGATION] = KLOR(LAYER_NAVIGATION),
[_NUMBER] = KLOR(LAYER_NUMBER),
[_SYMBOL] = KLOR(LAYER_SYMBOL),
[_MOUSE_FUNC] = KLOR(LAYER_MOUSE_FUNC),
[_CONFIG] = KLOR(LAYER_CONFIG)
};
@ -40,6 +41,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_NAVIGATION] = { ENCODER_CCW_CW(ZOOMOUT, ZOOMIN), ENCODER_CCW_CW(___x___, ___x___) },
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
[_MOUSE_FUNC] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_CONFIG] = { ENCODER_CCW_CW(RBSELYR, BASELYR), ENCODER_CCW_CW(TR_RRMD, TR_RMOD) }
};

View file

@ -9,7 +9,9 @@ ENCODER_MAP_ENABLE = yes
AUDIO_ENABLE = yes
HAPTIC_ENABLE = yes
RGB_MATRIX_ENABLE = yes
SWAP_HANDS_ENABLE = no
SWAP_HANDS_ENABLE = no
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
# Choose your layout
KLOR_CONFIG = saegewerk

View file

@ -25,6 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVIGATION] = PLANCK(LAYER_NAVIGATION),
[_NUMBER] = PLANCK(LAYER_NUMBER),
[_SYMBOL] = PLANCK(LAYER_SYMBOL),
[_MOUSE_FUNC] = PLANCK(LAYER_MOUSE_FUNC),
[_CONFIG] = PLANCK(LAYER_CONFIG)
};

View file

@ -15,7 +15,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#define PLOOPY_HOST_LED_CONTROL
#define NO_ACTION_ONESHOT
#define PLOOPY_DRAGSCROLL_INVERT
#define PLOOPY_DRAGSCROLL_DIVISOR_H 25.0
#define PLOOPY_DRAGSCROLL_DIVISOR_V 20.0

View file

@ -15,7 +15,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "t4corun.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( KC_NO )
};
static bool num_lock_state = false;
static bool scroll_lock_state = false;

View file

@ -5,7 +5,7 @@ layers:
base_QWERTY:
- [Q, W, E, R, T, Y, U, I ,O, P]
- [A, S, D, F, G, H, J, K ,L, {h: "\"", t: "'"}]
- [Z, X, C, V, B, N, M, {h: "(", t: ","} , {h: ")", t: "."}, {h: "_", t: "-"}]
- [{h: "MOUSE", t: "Z"}, X, C, V, B, N, M, {h: "(", t: ","} , {h: ")", t: "."}, {h: "_", t: "-"}]
- {type: ghost}
- NUM
- Shift
@ -15,7 +15,7 @@ layers:
base_COLEMAK_DH:
- [Q, W, F, P, B, J, L, U ,Y, {h: "\"", t: "'"}]
- [A, R, S, T, G, M, N, E ,I, O]
- [Z, X, C, D, V, K, H, {h: "(", t: ","} , {h: ")", t: "."}, {h: "_", t: "-"}]
- [{h: "MOUSE", t: "Z"}, X, C, D, V, K, H, {h: "(", t: ","} , {h: ")", t: "."}, {h: "_", t: "-"}]
- {type: ghost}
- NUM
- Shift
@ -33,9 +33,9 @@ layers:
- NAV
- {t: Mute, type: ghost}
NAV:
- [Esc, Home, ▲, End, Page Up, null, null, null, null, CONFIG ]
- [Esc, Home, ▲, End, Page Up, null, null, null, Caps Lock, CONFIG ]
- [null, ◄, ▼, ►, Page Down, null, Shift, Ctrl, Alt, Gui ]
- [Undo, Cut, Copy, Paste, Redo, null, App, Sniper Toggle, Sniper DPI, Pointer DPI ]
- [Undo, Cut, Copy, Paste, Redo, null, App, Vol -, Vol +, Mute ]
- {t: Zoom Reset, type: ghost}
- NUM
- Ent
@ -43,7 +43,7 @@ layers:
- {type: held}
- {type: ghost}
NUM:
- [Esc, Mouse 3, Mouse 2, Mouse 1, {h: "~", t: "`"}, null, "7", "8" ,"9", {s: "<", t: ","} ]
- [Esc, Win Snip, File Explorer, null, {h: "~", t: "`"}, null, "7", "8" ,"9", {s: "<", t: ","} ]
- [Gui, Alt, Ctrl, Shift, {h: ":", t: ";"}, "0", "4", "5" ,"6", {s: ">", t: "."}]
- [Undo, Cut, Copy, Paste, Redo, null, "1", "2" ,"3", {s: "_", t: "-"}]
- {type: ghost}
@ -53,34 +53,40 @@ layers:
- NAV
- {t: Mute, type: ghost}
SYM:
- [null, null, "&", {h: "%", t: "^"}, {h: "~", t: "`"}, {h: "+", t: "="}, "#", "*", null, {h: "\"\"", t: "\""}]
- [Caps Lock, {h: "{}", t: "{"}, "}", "!", {h: ":", t: ";"}, "@", "?", {h: "[]", t: "]"}, "]", {h: "''", t: "'"}]
- [null, {h: "<>", t: "<"}, ">", {h: "\\\\", t: "\\"}, {h: "||", t: "|"}, "$", {h: "//", t: "/"}, {h: "()", t: "("}, ")", {h: "_", t: "-"}]
- [null, null, "@", "$", {h: "~", t: "`"}, {h: "+", t: "="}, "#", "*", null, {h: "\"\"", t: "\""}]
- [null, {h: "{}", t: "{"}, "}", "!", {h: ":", t: ";"}, "&", "?", {h: "[]", t: "]"}, "]", {h: "''", t: "'"}]
- [null, {h: "<>", t: "<"}, ">", {h: "\\\\", t: "\\"}, {h: "||", t: "|"}, {h: "%", t: "^"}, {h: "//", t: "/"}, {h: "()", t: "("}, ")", {h: "_", t: "-"}]
- {type: ghost}
- {type: held}
- null
- null
- {type: held}
- {type: ghost}
MOUSE_FUNCTION:
- [null, Prev Song, Next Song, Play Pause, Null, null, F7, F8 ,F9, F10]
- [Gui, Alt, Ctrl, Shift, Drag Scroll, null, F4, F5 ,F6, F11]
- [{type: held}, Mouse 5, Mouse 4, Mouse 3, Sniper, null, F1, F2 ,F3, F12]
- {type: ghost}
- "Mouse 1"
- "Mouse 2"
- "Pointer DPI"
- "Sniper DPI"
- {t: Mute, type: ghost}
CONFIG:
- [null, null, null, null, null, null, null, EEPROM Clear, Boot Loader, {type: held}]
- [null, null, null, null, null, null, Shift, null, null, RGB Mode]
- [Mute, Vol-, Vol+, Next Song, Play Pause, RGB Toggle, RGB Hue, RGB Sat, RGB Vib, RGB Spd]
- [Haptic Reset, Haptic Strength+, Haptic Waveform+, Haptic Feedback Toggle, Haptic Toggle, null, Nano Reboot, EEPROM Clear, Boot Loader, {type: held}]
- [Audio Click Reset, Audio Click+, Audio Click Toggle, null, Audio Toggle, null, Shift, null, null, Base Layer]
- [null, null, null, null, RGB Toggle, RGB Mode, RGB Hue, RGB Sat, RGB Vib, RGB Spd]
- {t: Base Layer, type: ghost}
- null
- null
- Macro Play
- Macro Rec
- Macro Rec 1
- Macro Play 1
- Macro Play 2
- Macro Rec 2
- {t: RGB Toggle, type: ghost}
combos:
- { p: [12, 13], k: MB1, l: [base_QWERTY] }
- { p: [11, 12], k: MB2, l: [base_QWERTY] }
- { p: [13, 14], k: MB3, l: [base_QWERTY] }
- { p: [3, 13], k: MB4, l: [base_QWERTY] }
- { p: [4, 14], k: MB5, l: [base_QWERTY] }
- { p: [21, 22], k: DrgScr Tog, l: [base_QWERTY] }
- { p: [6, 7], k: Tab, l: [base_QWERTY] }
- { p: [22, 23], k: Enter, l: [base_QWERTY] }
- { p: [22, 23], k: MB1, l: [base_QWERTY] }
- { p: [21, 23], k: DrgScr Tog, l: [base_QWERTY] }
- { p: [16, 17], k: Tab, l: [base_QWERTY] }
- { p: [12, 13], k: Enter, l: [base_QWERTY] }
- { p: [26, 27], k: Bksp, l: [base_QWERTY] }
draw_config:
small_pad: 6

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 240 KiB

Before After
Before After

View file

@ -2,7 +2,6 @@
"userspace_version": "1.0",
"build_targets": [
["crkbd/rev1", "t4corun"],
["bastardkb/charybdis/3x5/v2/splinky_3", "t4corun"],
["planck/rev6", "t4corun"],
["bluebell/swoop", "t4corun"],

View file

@ -7,7 +7,6 @@
* Pattern
* - This will hold config for features we force to be on
* - bring in additional configuration for features that can be enabled/disabled
* - clear and reset the setting
*/
#pragma once
@ -16,46 +15,168 @@
#undef LOCKING_SUPPORT_ENABLE
#undef LOCKING_RESYNC_ENABLE
//Clear variables we plan to use that might be set elsewhere
#undef USB_POLLING_INTERVAL_MS
#undef LAYER_STATE_8BIT
//Set common configuration for all keyboards
#define USB_POLLING_INTERVAL_MS 1
#define LAYER_STATE_8BIT
#include "config/tapping_config.h"
/* Tapping, Oneshot
* https://docs.qmk.fm/tap_hold
* https://docs.qmk.fm/one_shot_keys
*/
#define TAP_CODE_DELAY 5 //time before tap is released
#define TAP_HOLD_CAPS_DELAY TAP_CODE_DELAY //turning down delay for caps lock so ploopy can do DPI switching
#define WAIT_DELAY 5 //custom variable to configure time between taps
#define TAPPING_TERM 175
#define QUICK_TAP_TERM 120
#define ONESHOT_TAP_TOGGLE 3
#define ONESHOT_TIMEOUT 2000
/* Caps Word
* https://docs.qmk.fm/features/caps_word
*
* Explore these
* #undef BOTH_SHIFTS_TURNS_ON_CAPS_WORD
* #undef CAPS_WORD_INVERT_ON_SHIFT
*/
#if defined(CAPS_WORD_ENABLE)
# include "config/capsword_config.h"
#endif
# define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD
# define CAPS_WORD_IDLE_TIMEOUT 2000
#endif //CAPS_WORD_ENABLE
#if defined(RGB_MATRIX_ENABLE)
# include "config/rgbmatrix_config.h"
#endif
#if defined(MOUSEKEY_ENABLE)
# include "config/mouse_config.h"
#endif
/* Combos
* https://docs.qmk.fm/features/combo
*/
#if defined(COMBO_ENABLE)
# include "config/combo_config.h"
#endif
# define COMBO_ONLY_FROM_LAYER 0 //this will always setup combos based off of QWERTY layout
# define EXTRA_SHORT_COMBOS
# define COMBO_TERM 35
# define COMBO_MUST_TAP_PER_COMBO
# define COMBO_SHOULD_TRIGGER
#endif //COMBO_ENABLE
/* Split keyboard
* https://docs.qmk.fm/features/split_keyboard
*/
#if defined(SPLIT_KEYBOARD)
# include "config/split_config.h"
#endif
# define SPLIT_TRANSPORT_MIRROR
# define SPLIT_LAYER_STATE_ENABLE
# define SPLIT_LED_STATE_ENABLE
# define SPLIT_MODS_ENABLE
# define SPLIT_OLED_ENABLE
# define SPLIT_ACTIVITY_ENABLE
# define SPLIT_WPM_ENABLE
# define MASTER_RIGHT
#endif //SPLIT_KEYBOARD
/* OLED
* https://docs.qmk.fm/features/oled_driver
*/
#if defined(OLED_ENABLE)
# include "config/oled_config.h"
#endif
# define OLED_TIMEOUT 60000 //1 min
# define OLED_FONT_H "./lib/font.c"
#endif //OLED_ENABLE
/* Haptic Feedback
* https://docs.qmk.fm/features/haptic_feedback
*/
#if defined(HAPTIC_ENABLE)
# include "config/haptic_config.h"
#endif
# if defined(HAPTIC_DRV2605L)
# define DRV2605L_GREETING DRV2605L_EFFECT_750_MS_ALERT_100
# define DRV2605L_DEFAULT_MODE DRV2605L_EFFECT_STRONG_CLICK_1_100
# endif //HAPTIC_DRV2605L
#endif //HAPTIC_ENABLE
/* Audio
* https://docs.qmk.fm/features/audio
* https://docs.qmk.fm/squeezing_avr#audio-settings
*/
#if defined(AUDIO_ENABLE)
# include "config/audio_config.h"
#endif
# define KLOR_SOUND W__NOTE(_DS0), W__NOTE(_DS1), H__NOTE(_DS2), H__NOTE(_DS3), Q__NOTE(_DS4), Q__NOTE(_DS5), E__NOTE(_DS6), E__NOTE(_DS7), S__NOTE(_DS8), Q__NOTE(_GS0)
# define BYE_SOUND H__NOTE(_DS4), H__NOTE(_DS3), W__NOTE(_DS1)
# define NO_MUSIC_MODE
# define AUDIO_CLICKY
# define STARTUP_SONG SONG(KLOR_SOUND)
# define GOODBYE_SONG SONG(BYE_SOUND)
# define DEFAULT_LAYER_SONGS \
{ SONG(QWERTY_SOUND) \
,SONG(COLEMAK_SOUND) \
,SONG(GUITAR_SOUND) \
}
#endif //AUDIO_ENABLE
/* RGB Matrix
* https://docs.qmk.fm/features/rgb_matrix
*/
#if defined(RGB_MATRIX_ENABLE)
# undef RGB_MATRIX_DEFAULT_VAL
# define RGB_MATRIX_SLEEP
# define RGB_MATRIX_TIMEOUT 60000 //1 min
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
# define RGB_MATRIX_DEFAULT_HUE 4
# define RGB_MATRIX_DEFAULT_SAT 79
# define RGB_MATRIX_DEFAULT_VAL 59
# define RGB_MATRIX_DEFAULT_SPD 32
# if defined(KEYBOARD_bastardkb_charybdis_3x5) \
|| defined(KEYBOARD_dztech_dz60rgb_v2_1) \
|| defined(KEYBOARD_bluebell_swoop) \
|| defined(KEYBOARD_klor_2040)
# define ENABLE_RGB_MATRIX_BREATHING
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
# define ENABLE_RGB_MATRIX_DUAL_BEACON
# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
# define ENABLE_RGB_MATRIX_HUE_BREATHING
# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
# define ENABLE_RGB_MATRIX_SPLASH
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_TYPING_HEATMAP
//enable minimal effects to save memory
# else
# define ENABLE_RGB_MATRIX_BREATHING
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_BREATHING
# endif //KEYBOARD_bastardkb_charybdis_3x5...
//heatmap specific settings
# if defined(ENABLE_RGB_MATRIX_TYPING_HEATMAP)
# define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 9 //default 25
# define RGB_MATRIX_TYPING_HEATMAP_SPREAD 40 //40
# define RGB_MATRIX_TYPING_HEATMAP_AREA_LIMIT 16 //16
# define RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP 20 //32
# endif //ENABLE_RGB_MATRIX_TYPING_HEATMAP
#endif //RGB_MATRIX_ENABLE

View file

@ -1,30 +0,0 @@
#pragma once
/* Audio
*
* https://docs.qmk.fm/#/feature_audio
* https://docs.qmk.fm/#/squeezing_avr?id=audio-settings
*
*/
//Clear variables we plan to use that might be set elsewhere
#undef NO_MUSIC_MODE
#undef AUDIO_CLICKY
#undef STARTUP_SONG
#undef GOODBYE_SONG
#undef DEFAULT_LAYER_SONGS
#undef KLOR_SOUND
//Set common configuration for all keyboards
#define KLOR_SOUND W__NOTE(_DS0), W__NOTE(_DS1), H__NOTE(_DS2), H__NOTE(_DS3), Q__NOTE(_DS4), Q__NOTE(_DS5), E__NOTE(_DS6), E__NOTE(_DS7), S__NOTE(_DS8), Q__NOTE(_GS0)
#define BYE_SOUND H__NOTE(_DS4), H__NOTE(_DS3), W__NOTE(_DS1)
#define NO_MUSIC_MODE
#define AUDIO_CLICKY
#define STARTUP_SONG SONG(KLOR_SOUND)
#define GOODBYE_SONG SONG(BYE_SOUND)
#define DEFAULT_LAYER_SONGS \
{ SONG(QWERTY_SOUND) \
,SONG(COLEMAK_SOUND) \
,SONG(GUITAR_SOUND) \
}

View file

@ -1,20 +0,0 @@
#pragma once
/* Caps Word
*
* https://docs.qmk.fm/#/feature_caps_word
*
* Explore these
* #undef BOTH_SHIFTS_TURNS_ON_CAPS_WORD
* #undef CAPS_WORD_INVERT_ON_SHIFT
*
*/
//Clear variables we plan to use that might be set elsewhere
#undef DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD
#undef CAPS_WORD_IDLE_TIMEOUT
//Set common configuration for all keyboards
#define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD
#define CAPS_WORD_IDLE_TIMEOUT 2000

View file

@ -1,26 +0,0 @@
#pragma once
/* Combos
*
* https://docs.qmk.fm/#/feature_combo
*
*/
//Clear variables we plan to use that might be set elsewhere
#undef COMBO_ONLY_FROM_LAYER
#undef EXTRA_SHORT_COMBOS
#undef COMBO_TERM
#undef COMBO_MUST_TAP_PER_COMBO
#undef COMBO_SHOULD_TRIGGER
//Set common configuration for all keyboards
#define COMBO_ONLY_FROM_LAYER 0 //this will always setup combos based off of QWERTY layout
#define EXTRA_SHORT_COMBOS
#define COMBO_TERM 35
#define COMBO_MUST_TAP_PER_COMBO
#define COMBO_SHOULD_TRIGGER

View file

@ -1,17 +0,0 @@
#pragma once
/* Haptic Feedback
*
* https://docs.qmk.fm/#/feature_haptic_feedback
*
*/
#if defined(HAPTIC_DRV2605L)
//Clear variables we plan to use that might be set elsewhere
# undef DRV2605L_GREETING
# undef DRV2605L_DEFAULT_MODE
//Set common configuration for all keyboards
# define DRV2605L_GREETING DRV2605L_EFFECT_750_MS_ALERT_100
# define DRV2605L_DEFAULT_MODE DRV2605L_EFFECT_STRONG_CLICK_1_100
#endif //HAPTIC_DRV2605L

View file

@ -1,33 +0,0 @@
#pragma once
/* Mouse Key
*
* https://docs.qmk.fm/#/feature_mouse_keys
*
*/
//Clear variables we plan to use that might be set elsewhere
#undef MOUSEKEY_DELAY
#undef MOUSEKEY_INTERVAL
#undef MOUSEKEY_MOVE_DELTA
#undef MOUSEKEY_MAX_SPEED
#undef MOUSEKEY_TIME_TO_MAX
#undef MOUSEKEY_WHEEL_DELAY
#undef MOUSEKEY_WHEEL_INTERVAL
#undef MOUSEKEY_WHEEL_DELTA
#undef MOUSEKEY_WHEEL_MAX_SPEED
#undef MOUSEKEY_WHEEL_TIME_TO_MAX
//Set common configuration for all keyboards
#define MOUSEKEY_DELAY 20
#define MOUSEKEY_INTERVAL 12
#define MOUSEKEY_MOVE_DELTA 8
#define MOUSEKEY_MAX_SPEED 6
#define MOUSEKEY_TIME_TO_MAX 50
#define MOUSEKEY_WHEEL_DELAY 10
#define MOUSEKEY_WHEEL_INTERVAL 80
#define MOUSEKEY_WHEEL_DELTA 2
#define MOUSEKEY_WHEEL_MAX_SPEED 8
#define MOUSEKEY_WHEEL_TIME_TO_MAX 40

View file

@ -1,15 +0,0 @@
#pragma once
/* OLED
*
* https://docs.qmk.fm/#/feature_oled_driver
*
*/
//Clear variables we plan to use that might be set elsewhere
#undef OLED_TIMEOUT
#undef OLED_FONT_H
//Set common configuration for all keyboards
#define OLED_TIMEOUT 60000 //1 min
#define OLED_FONT_H "./lib/font.c"

View file

@ -1,179 +0,0 @@
#pragma once
/* RGB Matrix
*
* https://docs.qmk.fm/#/feature_rgb_matrix
*
*/
//Clear variables we plan to use that might be set elsewhere
#undef RGB_MATRIX_SLEEP
#undef RGB_MATRIX_TIMEOUT
#undef RGB_MATRIX_DEFAULT_MODE
#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
#undef RGB_MATRIX_DEFAULT_HUE
#undef RGB_MATRIX_DEFAULT_SAT
#undef RGB_MATRIX_DEFAULT_VAL
#undef RGB_MATRIX_DEFAULT_SPD
#undef RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS
#undef RGB_MATRIX_TYPING_HEATMAP_SPREAD
#undef RGB_MATRIX_TYPING_HEATMAP_AREA_LIMIT
#undef RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
#undef ENABLE_RGB_MATRIX_ALPHAS_MODS
#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
#undef ENABLE_RGB_MATRIX_BREATHING
#undef ENABLE_RGB_MATRIX_BAND_SAT
#undef ENABLE_RGB_MATRIX_BAND_VAL
#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
#undef ENABLE_RGB_MATRIX_CYCLE_ALL
#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
#undef ENABLE_RGB_MATRIX_DUAL_BEACON
#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
#undef ENABLE_RGB_MATRIX_FLOWER_BLOOMING
#undef ENABLE_RGB_MATRIX_RAINDROPS
#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
#undef ENABLE_RGB_MATRIX_HUE_BREATHING
#undef ENABLE_RGB_MATRIX_HUE_PENDULUM
#undef ENABLE_RGB_MATRIX_HUE_WAVE
#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
#undef ENABLE_RGB_MATRIX_PIXEL_RAIN
#undef ENABLE_RGB_MATRIX_STARLIGHT
#undef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE
#undef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT
#undef ENABLE_RGB_MATRIX_RIVERFLOW
#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
#undef ENABLE_RGB_MATRIX_SPLASH
#undef ENABLE_RGB_MATRIX_MULTISPLASH
#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#undef ENABLE_RGB_MATRIX_ALPHAS_MODS
#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
#undef ENABLE_RGB_MATRIX_BREATHING
#undef ENABLE_RGB_MATRIX_BAND_SAT
#undef ENABLE_RGB_MATRIX_BAND_VAL
#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
#undef ENABLE_RGB_MATRIX_CYCLE_ALL
#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
#undef ENABLE_RGB_MATRIX_DUAL_BEACON
#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
#undef ENABLE_RGB_MATRIX_FLOWER_BLOOMING
#undef ENABLE_RGB_MATRIX_RAINDROPS
#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
#undef ENABLE_RGB_MATRIX_HUE_BREATHING
#undef ENABLE_RGB_MATRIX_HUE_PENDULUM
#undef ENABLE_RGB_MATRIX_HUE_WAVE
#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
#undef ENABLE_RGB_MATRIX_PIXEL_RAIN
#undef ENABLE_RGB_MATRIX_STARLIGHT
#undef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE
#undef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT
#undef ENABLE_RGB_MATRIX_RIVERFLOW
#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
#undef ENABLE_RGB_MATRIX_SPLASH
#undef ENABLE_RGB_MATRIX_MULTISPLASH
#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
//Set common configuration for all keyboards
#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_TIMEOUT 60000 //1 min
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
#define RGB_MATRIX_DEFAULT_HUE 4
#define RGB_MATRIX_DEFAULT_SAT 79
#define RGB_MATRIX_DEFAULT_VAL 59
#define RGB_MATRIX_DEFAULT_SPD 32
//Set per keyboard configuration
#if defined(KEYBOARD_bastardkb_charybdis_3x5) \
|| defined(KEYBOARD_dztech_dz60rgb_v2_1) \
|| defined(KEYBOARD_bluebell_swoop) \
|| defined(KEYBOARD_klor_2040)
# define ENABLE_RGB_MATRIX_BREATHING
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
# define ENABLE_RGB_MATRIX_DUAL_BEACON
# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
# define ENABLE_RGB_MATRIX_HUE_BREATHING
# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
# define ENABLE_RGB_MATRIX_SPLASH
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_TYPING_HEATMAP
//enable minimal effects to save memory
#else
# define ENABLE_RGB_MATRIX_BREATHING
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_BREATHING
#endif //KEYBOARD_bastardkb_charybdis_3x5...
//heatmap specific settings
#if defined(ENABLE_RGB_MATRIX_TYPING_HEATMAP)
# define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 9 //default 25
# define RGB_MATRIX_TYPING_HEATMAP_SPREAD 40 //40
# define RGB_MATRIX_TYPING_HEATMAP_AREA_LIMIT 16 //16
# define RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP 20 //32
#endif //ENABLE_RGB_MATRIX_TYPING_HEATMAP

View file

@ -1,28 +0,0 @@
#pragma once
/* Split keyboard
*
* https://docs.qmk.fm/#/feature_split_keyboard
*
*/
//Clear variables we plan to use that might be set elsewhere
#undef SPLIT_TRANSPORT_MIRROR
#undef SPLIT_LAYER_STATE_ENABLE
#undef SPLIT_LED_STATE_ENABLE
#undef SPLIT_MODS_ENABLE
#undef SPLIT_OLED_ENABLE
#undef SPLIT_ACTIVITY_ENABLE
#undef SPLIT_USB_DETECT
#undef SPLIT_WPM_ENABLE
//Set common configuration for all keyboards
#define SPLIT_TRANSPORT_MIRROR
#define SPLIT_LAYER_STATE_ENABLE
#define SPLIT_LED_STATE_ENABLE
#define SPLIT_MODS_ENABLE
#define SPLIT_OLED_ENABLE
#define SPLIT_ACTIVITY_ENABLE
#define SPLIT_WPM_ENABLE
#define MASTER_RIGHT

View file

@ -1,33 +0,0 @@
#pragma once
/* Tapping, Oneshot
*
* https://docs.qmk.fm/#/tap_hold
* https://docs.qmk.fm/#/one_shot_keys
*
*/
//Clear variables we plan to use that might be set elsewhere
#undef TAP_CODE_DELAY
#undef TAP_HOLD_CAPS_DELAY
#undef TAPPING_TERM
#undef QUICK_TAP_TERM
#undef ONESHOT_TAP_TOGGLE
#undef ONESHOT_TIMEOUT
//Set common configuration for all keyboards
#define TAP_CODE_DELAY 5 //time before tap is released
#define TAP_HOLD_CAPS_DELAY TAP_CODE_DELAY //turning down delay for caps lock so ploopy can do DPI switching
#define WAIT_DELAY 5 //custom variable to configure time between taps
#define TAPPING_TERM 175
#define QUICK_TAP_TERM 120
#define ONESHOT_TAP_TOGGLE 3
#define ONESHOT_TIMEOUT 2000

View file

@ -2,44 +2,35 @@
bool get_combo_must_tap(uint16_t index, combo_t *combo) {
switch (index) {
// case MOUSE_BUTTON3:
// case MOUSE_BUTTON4:
// case MOUSE_BUTTON5:
// case MOUSE_DRGTOG:
case KEY_ENT:
case KEY_TAB:
return true;
default:
return false;
}
}
bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) {
bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) {
// disable all combos on config layer
if ( get_highest_layer(layer_state | default_layer_state) == _CONFIG ) return false;
switch (combo_index) {
case MOUSE_BUTTON1:
// case MOUSE_BUTTON2:
// case MOUSE_BUTTON3:
// case MOUSE_BUTTON4:
// case MOUSE_BUTTON5:
if ( get_highest_layer(layer_state | default_layer_state) > FIRST_DEFAULT_LAYER ) {
return false;
}
case MOUSE_DRGTOG:
if ( get_highest_layer(layer_state | default_layer_state) > FIRST_DEFAULT_LAYER ) return false;
if (( get_highest_layer(layer_state | default_layer_state) != FIRST_DEFAULT_LAYER )
&& ( get_highest_layer(layer_state | default_layer_state) != _MOUSE_FUNC )) {
return false;
}
default:
return true;
}
}

View file

@ -2,25 +2,16 @@
#include "t4corun.h"
const uint16_t PROGMEM mou_btn1_combo[] = { KC_D, KC_F, COMBO_END };
//const uint16_t PROGMEM mou_btn2_combo[] = { KC_S, KC_D, COMBO_END };
//const uint16_t PROGMEM mou_btn3_combo[] = { KC_F, KC_G, COMBO_END };
//const uint16_t PROGMEM mou_btn4_combo[] = { KC_F, KC_R, COMBO_END };
//const uint16_t PROGMEM mou_btn5_combo[] = { KC_T, KC_G, COMBO_END };
const uint16_t PROGMEM mou_drg_combo[] = { KC_X, KC_C, COMBO_END };
const uint16_t PROGMEM mou_btn1_combo[] = { KC_C, KC_V, COMBO_END };
const uint16_t PROGMEM mou_drg_combo[] = { KC_X, KC_V, COMBO_END };
const uint16_t PROGMEM key_ent_combo[] = { KC_C, KC_V, COMBO_END };
const uint16_t PROGMEM key_ent_combo[] = { KC_D, KC_F, COMBO_END };
const uint16_t PROGMEM key_bspc_combo[] = { KC_M, TR_COMM, COMBO_END };
const uint16_t PROGMEM key_tab_combo[] = { KC_J, KC_K, COMBO_END };
enum combos {
MOUSE_BUTTON1,
// MOUSE_BUTTON2,
// MOUSE_BUTTON3,
// MOUSE_BUTTON4,
// MOUSE_BUTTON5,
MOUSE_DRGTOG,
KEY_ENT,
KEY_BSPC,
@ -28,17 +19,11 @@ enum combos {
COMBO_LENGTH
};
//their documentation is so confusing because you don't use COMBO_LEN defining the actions
uint16_t COMBO_LEN = COMBO_LENGTH;
combo_t key_combos[COMBO_LENGTH] = {
[MOUSE_BUTTON1] = COMBO(mou_btn1_combo, KC_BTN1),
// [MOUSE_BUTTON2] = COMBO(mou_btn2_combo, KC_BTN2),
// [MOUSE_BUTTON3] = COMBO(mou_btn3_combo, KC_BTN3),
// [MOUSE_BUTTON4] = COMBO(mou_btn4_combo, KC_BTN4),
// [MOUSE_BUTTON5] = COMBO(mou_btn5_combo, KC_BTN5),
[MOUSE_DRGTOG] = COMBO(mou_drg_combo, TR_DRGS),
[KEY_ENT] = COMBO(key_ent_combo, KC_ENT),
[KEY_BSPC] = COMBO(key_bspc_combo, KC_BSPC),

View file

@ -14,27 +14,9 @@ Intentionally did not convert all the override/autoshit tap holds to this format
const key_override_t delete_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPC, KC_DEL);
const key_override_t media_next_override = ko_make_with_layers(MOD_MASK_SHIFT, KC_MNXT, KC_MPRV, 1<<_NAVIGATION);
const key_override_t f1_override = ko_make_with_layers(MOD_MASK_CSA, KC_1, KC_F1, 1<<_NUMBER);
const key_override_t f2_override = ko_make_with_layers(MOD_MASK_CSA, KC_2, KC_F2, 1<<_NUMBER);
const key_override_t f3_override = ko_make_with_layers(MOD_MASK_CSA, KC_3, KC_F3, 1<<_NUMBER);
const key_override_t f4_override = ko_make_with_layers(MOD_MASK_CSA, KC_4, KC_F4, 1<<_NUMBER);
const key_override_t f5_override = ko_make_with_layers(MOD_MASK_CSA, KC_5, KC_F5, 1<<_NUMBER);
const key_override_t f6_override = ko_make_with_layers(MOD_MASK_CSA, KC_6, KC_F6, 1<<_NUMBER);
const key_override_t f7_override = ko_make_with_layers(MOD_MASK_CSA, KC_7, KC_F7, 1<<_NUMBER);
const key_override_t f8_override = ko_make_with_layers(MOD_MASK_CSA, KC_8, KC_F8, 1<<_NUMBER);
const key_override_t f9_override = ko_make_with_layers(MOD_MASK_CSA, KC_9, KC_F9, 1<<_NUMBER);
const key_override_t f10_override = ko_make_with_layers(MOD_MASK_CSA, KC_COMM, KC_F10, 1<<_NUMBER);
const key_override_t f11_override = ko_make_with_layers(MOD_MASK_CSA, KC_DOT, KC_F11, 1<<_NUMBER);
const key_override_t f12_override = ko_make_with_layers(MOD_MASK_CSA, KC_MINS, KC_F12, 1<<_NUMBER);
const key_override_t mb2_override = ko_make_with_layers(MOD_MASK_CTRL, KC_BTN2, KC_BTN4, 1<<_NUMBER);
const key_override_t mb3_override = ko_make_with_layers(MOD_MASK_ALT, KC_BTN3, KC_BTN5, 1<<_NUMBER);
#if defined(HAPTIC_ENABLE)
const key_override_t hfnext_override = ko_make_with_layers(MOD_MASK_SHIFT, TR_HNXT, HF_PREV, 1<<_CONFIG);
const key_override_t hfconu_override = ko_make_with_layers(MOD_MASK_SHIFT, TR_HCNU, HF_COND, 1<<_CONFIG);
const key_override_t hfnext_override = ko_make_with_layers(MOD_MASK_SHIFT, HF_NEXT, HF_PREV, 1<<_CONFIG);
const key_override_t hfconu_override = ko_make_with_layers(MOD_MASK_SHIFT, HF_CONU, HF_COND, 1<<_CONFIG);
#endif //HAPTIC_ENABLE
#if defined(AUDIO_ENABLE)
@ -44,21 +26,6 @@ const key_override_t ckup_override = ko_make_with_layers(MOD_MASK_SHIFT, C
const key_override_t **key_overrides = (const key_override_t *[]) {
&delete_override,
&media_next_override,
&f1_override,
&f2_override,
&f3_override,
&f4_override,
&f5_override,
&f6_override,
&f7_override,
&f8_override,
&f9_override,
&f10_override,
&f11_override,
&f12_override,
&mb2_override,
&mb3_override,
#if defined(HAPTIC_ENABLE)
&hfnext_override,

View file

@ -42,9 +42,12 @@ void render_layer_state(uint8_t col, uint8_t line, bool moveCursor) {
case _SYMBOL:
oled_write_P(PSTR(OLED_RENDER_LAYER_4), false);
break;
case _CONFIG:
case _MOUSE_FUNC:
oled_write_P(PSTR(OLED_RENDER_LAYER_5), false);
break;
case _CONFIG:
oled_write_P(PSTR(OLED_RENDER_LAYER_6), false);
break;
default:
oled_write_P(PSTR(OLED_RENDER_LAYER_1), false);
break;
@ -62,7 +65,8 @@ void render_layer_state_list(uint8_t col, uint8_t line, bool moveCursor) {
oled_write_P(PSTR(OLED_RENDER_LAYER_2), get_highest_layer(layer_state) == _NAVIGATION);
oled_write_P(PSTR(OLED_RENDER_LAYER_3), get_highest_layer(layer_state) == _NUMBER);
oled_write_P(PSTR(OLED_RENDER_LAYER_4), get_highest_layer(layer_state) == _SYMBOL);
oled_write_P(PSTR(OLED_RENDER_LAYER_5), get_highest_layer(layer_state) == _CONFIG);
oled_write_P(PSTR(OLED_RENDER_LAYER_5), get_highest_layer(layer_state) == _MOUSE_FUNC);
oled_write_P(PSTR(OLED_RENDER_LAYER_6), get_highest_layer(layer_state) == _CONFIG);
}

View file

@ -11,7 +11,8 @@
# define OLED_RENDER_LAYER_2 "Navigation"
# define OLED_RENDER_LAYER_3 "Number "
# define OLED_RENDER_LAYER_4 "Symbol "
# define OLED_RENDER_LAYER_5 "Config "
# define OLED_RENDER_LAYER_5 "Mouse+Func"
# define OLED_RENDER_LAYER_6 "Config "
#else
//128x32 are ? x 5 char wide
# define OLED_RENDER_DEFAULT_LAYER1 "Qwrty"
@ -22,7 +23,8 @@
# define OLED_RENDER_LAYER_2 " Nav "
# define OLED_RENDER_LAYER_3 " Num "
# define OLED_RENDER_LAYER_4 " Sym "
# define OLED_RENDER_LAYER_5 " Cfg "
# define OLED_RENDER_LAYER_5 " MFn "
# define OLED_RENDER_LAYER_6 " Cfg "
#endif
void render_oled_128x64(void);

View file

@ -31,11 +31,11 @@ AUDIO_ENABLE ?= no
WPM_ENABLE ?= yes
# qmk features we will force as these are critical for my workflow
EXTRAKEY_ENABLE = yes
CAPS_WORD_ENABLE = yes
MOUSEKEY_ENABLE = yes
COMBO_ENABLE = yes
KEY_OVERRIDE_ENABLE = yes
EXTRAKEY_ENABLE ?= yes
CAPS_WORD_ENABLE ?= yes
MOUSEKEY_ENABLE ?= yes
COMBO_ENABLE ?= yes
KEY_OVERRIDE_ENABLE ?= yes
# ---------------------------------------------------------
@ -44,13 +44,21 @@ KEY_OVERRIDE_ENABLE = yes
SRC += \
t4corun.c \
features/taphold.c \
features/capsword.c \
features/keyoverride.c \
INTROSPECTION_KEYMAP_C += features/combo.c
# ---------------------------------------------------------
# include optional code for enabled features for each keyboard
# include additional code for enabled features for each keyboard
ifeq ($(strip $(COMBO_ENABLE)), yes)
INTROSPECTION_KEYMAP_C += features/combo.c
endif
ifeq ($(strip $(KEY_OVERRIDE_ENABLE)), yes)
SRC += features/keyoverride.c
endif
ifeq ($(strip $(CAPS_WORD_ENABLE)), yes)
SRC += features/capsword.c
endif
ifeq ($(strip $(OLED_ENABLE)), yes)
SRC += features/oled.c

View file

@ -18,8 +18,9 @@ void setLunaJumped(void) { showedJump = true;}
// Hold Navigation and Number to get Symbol
layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _NAVIGATION, _NUMBER, _SYMBOL); }
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _NAVIGATION, _NUMBER, _SYMBOL);
}
// Customize behavior for existing keycodes or create new ones
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@ -50,6 +51,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return false;
// makes num lock a hold instead of toggle
// prevents accidental ploopy nano going into bootloader
case KC_NUM:

View file

@ -15,6 +15,7 @@ enum layers {
_NAVIGATION,
_NUMBER,
_SYMBOL,
_MOUSE_FUNC,
_CONFIG
};
@ -54,24 +55,26 @@ enum keycodes {
#define ___x___ KC_NO
// momentary layer
#define NAV MO(_NAVIGATION)
#define NUM MO(_NUMBER)
#define CONFIG MO(_CONFIG)
// layer changes
#define NAV MO(_NAVIGATION)
#define NUM MO(_NUMBER)
#define MF_Z LT(_MOUSE_FUNC, KC_Z)
#define MOU_FUN TG(_MOUSE_FUNC)
#define CONFIG MO(_CONFIG)
// Windows Shortcuts
#define SC_COPY LCTL(KC_C)
#define SC_CUT LCTL(KC_X)
#define SC_UNDO LCTL(KC_Z)
#define SC_PAST LCTL(KC_V)
#define SC_REDO LCTL(KC_Y)
#define SC_SNIP LGUI(LSFT(KC_S))
#define SC_FILE LGUI(KC_E)
#define SC_COPY LCTL(KC_C)
#define SC_CUT LCTL(KC_X)
#define SC_UNDO LCTL(KC_Z)
#define SC_PAST LCTL(KC_V)
#define SC_REDO LCTL(KC_Y)
#define SC_SNIP LGUI(LSFT(KC_S))
#define SC_FILE LGUI(KC_E)
// Zoom for encoders
#define ZOOMIN LCTL(KC_WH_U)
#define ZOOMOUT LCTL(KC_WH_D)
#define ZOOMRST LCTL(KC_0)
#define ZOOMIN LCTL(KC_WH_U)
#define ZOOMOUT LCTL(KC_WH_D)
#define ZOOMRST LCTL(KC_0)
/*
- Any keycodes with prefix TR has behavior dependent on if the feature is enabled.
@ -88,98 +91,102 @@ enum keycodes {
// tap hoLd. These will be intercepted and overridden. The LT will be ignored
// Brackets: open and close brackets and put the cursor inside
#define TR_LCBR LT(FIRST_DEFAULT_LAYER, TH_LCBR)
#define TR_LABK LT(FIRST_DEFAULT_LAYER, TH_LABK)
#define TR_LBRC LT(FIRST_DEFAULT_LAYER, TH_LBRC)
#define TR_LPRN LT(FIRST_DEFAULT_LAYER, TH_LPRN)
#define TR_DQUO LT(FIRST_DEFAULT_LAYER, TH_DQUO)
#define TR_SQUO LT(FIRST_DEFAULT_LAYER, TH_SQUO)
#define TR_LCBR LT(FIRST_DEFAULT_LAYER, TH_LCBR)
#define TR_LABK LT(FIRST_DEFAULT_LAYER, TH_LABK)
#define TR_LBRC LT(FIRST_DEFAULT_LAYER, TH_LBRC)
#define TR_LPRN LT(FIRST_DEFAULT_LAYER, TH_LPRN)
#define TR_DQUO LT(FIRST_DEFAULT_LAYER, TH_DQUO)
#define TR_SQUO LT(FIRST_DEFAULT_LAYER, TH_SQUO)
// double tap
#define TR_BSLS LT(FIRST_DEFAULT_LAYER, TH_BSLS)
#define TR_SLSH LT(FIRST_DEFAULT_LAYER, TH_SLSH)
#define TR_PIPE LT(FIRST_DEFAULT_LAYER, TH_PIPE)
#define TR_BSLS LT(FIRST_DEFAULT_LAYER, TH_BSLS)
#define TR_SLSH LT(FIRST_DEFAULT_LAYER, TH_SLSH)
#define TR_PIPE LT(FIRST_DEFAULT_LAYER, TH_PIPE)
// Custom override without holding shift
#define TR_COMM LT(FIRST_DEFAULT_LAYER, TH_COMM)
#define TR_DOT LT(FIRST_DEFAULT_LAYER, TH_DOT)
#define TR_PERC LT(FIRST_DEFAULT_LAYER, TH_PERC)
#define TR_COMM LT(FIRST_DEFAULT_LAYER, TH_COMM)
#define TR_DOT LT(FIRST_DEFAULT_LAYER, TH_DOT)
#define TR_PERC LT(FIRST_DEFAULT_LAYER, TH_PERC)
// auto shift
#define TR_EQL LT(FIRST_DEFAULT_LAYER, TH_EQL)
#define TR_MINS LT(FIRST_DEFAULT_LAYER, TH_MINS)
#define TR_GRV LT(FIRST_DEFAULT_LAYER, TH_GRV)
#define TR_SCLN LT(FIRST_DEFAULT_LAYER, TH_SCLN)
#define TR_QUOT LT(FIRST_DEFAULT_LAYER, TH_QUOT)
#define TR_EQL LT(FIRST_DEFAULT_LAYER, TH_EQL)
#define TR_MINS LT(FIRST_DEFAULT_LAYER, TH_MINS)
#define TR_GRV LT(FIRST_DEFAULT_LAYER, TH_GRV)
#define TR_SCLN LT(FIRST_DEFAULT_LAYER, TH_SCLN)
#define TR_QUOT LT(FIRST_DEFAULT_LAYER, TH_QUOT)
#if defined(KEYBOARD_bastardkb_charybdis_3x5)
//these mouse codes are defined in charybdis.h
# define TR_SNIP SNIPING
# define TR_DRGS DRG_TOG
# define TR_SDPI S_D_MOD //sniping dpi
# define TR_PDPI DPI_MOD //pointer dpi
# define TR_SNIP SNIPING
# define TR_DRGS DRG_TOG
# define TR_SDPI S_D_MOD //sniping dpi
# define TR_PDPI DPI_MOD //pointer dpi
#else
# define TR_SNIP ___x___
# define TR_DRGS KC_SCRL //use host status for ploopy nano drag scroll
# define TR_SDPI ___x___
# define TR_PDPI KC_NUM //use host status for ploopy nano dpi switch
# define TR_SNIP ___x___
# define TR_DRGS KC_SCRL //use host status for ploopy nano drag scroll
# define TR_SDPI ___x___
# define TR_PDPI KC_NUM //use host status for ploopy nano dpi switch
#endif //KEYBOARD_bastardkb_charybdis_3x5
#if defined(DYNAMIC_MACRO_ENABLE)
# define TR_DMR1 DM_REC1
# define TR_DMP1 DM_PLY1
# define TR_DMR1 DM_REC1
# define TR_DMP1 DM_PLY1
# define TR_DMR2 DM_REC2
# define TR_DMP2 DM_PLY2
#else
# define TR_DMR1 ___x___
# define TR_DMP1 ___x___
# define TR_DMR1 ___x___
# define TR_DMP1 ___x___
# define TR_DMR2 ___x___
# define TR_DMP2 ___x___
#endif //DYNAMIC_MACRO_ENABLE
#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
# define TR_RHUI RGB_HUI
# define TR_RSAI RGB_SAI
# define TR_RVAI RGB_VAI
# define TR_RSPI RGB_SPI
# define TR_RTOG RGB_TOG
# define TR_RMOD RGB_MOD
# define TR_RRMD RGB_RMOD
# define TR_RHUI RGB_HUI
# define TR_RSAI RGB_SAI
# define TR_RVAI RGB_VAI
# define TR_RSPI RGB_SPI
# define TR_RTOG RGB_TOG
# define TR_RMOD RGB_MOD
# define TR_RRMD RGB_RMOD
#else
# define TR_RHUI ___x___
# define TR_RSAI ___x___
# define TR_RVAI ___x___
# define TR_RSPI ___x___
# define TR_RTOG ___x___
# define TR_RMOD ___x___
# define TR_RRMD ___x___
# define TR_RHUI ___x___
# define TR_RSAI ___x___
# define TR_RVAI ___x___
# define TR_RSPI ___x___
# define TR_RTOG ___x___
# define TR_RMOD ___x___
# define TR_RRMD ___x___
#endif //RGB_MATRIX_ENABLE || RGBLIGHT_ENABLE
#if defined(HAPTIC_ENABLE)
# define TR_HTOG HF_TOGG
# define TR_HFBK HF_FDBK
# define TR_HNXT HF_NEXT
# define TR_HCNU HF_CONU
# define TR_HRST HF_RST
# define TR_HTOG HF_TOGG
# define TR_HFBK HF_FDBK
# define TR_HNXT HF_NEXT
# define TR_HCNU HF_CONU
# define TR_HRST HF_RST
#else
# define TR_HTOG ___x___
# define TR_HFBK ___x___
# define TR_HNXT ___x___
# define TR_HCNU ___x___
# define TR_HRST ___x___
# define TR_HTOG ___x___
# define TR_HFBK ___x___
# define TR_HNXT ___x___
# define TR_HCNU ___x___
# define TR_HRST ___x___
#endif //HAPTIC_ENABLe
#if defined(AUDIO_ENABLE)
# define TR_ATOG AU_TOGG
# define TR_CTOG CK_TOGG
# define TR_CKUP CK_UP
# define TR_CRST CK_RST
# define TR_ATOG AU_TOGG
# define TR_CTOG CK_TOGG
# define TR_CKUP CK_UP
# define TR_CRST CK_RST
#else
# define TR_ATOG ___x___
# define TR_CTOG ___x___
# define TR_CKUP ___x___
# define TR_CRST ___x___
# define TR_ATOG ___x___
# define TR_CTOG ___x___
# define TR_CKUP ___x___
# define TR_CRST ___x___
#endif //AUDIO_ENABLE
@ -189,7 +196,7 @@ enum keycodes {
#define _SCAG_MODS________________________ TR_LSFT, TR_LCTL, TR_LALT, TR_LGUI
#define _UCCPR_L___________________________________ SC_UNDO, SC_CUT, SC_COPY, SC_PAST, SC_REDO
#define _BASE_L4_________________ ___x___, NUM, TR_LSFT
#define _BASE_L4_________________ KC_BTN1, NUM, TR_LSFT
#define _BASE_R4_________________ KC_SPC, NAV, KC_MUTE
#define _LAYER_TRANS_____________ ___x___, _______, ___x___
@ -199,14 +206,14 @@ enum keycodes {
#define LAYER_QWERTY \
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TR_QUOT, \
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TR_COMM, TR_DOT, TR_MINS, \
MF_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TR_COMM, TR_DOT, TR_MINS, \
_BASE_L4_________________, _BASE_R4_________________
#define LAYER_COLEMAK_DH \
KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, TR_QUOT, \
KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, \
KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, TR_COMM, TR_DOT, TR_MINS, \
MF_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, TR_COMM, TR_DOT, TR_MINS, \
_BASE_L4_________________, _BASE_R4_________________
@ -218,14 +225,14 @@ enum keycodes {
#define LAYER_NAVIGATION \
KC_ESC, KC_HOME, KC_UP, KC_END, KC_PGUP, ___x___, ___x___, SC_FILE, SC_SNIP, CONFIG, \
KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ___x___, _SCAG_MODS________________________, \
_UCCPR_L___________________________________, ___x___, KC_APP, TR_SNIP, TR_SDPI, TR_PDPI, \
KC_ESC, KC_HOME, KC_UP, KC_END, KC_PGUP, ___x___, ___x___, ___x___, KC_CAPS, CONFIG, \
___x___, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ___x___, _SCAG_MODS________________________, \
_UCCPR_L___________________________________, ___x___, KC_APP, KC_VOLD, KC_VOLU, KC_MUTE, \
ZOOMRST, NUM, KC_ENT, _LAYER_TRANS_____________
#define LAYER_NUMBER \
KC_ESC, KC_BTN3, KC_BTN2, KC_BTN1, TR_GRV, ___x___, KC_7, KC_8, KC_9, KC_COMM, \
KC_ESC, SC_SNIP, SC_FILE, MOU_FUN, TR_GRV, ___x___, KC_7, KC_8, KC_9, KC_COMM, \
_GACS_MODS________________________, TR_SCLN, KC_0, KC_4, KC_5, KC_6, KC_DOT, \
_UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, KC_MINS, \
_LAYER_TRANS_____________, _BASE_R4_________________
@ -238,8 +245,15 @@ enum keycodes {
_LAYER_TRANS_____________, _LAYER_TRANS_____________
#define LAYER_MOUSE_FUNC \
MOU_FUN, KC_MPRV, KC_MNXT, KC_MPLY, ___x___, ___x___, KC_F7, KC_F8, KC_F9, KC_F10, \
_GACS_MODS________________________, TR_DRGS, ___x___, KC_F4, KC_F5, KC_F6, KC_F11, \
_______, ___x___, KC_BTN5, KC_BTN4, TR_SNIP, ___x___, KC_F1, KC_F2, KC_F3, KC_F12, \
KC_BTN1, KC_BTN2, KC_BTN3, TR_PDPI, TR_SDPI, ___x___
#define LAYER_CONFIG \
TR_HRST, TR_HCNU, TR_HNXT, TR_HFBK, TR_HTOG, ___x___, PN_BOOT, EE_CLR, QK_BOOT, _______, \
TR_CRST, TR_CKUP, TR_CTOG, ___x___, TR_ATOG, ___x___, TR_LSFT, ___x___, ___x___, TR_RMOD, \
KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, TR_RTOG, TR_RHUI, TR_RSAI, TR_RVAI, TR_RSPI, \
BASELYR, TR_DMR1, TR_DMP1, ___x___, ___x___, TR_RTOG
TR_CRST, TR_CKUP, TR_CTOG, ___x___, TR_ATOG, ___x___, TR_LSFT, ___x___, ___x___, BASELYR, \
___x___, ___x___, ___x___, ___x___, TR_RTOG, TR_RMOD, TR_RHUI, TR_RSAI, TR_RVAI, TR_RSPI, \
BASELYR, TR_DMR1, TR_DMP1, TR_DMP2, TR_DMR2, TR_RTOG