Update qmk, navigator
This commit is contained in:
282
keyboards/zsa/voyager/keymaps/betalupi/keymap.c
Normal file
282
keyboards/zsa/voyager/keymaps/betalupi/keymap.c
Normal file
@ -0,0 +1,282 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "version.h"
|
||||
#include "keymap_russian.h"
|
||||
#include "keymap_us_international.h"
|
||||
|
||||
// Values that should not be saved to git.
|
||||
// There should be a`secrets.h` in this directory
|
||||
// with the following contents:
|
||||
//
|
||||
// #define SECRET_EMAIL "value"
|
||||
// #define SECRET_GMAIL "value"
|
||||
// #define SECRET_SCHOOL_EMAIL "value"
|
||||
#include "secrets.h"
|
||||
|
||||
// Macro keycodes
|
||||
enum custom_keycodes
|
||||
{
|
||||
M_SHUTDOWN = ZSA_SAFE_RANGE,
|
||||
|
||||
// Macros
|
||||
M_RESETWM,
|
||||
M_RU_CTRL,
|
||||
M_RU_ALT,
|
||||
M_GUI,
|
||||
|
||||
// Special characters.
|
||||
// M_SPECIAL_TOP and M_SPECIAL_BOTTOM are
|
||||
// bounds used to parse these. Only special
|
||||
// characters should be between them.
|
||||
//
|
||||
// Сharacters here should be in the same
|
||||
// order as they are in the host inteface.
|
||||
M_SPECIAL_TOP,
|
||||
M_SC_GRAVE,
|
||||
M_SC_TILD,
|
||||
M_SC_QUOT,
|
||||
M_SC_LBR,
|
||||
M_SC_RBR,
|
||||
M_SC_LCBR,
|
||||
M_SC_RCBR,
|
||||
M_SC_LKVCH,
|
||||
M_SC_RKVCH,
|
||||
M_SPECIAL_BOTTOM,
|
||||
|
||||
DRAG_SCROLL,
|
||||
NAVIGATOR_TURBO,
|
||||
NAVIGATOR_AIM
|
||||
};
|
||||
|
||||
// LED colors
|
||||
#define LC_OFF {0, 0, 0}
|
||||
#define LC_GRN {85, 203, 158}
|
||||
#define LC_YLW {32, 176, 255}
|
||||
#define LC_PNK {243, 222, 234}
|
||||
#define LC_CYN {134, 255, 213}
|
||||
#define LC_ORN {14, 255, 255}
|
||||
#define LC_WHT {0, 0, 150}
|
||||
#define LC_RED {0, 255, 145}
|
||||
#define LC_BLU {153, 255, 153}
|
||||
|
||||
#define LC_RUB {0, 0, 165}
|
||||
#define LC_RUG {153, 255, 153}
|
||||
#define LC_RUK {0, 255, 145}
|
||||
|
||||
#ifdef ENABLE_HID_SPELLCHECK
|
||||
#include "features/hid_spellcheck.h"
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_AUTOCORRECT
|
||||
#include "features/autocorrect/autocorrect.h"
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_BETA_LEADER
|
||||
#include "features/leader/beta_leader.h"
|
||||
#endif
|
||||
|
||||
// #include "features/beta_rawhid.h"
|
||||
|
||||
/*
|
||||
// Send a special character.
|
||||
// Returns false if character was caught, true otherwise.
|
||||
bool send_special_character(uint16_t keycode) {
|
||||
if ( (keycode > M_SPECIAL_TOP) && (keycode < M_SPECIAL_BOTTOM) ) {
|
||||
hid_send_special_char(keycode - M_SPECIAL_TOP - 1);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}*/
|
||||
|
||||
extern bool set_scrolling;
|
||||
extern bool navigator_turbo;
|
||||
extern bool navigator_aim;
|
||||
|
||||
const uint16_t PROGMEM combo2[] = {KC_D, KC_F, 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(combo2, KC_TAB),
|
||||
COMBO(combo3, KC_RIGHT),
|
||||
COMBO(combo4, RU_YO),
|
||||
COMBO(combo5, RU_E),
|
||||
COMBO(combo6, LCTL(KC_DELETE)),
|
||||
};
|
||||
|
||||
void matrix_scan_user(void)
|
||||
{
|
||||
#ifdef ENABLE_BETA_LEADER
|
||||
beta_qk_leader_check();
|
||||
#endif
|
||||
}
|
||||
|
||||
// Must be done early, layers need this enum
|
||||
enum tap_dance_codes
|
||||
{
|
||||
TD_WMLAYOUT,
|
||||
TD_SCREENSHOT,
|
||||
TD_ESCAPE,
|
||||
TD_NOGAME
|
||||
};
|
||||
|
||||
void pointing_device_init_user(void)
|
||||
{
|
||||
// set_auto_mouse_layer(<mouse_layer>); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of <mouse_layer>
|
||||
set_auto_mouse_enable(true); // always required before the auto mouse feature will work
|
||||
}
|
||||
|
||||
// Include all other parts of configuration
|
||||
#include "layers/layers.c"
|
||||
#include "parts/leader.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.
|
||||
// Return FALSE to halt key processing,
|
||||
// Return TRUE to allow QMK to handle keypress.
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record)
|
||||
{
|
||||
|
||||
#ifdef ENABLE_BETA_LEADER
|
||||
if (!beta_process_leader(keycode, record))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_HID_SPELLCHECK
|
||||
if (!process_spellcheck(keycode, record))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_AUTOCORRECT
|
||||
if (!process_autocorrection(keycode, record))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Handle special chars
|
||||
// if (record->event.pressed) {
|
||||
// if (!send_special_character(keycode)) { return false; }
|
||||
//}
|
||||
|
||||
// Handle macros
|
||||
switch (keycode)
|
||||
{
|
||||
case M_RESETWM:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
SEND_STRING(SS_LCTL(SS_LGUI(SS_LSFT(SS_TAP(X_R)))));
|
||||
}
|
||||
return false;
|
||||
|
||||
// Workaround for one-shot LGUI key.
|
||||
// Using just LGUI with LAYER_DESKTOP as OSL
|
||||
// does not allow you to hold lgui. This does.
|
||||
case M_GUI:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
register_code16(KC_LGUI);
|
||||
}
|
||||
else
|
||||
{
|
||||
unregister_code16(KC_LGUI);
|
||||
}
|
||||
return false;
|
||||
|
||||
case M_SHUTDOWN:
|
||||
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));
|
||||
}
|
||||
return false;
|
||||
/*
|
||||
case M_RU_CTRL:
|
||||
if (record->event.pressed) {
|
||||
layer_move(LAYER_MAIN);
|
||||
register_code16(KC_LCTL);
|
||||
} else {
|
||||
unregister_code16(KC_LCTL);
|
||||
layer_move(LAYER_RUSSIAN);
|
||||
}
|
||||
return false;
|
||||
|
||||
case M_RU_ALT:
|
||||
if (record->event.pressed) {
|
||||
layer_move(LAYER_MAIN);
|
||||
register_code16(KC_LALT);
|
||||
} else {
|
||||
unregister_code16(KC_LALT);
|
||||
layer_move(LAYER_RUSSIAN);
|
||||
}
|
||||
return false;*/
|
||||
case DRAG_SCROLL:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
set_scrolling = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
set_scrolling = false;
|
||||
}
|
||||
return false;
|
||||
case NAVIGATOR_TURBO:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
navigator_turbo = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
navigator_turbo = false;
|
||||
}
|
||||
return false;
|
||||
case NAVIGATOR_AIM:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
navigator_aim = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
navigator_aim = false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
Reference in New Issue
Block a user