Compare commits

...

9 Commits

Author SHA1 Message Date
3991994177 minor tweak 2025-05-27 08:49:27 -07:00
6bfd7c5f12 added game layout 2025-05-27 08:49:16 -07:00
fab75ada44 Voyager tweaks 2024-11-14 21:38:25 -08:00
a36926391a Minor edits 2024-08-23 09:43:24 -07:00
41b6c60810 Added basic russian map 2024-01-29 11:34:03 -08:00
2845481490 Minor changes 2024-01-22 12:25:50 -08:00
08f3cee0a7 Added horizon layout 2024-01-15 10:40:12 -08:00
e6318b045d Added a few macros 2024-01-12 10:54:16 -08:00
741d87e0a8 Minor edits 2024-01-12 10:54:05 -08:00
21 changed files with 349 additions and 167 deletions

View File

@ -19,7 +19,8 @@
"cstdint": "c", "cstdint": "c",
"chrono": "c", "chrono": "c",
"typeindex": "c", "typeindex": "c",
"typeinfo": "c" "typeinfo": "c",
"unordered_map": "c"
}, },
"C_Cpp.errorSquiggles": "disabled", "C_Cpp.errorSquiggles": "disabled",
} }

View File

@ -1,3 +1,5 @@
all: voyager ergodox
voyager: voyager:
@mkdir -p "$$(pwd)/output" @mkdir -p "$$(pwd)/output"
docker run -it --rm \ docker run -it --rm \
@ -23,4 +25,4 @@ docker:
docker build docker -t git.betalupi.com/mark/qmk docker build docker -t git.betalupi.com/mark/qmk
.PHONY: voyager ergodox ergodox_upload docker .PHONY: voyager ergodox ergodox_upload docker all

View File

@ -97,6 +97,12 @@ void matrix_scan_user(void) {
} }
const uint16_t PROGMEM test_combo2[] = {KC_D, KC_F, COMBO_END};
combo_t key_combos[] = {
COMBO(test_combo2, KC_TAB),
};
// Include all other parts of configuration // Include all other parts of configuration
#include "layers/layers.c" #include "layers/layers.c"

View File

@ -10,9 +10,9 @@
#ifdef BETA_LAYER_KEYS #ifdef BETA_LAYER_KEYS
#define BETA_LAYER_CONTEXT_DATA LAYOUT_ergodox(\ #define BETA_LAYER_CONTEXT_DATA LAYOUT_ergodox(\
TO(LAYER_MAIN), RGB_HUD, RGB_HUI, KC_NO, KC_NO, KC_NO, KC_NO,\ TO(LAYER_MAIN), RGB_HUD, RGB_HUI, KC_NO, KC_NO, KC_NO, KC_NO,\
TOGGLE_LAYER_COLOR, RGB_SAD, RGB_SAI, KC_NO, KC_NO, KC_NO, RGB_HUI,\ TOGGLE_LAYER_COLOR, RGB_SAD, RGB_SAI, KC_NO, KC_NO, KC_NO, KC_NO,\
KC_NO, RGB_VAD, RGB_VAI, KC_NO, KC_NO, KC_NO,\ KC_NO, RGB_VAD, RGB_VAI, KC_NO, KC_NO, KC_NO,\
KC_NO, RGB_SPD, RGB_SPI, KC_NO, KC_NO, KC_NO, RGB_HUD,\ KC_NO, RGB_SPD, RGB_SPI, KC_NO, KC_NO, KC_NO, KC_NO,\
KC_NO, KC_NO, KC_NO, KC_NO, RGB_MOD,\ KC_NO, KC_NO, KC_NO, KC_NO, RGB_MOD,\
\ \
RGB_TOG, KC_NO,\ RGB_TOG, KC_NO,\

View File

