Added russian control hack

master
Mark 2022-02-09 12:07:34 -08:00
parent 863b517059
commit b5eef54b2c
Signed by: Mark
GPG Key ID: AD62BB059C2AAEE4
4 changed files with 56 additions and 40 deletions

View File

@ -14,7 +14,9 @@ enum custom_keycodes {
ST_MACRO_1,
RU_LAYER,
EN_LAYER,
RU_SYMBOL,
M_RU_CTRL,
M_RU_ALT,
};
enum tap_dance_codes {
@ -78,14 +80,14 @@ const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = {
[LAYER_DESKTOP_LEDS_IDX] = LAYER_DESKTOP_LEDS
};
extern bool g_suspend_state;
extern rgb_config_t rgb_matrix_config;
int current_lang = LANG_EN;
void keyboard_post_init_user(void) {
rgb_matrix_enable();
//set_lang(LANG_EN);
}
int current_lang = 0;
void set_layer_color(int layer) {
@ -143,6 +145,27 @@ void rgb_matrix_indicators_user(void) {
}
}
void set_lang(int lang) { set_lang_long(lang, false); }
void set_lang_long(int lang, bool force) {
if (current_lang != lang || force) {
switch (lang) {
case LANG_EN:
SEND_STRING(SS_LGUI(SS_LSFT(SS_LCTL(SS_TAP(X_0)))));
current_lang = lang;
break;
case LANG_RU:
SEND_STRING(SS_LGUI(SS_LSFT(SS_LCTL(SS_TAP(X_9)))));
current_lang = lang;
break;
case LANG_NULL:
break;
default:
break;
}
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
@ -160,25 +183,32 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case RU_LAYER:
if (record->event.pressed) {
SEND_STRING(SS_LGUI(SS_LSFT(SS_LCTL(SS_TAP(X_9)))));
set_lang(LANG_RU);
layer_move(LAYER_RUSSIAN_IDX);
}
break;
case EN_LAYER:
if (record->event.pressed) {
SEND_STRING(SS_LGUI(SS_LSFT(SS_LCTL(SS_TAP(X_0)))));
set_lang(LANG_EN);
layer_move(LAYER_MAIN_IDX);
}
break;
case RU_SYMBOL:
case M_RU_CTRL:
if (record->event.pressed) {
SEND_STRING(SS_LGUI(SS_LSFT(SS_LCTL(SS_TAP(X_0)))));
layer_on(LAYER_SYMBOLS_IDX);
if (current_lang == LANG_RU) {
set_lang_long(LANG_EN, true);
layer_move(LAYER_MAIN_IDX);
current_lang = LANG_RU;
}
register_code16(KC_LCTRL);
} else {
SEND_STRING(SS_LGUI(SS_LSFT(SS_LCTL(SS_TAP(X_9)))));
layer_off(LAYER_SYMBOLS_IDX);
unregister_code16(KC_LCTRL);
if (current_lang == LANG_RU) {
layer_move(LAYER_RUSSIAN_IDX);
set_lang_long(LANG_RU, true);
}
}
break;
@ -213,27 +243,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
void set_lang(int lang) {
if (current_lang != lang) {
switch (lang) {
case LANG_EN:
SEND_STRING(SS_LGUI(SS_LSFT(SS_LCTL(SS_TAP(X_0)))));;
current_lang = lang;
break;
case LANG_RU:
SEND_STRING(SS_LGUI(SS_LSFT(SS_LCTL(SS_TAP(X_9)))));
current_lang = lang;
break;
case LANG_NULL:
break;
default:
break;
}
}
}
uint32_t layer_state_set_user(uint32_t state) {
uint8_t layer = biton32(state);

View File

@ -44,3 +44,10 @@
#define NO_BSLS_ALT KC_EQUAL
#define LSA_T(kc) MT(MOD_LSFT | MOD_LALT, kc)
#define BP_NDSH_MAC ALGR(KC_8)
extern int current_lang;
extern bool g_suspend_state;
extern rgb_config_t rgb_matrix_config;
void set_lang(int lang);
void set_lang_long(int lang, bool force);

View File

@ -5,7 +5,7 @@
KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, TG(LAYER_NUMPAD_IDX),\
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LGUI,\
KC_DELETE, KC_A, KC_S, KC_D, KC_F, KC_G,\
KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TRANSPARENT,\
M_RU_CTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TRANSPARENT,\
MO(LAYER_DESKTOP_IDX), OSL(LAYER_FKEYS_IDX), KC_LALT, KC_LSHIFT, MO(LAYER_ARROWS_IDX),\
\
KC_PSCREEN, LT(LAYER_KEYBOARD_IDX,KC_NO),\

View File

@ -5,22 +5,22 @@
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,\
KC_TRANSPARENT, RU_CHE, RU_SHA, RU_IE, RU_ER, RU_TE, RU_YO,\
KC_TRANSPARENT, RU_A, RU_ES, RU_DE, RU_EF, RU_GHE,\
KC_TRANSPARENT, RU_ZE, RU_YA, RU_TSE, RU_VE, RU_BE, RU_E,\
KC_TRANSPARENT, MO(LAYER_DESKTOP_IDX), KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,\
M_RU_CTRL, RU_ZE, RU_YA, RU_TSE, RU_VE, RU_BE, RU_E,\
KC_TRANSPARENT, KC_TRANSPARENT, KC_LALT, KC_TRANSPARENT, KC_TRANSPARENT,\
\
KC_TRANSPARENT, KC_TRANSPARENT,\
KC_TRANSPARENT,\
KC_TRANSPARENT, KC_TRANSPARENT,\
KC_TRANSPARENT,\
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,\
\
\
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, RU_NUM, RU_RUBL, KC_TRANSPARENT,\
RU_SOFT, RU_U, RU_YU, RU_I, RU_O, RU_SHCH, KC_TRANSPARENT,\
RU_HA, RU_ZHE, RU_KA, RU_SYMBOL, RU_EL, KC_TRANSPARENT,\
RU_HA, RU_ZHE, RU_KA, KC_TRANSPARENT, RU_EL, KC_TRANSPARENT,\
RU_HARD, RU_EN, RU_EM, RU_PE, RU_YERU, RU_SHTI, KC_TRANSPARENT,\
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,\
\
KC_TRANSPARENT, EN_LAYER,\
KC_TRANSPARENT,\
KC_NO, EN_LAYER,\
KC_NO,\
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT\
)