qmk/qmk_firmware

Shifted Macro [Bug]

Open

#16.940 aberto em 25 de abr. de 2022

Ver no GitHub
 (2 comments) (0 reactions) (0 assignees)C (43.867 forks)batch import
bughelp wanted

Métricas do repositório

Stars
 (20.368 stars)
Métricas de merge de PR
 (Mesclagem média 20d 9h) (27 fundiu PRs em 30d)

Description

Describe the Bug

everything is compiles and flashes just fine, but after pressing the button - some OS things happen (muting sound and volume up (f13 f14)) but with shift (regular kc in upper layer) it's ok

System Information

Keyboard: dz60

Operating system: Arch Linux Linux 5.17.4-arch1-1 KDE 5.93.0 / Plasma 5.24.4

qmk doctor output:

➜  ~ qmk doctor
Ψ QMK Doctor is checking your environment.
Ψ CLI version: 1.0.0
Ψ QMK home: /home/chibo/qmk_firmware
Ψ Detected Linux.
Ψ Git branch: master
Ψ Repo version: 0.16.9
⚠ Git has unstashed/uncommitted changes.
Ψ All dependencies are installed.
Ψ Found arm-none-eabi-gcc version 11.3.0
Ψ Found avr-gcc version 11.3.0
⚠ We do not recommend avr-gcc newer than 8. Downgrading to 8.x is recommended.
Ψ Found avrdude version 6.4
Ψ Found dfu-util version 0.11
Ψ Found dfu-programmer version 0.7.2
Ψ Submodules are up to date.
Ψ QMK is ready to go, but minor problems were found
➜  ~

Any keyboard related software installed? no

Additional Context

yeah code is tough, that was hard work, mostly of ridingqwerty (https://github.com/qmk/qmk_firmware/issues/7839)

i see some progress, so i revisit it later, but if you help me organize it more simple way (like [declaration, [lower, upper]] w/o that low-level parametric stuff tap_code16(alt_keymap[1][keycode - AKM_1_8]); - i would be much appreciated

enum custom_keycodes {
    RUS_LAT = SAFE_RANGE, M_ARROW_RETURN, M_ARROW_FUNC, M_ASSIGN,
    AKM_1_8, AKM_1_9, MY_F13, MY_F14, AKM_2_22, AKM_2_23, AKM_3_11, AKM_4_11, M_CYR_ER,
};
// enum shifted_keycodes {AKM_1_8, AKM_1_9, MY_F13, MY_F14, AKM_2_22, AKM_2_23, AKM_3_11, AKM_4_11, M_CYR_ER};


uint16_t alt_keymap[2][10] = {
// AKM_1_8   , AKM_1_9       , MY_F13      , MY_F14        , AKM_2_22   , AKM_2_23            , AKM_3_11 , AKM_4_11    , M_CYR_ER
{KC_ASTERISK , KC_LEFT_PAREN , M_ARROW_FUNC, M_ARROW_RETURN, KC_LBRACKET, KC_LEFT_CURLY_BRACE , KC_COLON , KC_SEMICOLON, KC_M       },
{KC_AMPERSAND, KC_RIGHT_PAREN, KC_BSLASH   , KC_PIPE       , KC_RBRACKET, KC_RIGHT_CURLY_BRACE, KC_SCOLON, KC_BACKSLASH, KC_RBRACKET}
};

uint16_t key_timer;
bool process_record_user(uint16_t keycode, keyrecord_t *record)
{
  switch (keycode)
  {
    case RUS_LAT:
        if (record->event.pressed)
            {
                key_timer = timer_read();
                register_mods(MOD_RALT);
            }
        else
            {
                unregister_mods(MOD_RALT);
                if (timer_elapsed(key_timer) < 500)
                    {
                    layer_invert(RUS);
                    tap_code16(C(G(KC_NO)));
                    }
            }
        return false;
        break;

    uint8_t mod_state = get_mods();
    case AKM_1_8 ... M_CYR_ER:
      if (record->event.pressed)
      {
        mod_state = get_mods() & MOD_MASK_SHIFT;
        clear_mods();
        if(mod_state)
        {
          tap_code16(alt_keymap[1][keycode - AKM_1_8]);
        }
        else
        {
          tap_code16(alt_keymap[0][keycode - AKM_1_8]);
        }
        set_mods(mod_state);
      }
      return false;

    case M_ARROW_FUNC:
        if (record->event.pressed) {
        SEND_STRING("=>");
        }
        break;

    case M_ARROW_RETURN:
        if (record->event.pressed) {
        SEND_STRING("->");
        }
        break;

    case M_ASSIGN:
        if (record->event.pressed) {
        SEND_STRING(":=");
        }
        break;

  }
  return true;
};

Guia do colaborador