@ -23,7 +23,7 @@
KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, LGUI(KC_TAB),\ KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, LGUI(KC_TAB),\
KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_NO, KC_NO,\ KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_NO, KC_NO,\
KC_H, KC_J, KC_K, MO(LAYER_SYMBOLS), KC_L, QK_LEAD,\ KC_H, KC_J, KC_K, MO(LAYER_SYMBOLS), KC_L, QK_LEAD,\
KC_NO, KC_N, KC_M, KC_P, KC_NO, KC_NO, KC_NO,\ KC_NO, KC_N, KC_M, KC_P, KC_V, KC_NO, KC_NO,\
KC_RIGHT, KC_NO, KC_NO, KC_NO, LGUI(KC_SPACE),\ KC_RIGHT, KC_NO, KC_NO, KC_NO, LGUI(KC_SPACE),\
\ \
KC_NO, KC_NO,\ KC_NO, KC_NO,\

View File

@ -1,5 +1,5 @@
#include "extra_mappings.h" #include "extra_mappings.h"
#define LAYER_INCLUDE_FILE "definitions/layers.inc" #define LAYER_INCLUDE_FILE "definitions/include.c"
/* /*

View File

@ -1,3 +1,4 @@
# rules.mk overrides # rules.mk overrides
TAP_DANCE_ENABLE = yes TAP_DANCE_ENABLE = yes
COMBO_ENABLE = yes

View File

@ -3,6 +3,8 @@
// No timeout after initial leader key press // No timeout after initial leader key press
#define LEADER_NO_TIMEOUT #define LEADER_NO_TIMEOUT
#define COMBO_SHOULD_TRIGGER
// Timeout resets after each keypress // Timeout resets after each keypress
#define LEADER_PER_KEY_TIMING #define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 500 #define LEADER_TIMEOUT 500
@ -33,6 +35,6 @@
#define USB_SUSPEND_WAKEUP_DELAY 200 #define USB_SUSPEND_WAKEUP_DELAY 200
#define RAW_USAGE_PAGE 0xFF60 #define RAW_USAGE_PAGE 0xFF60
#define RAW_USAGE_ID 0x61 #define RAW_USAGE_ID 0x61
#define LAYER_STATE_8BIT #define LAYER_STATE_32BIT
#define RGB_MATRIX_STARTUP_SPD 60 #define RGB_MATRIX_STARTUP_SPD 60

View File

@ -3,7 +3,6 @@
#include "keymap_russian.h" #include "keymap_russian.h"
#include "keymap_us_international.h" #include "keymap_us_international.h"
// Values that should not be saved to git. // Values that should not be saved to git.
// There should be a`secrets.h` in this directory // There should be a`secrets.h` in this directory
// with the following contents: // with the following contents:
@ -14,7 +13,8 @@
#include "secrets.h" #include "secrets.h"
// Macro keycodes // Macro keycodes
enum custom_keycodes { enum custom_keycodes
{
M_SHUTDOWN = BETA_SAFE_RANGE, M_SHUTDOWN = BETA_SAFE_RANGE,
// Macros // Macros
@ -43,28 +43,20 @@ enum custom_keycodes {
M_SPECIAL_BOTTOM M_SPECIAL_BOTTOM
}; };
// Tapdance keycodes
enum tap_dance_codes {
TD_WMLAYOUT,
TD_SCREENSHOT,
TD_OCR
};
// LED colors // LED colors
#define LC_OFF { 0, 0, 0} #define LC_OFF {0, 0, 0}
#define LC_GRN { 85, 203, 158} #define LC_GRN {85, 203, 158}
#define LC_YLW { 32, 176, 255} #define LC_YLW {32, 176, 255}
#define LC_PNK {243, 222, 234} #define LC_PNK {243, 222, 234}
#define LC_CYN {134, 255, 213} #define LC_CYN {134, 255, 213}
#define LC_ORN { 14, 255, 255} #define LC_ORN {14, 255, 255}
#define LC_WHT { 0, 0, 150} #define LC_WHT {0, 0, 150}
#define LC_RED { 0, 255, 145} #define LC_RED {0, 255, 145}
#define LC_BLU {153, 255, 153} #define LC_BLU {153, 255, 153}
#define LC_RU_B LC_HSV( 0, 0, 165) #define LC_RUB {0, 0, 165}
#define LC_RU_G LC_HSV(153, 255, 153) #define LC_RUG {153, 255, 153}
#define LC_RU_K LC_HSV( 0, 255, 145) #define LC_RUK {0, 255, 145}
#ifdef ENABLE_HID_SPELLCHECK #ifdef ENABLE_HID_SPELLCHECK
#include "features/hid_spellcheck.h" #include "features/hid_spellcheck.h"
@ -78,7 +70,7 @@ enum tap_dance_codes {
#include "features/leader/beta_leader.h" #include "features/leader/beta_leader.h"
#endif #endif
//#include "features/beta_rawhid.h" // #include "features/beta_rawhid.h"
/* /*
// Send a special character. // Send a special character.
@ -91,51 +83,111 @@ bool send_special_character(uint16_t keycode) {
return true; return true;
}*/ }*/
const uint16_t PROGMEM test_combo2[] = {KC_D, KC_F, COMBO_END}; const uint16_t PROGMEM combo2[] = {KC_D, KC_F, COMBO_END};
const uint16_t PROGMEM test_combo3[] = {KC_M, KC_P, COMBO_END}; const uint16_t PROGMEM combo3[] = {KC_M, KC_P, COMBO_END};
const uint16_t PROGMEM combo4[] = {RU_ER, RU_TE, COMBO_END};
const uint16_t PROGMEM combo5[] = {RU_EF, RU_GHE, COMBO_END};
const uint16_t PROGMEM combo6[] = {KC_DELETE, KC_A, COMBO_END};
combo_t key_combos[] = { combo_t key_combos[] = {
COMBO(test_combo2, KC_TAB), COMBO(combo2, KC_TAB),
COMBO(test_combo3, KC_RIGHT), COMBO(combo3, KC_RIGHT),
COMBO(combo4, RU_YO),
COMBO(combo5, RU_E),
COMBO(combo6, LCTL(KC_DELETE)),
}; };
void matrix_scan_user(void) { void matrix_scan_user(void)
#ifdef ENABLE_BETA_LEADER {
#ifdef ENABLE_BETA_LEADER
beta_qk_leader_check(); beta_qk_leader_check();
#endif #endif
} }
// Must be done early, layers need this enum
enum tap_dance_codes
{
TD_WMLAYOUT,
TD_SCREENSHOT,
TD_ESCAPE,
TD_NOGAME
};
// Include all other parts of configuration // Include all other parts of configuration
#include "layers/layers.c" #include "layers/layers.c"
#include "parts/leader.c" #include "parts/leader.c"
//#include "parts/tapdance.c" #include "parts/tapdance.c"
bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record)
{
if (
false
//|| layer_state_is(LAYER_SIMPLEARROWS)
)
{
return false;
}
/* Disable combo `SOME_COMBO` on layer `_LAYER_A` */
if (
combo_index == 0 ||
combo_index == 1)
{
if (layer_state_is(LAYER_RUSSIAN))
{
return false;
}
}
else if (
combo_index == 2 ||
combo_index == 3)
{
if (!layer_state_is(LAYER_RUSSIAN))
{
return false;
}
}
return true;
}
// Process macros. // Process macros.
// Return FALSE to halt key processing, // Return FALSE to halt key processing,
// Return TRUE to allow QMK to handle keypress. // Return TRUE to allow QMK to handle keypress.
bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool process_record_user(uint16_t keycode, keyrecord_t *record)
{
#ifdef ENABLE_BETA_LEADER #ifdef ENABLE_BETA_LEADER
if (!beta_process_leader(keycode, record)) { return false; } if (!beta_process_leader(keycode, record))
#endif {
return false;
}
#endif
#ifdef ENABLE_HID_SPELLCHECK #ifdef ENABLE_HID_SPELLCHECK
if (!process_spellcheck(keycode, record)) { return false; } if (!process_spellcheck(keycode, record))
#endif {
return false;
}
#endif
#ifdef ENABLE_AUTOCORRECT #ifdef ENABLE_AUTOCORRECT
if (!process_autocorrection(keycode, record)) { return false; } if (!process_autocorrection(keycode, record))
#endif {
return false;
}
#endif
// Handle special chars // Handle special chars
//if (record->event.pressed) { // if (record->event.pressed) {
// if (!send_special_character(keycode)) { return false; } // if (!send_special_character(keycode)) { return false; }
//} //}
// Handle macros // Handle macros
switch (keycode) { switch (keycode)
{
case M_RESETWM: case M_RESETWM:
if (record->event.pressed) { if (record->event.pressed)
{
SEND_STRING(SS_LCTL(SS_LGUI(SS_LSFT(SS_TAP(X_R))))); SEND_STRING(SS_LCTL(SS_LGUI(SS_LSFT(SS_TAP(X_R)))));
} }
return false; return false;
@ -144,19 +196,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// Using just LGUI with LAYER_DESKTOP as OSL // Using just LGUI with LAYER_DESKTOP as OSL
// does not allow you to hold lgui. This does. // does not allow you to hold lgui. This does.
case M_GUI: case M_GUI:
if (record->event.pressed) { if (record->event.pressed)
{
register_code16(KC_LGUI); register_code16(KC_LGUI);
} else { }
else
{
unregister_code16(KC_LGUI); unregister_code16(KC_LGUI);
} }
return false; return false;
case M_SHUTDOWN: case M_SHUTDOWN:
if (record->event.pressed) { if (record->event.pressed)
{
SEND_STRING(SS_LGUI(SS_TAP(X_P)) SS_DELAY(100) SS_TAP(X_Y) SS_DELAY(100) SS_TAP(X_ENTER)); SEND_STRING(SS_LGUI(SS_TAP(X_P)) SS_DELAY(100) SS_TAP(X_Y) SS_DELAY(100) SS_TAP(X_ENTER));
} }
return false; return false;
/* /*
case M_RU_CTRL: case M_RU_CTRL:
if (record->event.pressed) { if (record->event.pressed) {
layer_move(LAYER_MAIN); layer_move(LAYER_MAIN);
@ -178,6 +234,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;*/ return false;*/
} }
return true; return true;
} }

View File

@ -1,3 +1,5 @@
#define BETA_LAYER_MAGIC_MACRO BETA_LAYER(ARROWS) #define BETA_LAYER_MAGIC_MACRO BETA_LAYER(ARROWS)
#ifdef BETA_LAYER_LAYOUTS #ifdef BETA_LAYER_LAYOUTS
@ -9,13 +11,13 @@
#define BETA_LAYER_CONTEXT_DATA LAYOUT_voyager(\ #define BETA_LAYER_CONTEXT_DATA LAYOUT_voyager(\
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_TRNS, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP, \ KC_TRNS, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP, \
KC_TRNS, LALT(KC_LCTL), KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, \ KC_TRNS, KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, \
KC_LCTL, LGUI(KC_LCTL), KC_NO, KC_NO, KC_NO, KC_NO, \ KC_LCTL, LGUI(KC_LCTL), KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, \ KC_NO, KC_NO, \
\ \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, KC_NO, KC_PGUP, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, LCTL(KC_LEFT), KC_PGDN, LCTL(KC_RIGHT), KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_TRNS, KC_TRNS \ KC_TRNS, KC_TRNS \
) )
@ -31,8 +33,8 @@
LC_OFF, LC_ORN, LC_OFF, LC_OFF, LC_RED, LC_OFF, \ LC_OFF, LC_ORN, LC_OFF, LC_OFF, LC_RED, LC_OFF, \
LC_OFF, LC_OFF, \ LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \ LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \ LC_OFF, LC_OFF, LC_OFF, LC_ORN, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \ LC_OFF, LC_OFF, LC_GRN, LC_ORN, LC_GRN, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \ LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF \ LC_OFF, LC_OFF \
} }

View File

@ -11,8 +11,8 @@
#define BETA_LAYER_CONTEXT_DATA LAYOUT_voyager(\ #define BETA_LAYER_CONTEXT_DATA LAYOUT_voyager(\
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, LGUI(KC_A), LGUI(KC_S), LGUI(KC_D), KC_TRNS, KC_TRNS,\
KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_V, KC_TRNS,\ KC_NO, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), KC_TRNS,\
KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, \
\ \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\

View File

@ -0,0 +1,47 @@
// See symbols.h for docs
#define BETA_LAYER_MAGIC_MACRO BETA_LAYER(GAME)
#ifdef BETA_LAYER_LAYOUTS
#define BETA_LAYER_CONTEXT_DATA LAYOUT_EN
BETA_LAYER_MAGIC_MACRO
#endif
#ifdef BETA_LAYER_KEYS
#define BETA_LAYER_CONTEXT_DATA LAYOUT_voyager( \
KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, \
KC_DELETE, KC_A, KC_S, KC_D, KC_F, KC_G, \
KC_LCTL, KC_Z, KC_X, KC_C, MO(LAYER_ARROWS), TD(TD_NOGAME), \
\
KC_SPACE, KC_BSPC, \
\
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO)
BETA_LAYER_MAGIC_MACRO
#endif
#ifdef BETA_LAYER_LEDS
#define BETA_LAYER_CONTEXT_DATA { \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_RED, \
LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF}
// This is important.
// The magic macro MUST be here, AFTER the RGBMatrix data.
BETA_LAYER_MAGIC_MACRO
#endif
#undef BETA_LAYER_CONTEXT_DATA
#undef BETA_LAYER_MAGIC_MACRO

