Skip to content
  • Published: 2024-09-02
  • Categories: Kkajeong
  • Tags: None

QMK는 트랙볼과 같은 Pointing Device는 "Automatic Mouse Layer"를 지원 합니다. 하지만 TrackPoint와 같은 PS/2 마우스에서는 해당 기능을 지원 하지 않습니다. 다만, PS/2 마우스에서는 "Movement Hook"을 통해서 사용자가 유사한 기능을 직접 구현할 수 있습니다.

keymap.c

#if MOUSE_LAYER_AUTO_ENABLE // 마우스 레이어를 지정 합니다. #define _MOUSE_LAYER 6

// 마우스 레이어 비활성 타이머 (1000 = 1s, 사용하면서 조정이 필요 합니다.)
#define MOUSE\_TIMEOUT 1000

static uint16\_t mouse\_timer = 0;
static bool mouse\_layer\_active = false;

void ps2_mouse_moved_user(report_mouse_t *mouse_report) { // 마우스 움직임 감지 시 레이어 활성화 if (!mouse_layer_active) { layer_on(_MOUSE_LAYER); mouse_layer_active = true; }

    // 타이머 리셋
    mouse\_timer = timer\_read();

} #endif

void matrix_scan_user(void) { // The very important timer. #if MOUSE_LAYER_AUTO_ENABLE // 마우스 비활성 시간 체크 if (mouse_layer_active && timer_elapsed(mouse_timer) > MOUSE_TIMEOUT) { layer_off(_MOUSE_LAYER); mouse_layer_active = false; } #endif }

config.h

// 활성 TRUE 비활성 FALSE #define MOUSE_LAYER_AUTO_ENABLE TRUE

사용 소감

트랙포인트 특성 상 타이핑을 하면서 건드릴 확률이 높습니다. 그래서 "Movement Hook"을 통해서 마우스 레이어를 자동으로 활성화 해 두었을 경우, 레이어가 자동으로 변경되어서 사용하기 의외로 불편했습니다.

기능은 구현 해 두었으니 누군가는 유용하게 사용 하시면 될 것 같습니다.

Last updated: