~ruther/qmk_firmware

d1819f02dfac40408ceb51a59c32eb8e898e8810 — Manna Harbour 5 years ago e1cdfdc
Fix sharing of mouse button state from mousekeys to ps2_mouse (#9124)

With this change, when ps2_mouse is disabled, mousekeys works as usual. With
ps2_mouse enabled, mousekeys button state is shared with ps2_mouse for clicking,
dragging, and scrolling, mousekeys clicks are produced by ps2_mouse only, and
mouskeys button state is transferred to mousekeys without generating clicks to
enable mousekeys dragging.

Co-authored-by: Drashna Jaelre <drashna@live.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
1 files changed, 8 insertions(+), 4 deletions(-)

M tmk_core/common/action.c
M tmk_core/common/action.c => tmk_core/common/action.c +8 -4
@@ 400,7 400,9 @@ void process_action(keyrecord_t *record, action_t action) {
        /* Mouse key */
        case ACT_MOUSEKEY:
            if (event.pressed) {
                mousekey_on(action.key.code);
                switch (action.key.code) {
#    ifdef PS2_MOUSE_ENABLE
                    case KC_MS_BTN1:
                        tp_buttons |= (1 << 0);
                        break;


@@ 410,13 412,15 @@ void process_action(keyrecord_t *record, action_t action) {
                    case KC_MS_BTN3:
                        tp_buttons |= (1 << 2);
                        break;
#    endif
                    default:
                        mousekey_send();
                        break;
                }
                mousekey_on(action.key.code);
                mousekey_send();
            } else {
                mousekey_off(action.key.code);
                switch (action.key.code) {
#    ifdef PS2_MOUSE_ENABLE
                    case KC_MS_BTN1:
                        tp_buttons &= ~(1 << 0);
                        break;


@@ 426,11 430,11 @@ void process_action(keyrecord_t *record, action_t action) {
                    case KC_MS_BTN3:
                        tp_buttons &= ~(1 << 2);
                        break;
#    endif
                    default:
                        mousekey_send();
                        break;
                }
                mousekey_off(action.key.code);
                mousekey_send();
            }
            break;
#endif