View File

@ -3,26 +3,23 @@
// //
// Learned that the hard way. // Learned that the hard way.
// First layer will be "default" layer in QMK. // First layer will be "default" layer in QMK.
// Second will have index 1, etc. See layers.h // Second will have index 1, etc. See layers.h
// These MUST be first. // These MUST be first.
// (For example, LAYER_ARROWS overlays on top of LAYER_MAIN) // (For example, LAYER_ARROWS overlays on top of LAYER_MAIN)
#include "main.h" #include "main.h"
#include "game.h"
#include "ctrl.h" #include "ctrl.h"
#include "russian.h"
#include "numbers.h" // Must be under symbols and arrows #include "numbers.h" // Must be under symbols and arrows
// The order of the layers below doesn't matter, // The order of the layers below doesn't matter,
// since they avoid transparent keys. // since they avoid transparent keys.
#include "symbols.h" #include "symbols.h"
#include "arrows.h" #include "arrows.h"
#include "macros.h" #include "macros.h"
#include "fkeys.h" #include "fkeys.h"
#include "keyboard.h" #include "keyboard.h"

View File

@ -9,9 +9,9 @@
#ifdef BETA_LAYER_KEYS #ifdef BETA_LAYER_KEYS
#define BETA_LAYER_CONTEXT_DATA LAYOUT_voyager(\ #define BETA_LAYER_CONTEXT_DATA LAYOUT_voyager(\
TO(LAYER_MAIN), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ TO(LAYER_MAIN), RGB_HUD, RGB_HUI, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, RGB_SAD, RGB_SAI, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, RGB_VAD, RGB_VAI, KC_NO, KC_NO, KC_NO, \
RGB_MOD, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, \ RGB_MOD, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, \ KC_NO, KC_NO, \
\ \

View File

@ -3,46 +3,42 @@
#define BETA_LAYER_MAGIC_MACRO BETA_LAYER(MACROS) #define BETA_LAYER_MAGIC_MACRO BETA_LAYER(MACROS)
#ifdef BETA_LAYER_LAYOUTS #ifdef BETA_LAYER_LAYOUTS
#define BETA_LAYER_CONTEXT_DATA LAYOUT_EN #define BETA_LAYER_CONTEXT_DATA LAYOUT_EN
BETA_LAYER_MAGIC_MACRO BETA_LAYER_MAGIC_MACRO
#endif #endif
#ifdef BETA_LAYER_KEYS #ifdef BETA_LAYER_KEYS
#define BETA_LAYER_CONTEXT_DATA LAYOUT_voyager(\ #define BETA_LAYER_CONTEXT_DATA LAYOUT_voyager( \
TO(LAYER_MAIN), LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5),\ TO(LAYER_MAIN), LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), \
KC_LGUI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\ KC_LGUI, KC_NO, TD(TD_SCREENSHOT), KC_NO, KC_NO, LGUI(KC_T), \
KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_NO, KC_NO, OSL(LAYER_FKEYS), KC_NO,\ KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_NO, KC_NO, OSL(LAYER_FKEYS), KC_NO, \
KC_NO, KC_MEDIA_PREV_TRACK, KC_NO, LGUI(LSFT(KC_C)), KC_NO, KC_NO,\ KC_NO, KC_MEDIA_PREV_TRACK, KC_NO, LGUI(KC_W), KC_NO, TO(LAYER_GAME), \
LGUI(KC_ENTER), LGUI(KC_BSLS), \ LGUI(KC_ENTER), LGUI(KC_BSLS), \
\ \
M_SHUTDOWN, KC_NO, KC_NO, KC_NO, KC_NO, LCTL(LGUI(LSFT(KC_R))), \ M_SHUTDOWN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, KC_NO, KC_NO, KC_NO, LGUI(KC_SPACE), TD(TD_WMLAYOUT), \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TT(LAYER_RUSSIAN), \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ LCTL(LGUI(LSFT(KC_R))), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO \ KC_NO, KC_NO)
)
BETA_LAYER_MAGIC_MACRO BETA_LAYER_MAGIC_MACRO
#endif #endif
#ifdef BETA_LAYER_LEDS #ifdef BETA_LAYER_LEDS
#define BETA_LAYER_CONTEXT_DATA {\ #define BETA_LAYER_CONTEXT_DATA { \
LC_RED, LC_PNK, LC_PNK, LC_PNK, LC_PNK, LC_PNK, \ LC_RED, LC_PNK, LC_PNK, LC_PNK, LC_PNK, LC_PNK, \
LC_CYN, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \ LC_CYN, LC_OFF, LC_CYN, LC_OFF, LC_OFF, LC_OFF, \
LC_GRN, LC_GRN, LC_OFF, LC_OFF, LC_BLU, LC_OFF, \ LC_GRN, LC_GRN, LC_OFF, LC_OFF, LC_BLU, LC_OFF, \
LC_OFF, LC_GRN, LC_OFF, LC_ORN, LC_OFF, LC_OFF, \ LC_OFF, LC_GRN, LC_OFF, LC_ORN, LC_OFF, LC_RED, \
LC_PNK, LC_PNK, \ LC_PNK, LC_PNK, \
LC_RED, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_ORN, \ LC_RED, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \ LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_RED, LC_RED, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \ LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_BLU, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \ LC_ORN, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_OFF, LC_OFF \ LC_OFF, LC_OFF}
}
BETA_LAYER_MAGIC_MACRO BETA_LAYER_MAGIC_MACRO
#endif #endif
#undef BETA_LAYER_CONTEXT_DATA #undef BETA_LAYER_CONTEXT_DATA
#undef BETA_LAYER_MAGIC_MACRO #undef BETA_LAYER_MAGIC_MACRO

View File

@ -8,9 +8,7 @@
#endif #endif
// TODO: // TODO:
// screenshot keys
// russian // russian
// keyboard led controls
// spellcheck // spellcheck
// shared features // shared features
@ -19,12 +17,12 @@
KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, \ KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, \
OSL(LAYER_MACROS), KC_Q, KC_W, KC_E, KC_R, KC_T, \ OSL(LAYER_MACROS), KC_Q, KC_W, KC_E, KC_R, KC_T, \
KC_DELETE, MT(MOD_LALT, KC_A), KC_S, KC_D, KC_F, KC_G, \ KC_DELETE, MT(MOD_LALT, KC_A), KC_S, KC_D, KC_F, KC_G, \
LM(MOD_LCTL, LAYER_CTRL), KC_Z, MT(MOD_LSFT, KC_X), KC_C, MO(LAYER_ARROWS), KC_B, \ MO(LAYER_CTRL), KC_Z, MT(MOD_LSFT, KC_X), KC_C, MO(LAYER_ARROWS), KC_B, \
\ \
KC_SPACE, KC_BSPC, \ KC_SPACE, KC_BSPC, \
\ \
\ \
KC_6, KC_7, KC_8, KC_9, KC_0, LGUI(KC_TAB), \ KC_6, KC_7, KC_8, KC_9, KC_0, LGUI(KC_SPACE), \
KC_Y, KC_U, KC_I, KC_O, KC_NO, KC_NO, \ KC_Y, KC_U, KC_I, KC_O, KC_NO, KC_NO, \
KC_H, KC_J, KC_K, MO(LAYER_SYMBOLS), KC_L, QK_LEAD, \ KC_H, KC_J, KC_K, MO(LAYER_SYMBOLS), KC_L, QK_LEAD, \
KC_N, KC_M, KC_P, KC_V, KC_NO, KC_NO, \ KC_N, KC_M, KC_P, KC_V, KC_NO, KC_NO, \

View File

@ -0,0 +1,47 @@
// See symbols.h for docs
#define BETA_LAYER_MAGIC_MACRO BETA_LAYER(RUSSIAN)
#ifdef BETA_LAYER_LAYOUTS
#define BETA_LAYER_CONTEXT_DATA LAYOUT_EN
BETA_LAYER_MAGIC_MACRO
#endif
#ifdef BETA_LAYER_KEYS
#define BETA_LAYER_CONTEXT_DATA LAYOUT_voyager(\
KC_ESCAPE, RU_1, RU_2, RU_3, RU_4, RU_5, \
OSL(LAYER_MACROS), RU_CHE, RU_SHA, RU_IE, RU_ER, RU_TE, \
KC_DELETE, MT(MOD_LALT, RU_A), RU_ES, RU_DE, RU_EF, RU_GHE, \
LM(MOD_LCTL, LAYER_CTRL), RU_ZE, MT(MOD_LSFT, RU_YA), RU_TSE, MO(LAYER_ARROWS), RU_BE, \
KC_SPACE, KC_BSPC, \
\
RU_6, RU_7, RU_8, RU_9, RU_0, LGUI(KC_TAB), \
RU_U, RU_YU, RU_I, RU_O, RU_SHCH, RU_HARD, \
RU_HA, RU_ZHE, RU_KA, MO(LAYER_SYMBOLS), RU_EL, RU_SOFT, \
RU_EN, RU_EM, RU_PE, RU_VE, RU_YERU, RU_SHTI, \
KC_RSFT, KC_ENTER \
)
BETA_LAYER_MAGIC_MACRO
#endif
#ifdef BETA_LAYER_LEDS
#define BETA_LAYER_CONTEXT_DATA {\
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_RUB, LC_RUB, LC_RUB, LC_RUB, LC_RUB, LC_RUB, \
LC_RUG, LC_RUG, LC_RUG, LC_RUG, LC_RUG, LC_RUG, \
LC_RUK, LC_RUK, LC_RUK, LC_RUK, LC_RUK, LC_RUK, \
LC_OFF, LC_OFF, \
LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, LC_OFF, \
LC_RUB, LC_RUB, LC_RUB, LC_RUB, LC_RUB, LC_RUB, \
LC_RUG, LC_RUG, LC_RUG, LC_RUG, LC_RUG, LC_RUG, \
LC_RUK, LC_RUK, LC_RUK, LC_RUK, LC_RUK, LC_RUK, \
LC_OFF, LC_OFF \
}
BETA_LAYER_MAGIC_MACRO
#endif
#undef BETA_LAYER_CONTEXT_DATA
#undef BETA_LAYER_MAGIC_MACRO

View File

@ -1,5 +1,5 @@
//#include "extra_mappings.h" //#include "extra_mappings.h"
#define LAYER_INCLUDE_FILE "definitions/layers.inc" #define LAYER_INCLUDE_FILE "definitions/include.c"
/* /*
@ -55,6 +55,7 @@ const uint8_t PROGMEM ledmaps[][RGB_MATRIX_LED_COUNT][3] = {
#undef BETA_LAYER #undef BETA_LAYER
#undef BETA_LAYER_LEDS #undef BETA_LAYER_LEDS
/* /*
// Create os layout array // Create os layout array
#define BETA_LAYER_LAYOUTS #define BETA_LAYER_LAYOUTS
@ -118,8 +119,15 @@ bool rgb_matrix_indicators_user(void) {
if (biton32(layer_state) == LAYER_KEYBOARD) { if (biton32(layer_state) == LAYER_KEYBOARD) {
rgb_matrix_set_color(0, 0xFF, 0x00, 0x00); rgb_matrix_set_color(0, 0xFF, 0x00, 0x00);
rgb_matrix_set_color(18, 0x00, 0xFF, 0x00); rgb_matrix_set_color(18, 0x95, 0xFF, 0x00);
rgb_matrix_set_color(19, 0x00, 0xFF, 0x00); rgb_matrix_set_color(19, 0x95, 0xFF, 0x00);
rgb_matrix_set_color(14, 0x00, 0xFF, 0x8C);
rgb_matrix_set_color(13, 0x00, 0xFF, 0x8C);
rgb_matrix_set_color(8, 0x00, 0xFF, 0x8C);
rgb_matrix_set_color(7, 0x00, 0xFF, 0x8C);
rgb_matrix_set_color(2, 0x00, 0xFF, 0x8C);
rgb_matrix_set_color(1, 0x00, 0xFF, 0x8C);
} }
return true; return true;

View File

@ -1,31 +1,51 @@
void td_screenshot(tap_dance_state_t *state, void *user_data) { void td_screenshot(tap_dance_state_t *state, void *user_data)
if (state->count == 1) { {
if (state->count == 1)
{
tap_code16(KC_PSCR); tap_code16(KC_PSCR);
} else if (state->count == 2) { }
else if (state->count == 2)
{
tap_code16(LSFT(KC_PSCR)); tap_code16(LSFT(KC_PSCR));
} else if (state->count == 3) { }
else if (state->count == 3)
{
tap_code16(LALT(KC_PSCR)); tap_code16(LALT(KC_PSCR));
} else { }
else
{
reset_tap_dance(state); reset_tap_dance(state);
} }
} }
void td_ocr(tap_dance_state_t *state, void *user_data) { void td_wmlayout(tap_dance_state_t *state, void *user_data)
if (state->count == 1) { {
tap_code16(LCTL(KC_PSCR)); if (state->count == 1)
} else if (state->count == 2) { {
tap_code16(LCTL(LSFT(KC_PSCR)));
} else {
reset_tap_dance(state);
}
}
void td_wmlayout(tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
tap_code16(LGUI(KC_COMMA)); tap_code16(LGUI(KC_COMMA));
} else if (state->count == 2) { }
else if (state->count == 2)
{
tap_code16(LGUI(KC_DOT)); tap_code16(LGUI(KC_DOT));
} else { }
else
{
reset_tap_dance(state);
}
}
void td_nogame(tap_dance_state_t *state, void *user_data)
{
if (state->count == 1)
{
tap_code16(KC_B);
}
else if (state->count == 2)
{
layer_move(LAYER_MAIN);
}
else
{
reset_tap_dance(state); reset_tap_dance(state);
} }
} }
@ -33,5 +53,5 @@ void td_wmlayout(tap_dance_state_t *state, void *user_data) {
tap_dance_action_t tap_dance_actions[] = { tap_dance_action_t tap_dance_actions[] = {
[TD_WMLAYOUT] = ACTION_TAP_DANCE_FN(td_wmlayout), [TD_WMLAYOUT] = ACTION_TAP_DANCE_FN(td_wmlayout),
[TD_SCREENSHOT] = ACTION_TAP_DANCE_FN(td_screenshot), [TD_SCREENSHOT] = ACTION_TAP_DANCE_FN(td_screenshot),
[TD_OCR] = ACTION_TAP_DANCE_FN(td_ocr), [TD_NOGAME] = ACTION_TAP_DANCE_FN(td_nogame),
}; };

View File

@ -1,3 +1,3 @@
# rules.mk overrides # rules.mk overrides
TAP_DANCE_ENABLE = no TAP_DANCE_ENABLE = yes