macroKey 사용 설명서

버튼 8 × 바인딩 가능한 제스처 2 = 16 슬롯. 펌웨어 0.9.4 · 설정 앱 0.15.0. 배선은 wiring.html을 보세요.

앱이 없어도 키패드는 동작합니다. 펌웨어만 올리면 평범한 USB HID 키보드/마우스이고, PC 앱은 키 편집·녹음·동기화할 때만 켭니다. 설정이 끝나면 꺼도 됩니다.

01시작하기

Pro Micro는 리셋 버튼이 없습니다. RSTGND를 빠르게 두 번 단락시켜 부트로더(8초)를 띄운 직후에 업로드하세요. 항상 compile --upload로 한 번에 올리세요(upload만 하면 예전 빌드가 올라갈 수 있습니다).

arduino-cli compile --upload --fqbn SparkFun:avr:promicro:cpu=16MHzatmega32U4 \
  -p /dev/ttyACM0 firmware

여기까지만 해도 키 8개가 Ctrl+Alt+Shift+1~8을 보냅니다. 앱은 선택입니다.

# 개발
python3 -m venv .venv && source .venv/bin/activate
python -m pip install -r requirements.txt
python main.py

# 배포용 단일 실행 파일 (Linux → releases/linux/macrokey)
./build_release.sh

일반 사용은 PyInstaller GUI 실행 파일만 있으면 됩니다. Wayland에서 녹음이 안 되면 첫 실행 안내에 따라 관리자 비밀번호로 input 권한을 한 번 허용하세요. 이 권한은 계정의 프로그램이 비밀번호를 포함한 모든 키보드·마우스 입력을 읽을 수 있으므로, macroKey는 빨간 녹화 표시가 켜진 동안에만 입력 장치를 엽니다. 포트가 안 보이면 sudo usermod -aG dialout $USER 후 재로그인.

02누르는 방식

제스처동작발화 시점주로 넣는 것
TAP짧게 눌렀다 뗌뗄 때 즉시기본 단축키
DOUBLE250 ms 안에 두 번두 번째 탭되돌리기 어려운 동작
HOLD3초 단독 유지3초 도달바인딩 불가 — 녹음 진입점

DOUBLE을 안 쓰는 키는 느려지지 않습니다. 해당 키의 DOUBLE 슬롯이 비어 있으면 TAP을 떼는 즉시 내보내고, 채워져 있을 때만 250 ms를 기다립니다. 자주 쓰는 키에는 DOUBLE을 비워 두세요.

HOLD에는 아무것도 바인딩할 수 없습니다. 키 하나를 단독으로 3초 누르는 것이 녹음을 여는 방법이기 때문입니다. 그래서 바인딩 가능한 슬롯은 키당 TAP · DOUBLE 두 개, 전부 16개입니다.

녹음은 패드에서 시작하고 끝냅니다. 키를 단독으로 3초 누르면 픽셀이 빨갛게 맥동하며 녹음이 시작되고, 같은 키를 다시 3초 누르면 저장됩니다. 탭한 뒤 곧바로 다시 눌러 3초 유지하면 DOUBLE 슬롯에 녹음되고 픽셀은 분홍입니다.

레이어와 코드(chord)는 제거되었습니다. 레이어는 보이지 않는 모드와 외워야 하는 진입 방법을 만들었고, 코드는 편집 수단이 없어 채울 방법이 없었습니다. 두 영역이 쓰던 EEPROM은 지금 매크로 레코드가 씁니다.

기본으로 들어 있는 것

키 · 제스처동작
1–8 TAPctrl+alt+shift+1 … 8
1–8 DOUBLE비어 있음 — 탭 후 250 ms 안에 다시 눌러 3초 홀드

미디어 키는 기본 빌드에서 나가지 않습니다. AVR 코어의 Keyboard에는 consumer page가 없어 펌웨어가 시리얼로 보고만 합니다. 쓰려면 arduino-cli lib install "HID-Project"Config.hMK_USE_HID_PROJECT1로 바꿔 다시 올리세요.

03키 설정하기

python main.py 또는 배포 바이너리로 편집기를 엽니다. 키 8행 × 제스처 2열 격자로 16슬롯이 화면에 있습니다. 칸을 클릭 → 단축키를 누르거나 녹음. 연결 시 장치 프로필과 다르면 Pull / Push / Cancel을 묻습니다. Cancel 뒤에는 Sync needed가 계속 보이고, 어느 쪽이 이길지 정할 때까지 로컬 편집이 패드를 덮어쓰지 않습니다.

Save·Write 버튼은 없습니다. 편집이나 녹음이 끝나면 그 자리에서 저장되고 키패드에 기록됩니다. 단, 프로필 충돌을 Cancel한 동안은 로컬에만 저장합니다. Profile 메뉴에서 가져오기·내보내기·직전 버전 복구를 할 수 있습니다.

ActionValue실행
key단축키 문자열장치ctrl+shift+p
consumer미디어 키 이름장치volume_up
mouse_buttonleft · right · middle장치middle
mouse_wheelup · down장치현재 포인터에서 스크롤
sequence매크로 슬롯장치녹음이 만듦
none비우기

호스트 전용 액션(클립보드·셸·daemon)은 없습니다. 장치에 안 들어가면 저장이 거절됩니다.

단축키 문법 — 수식키를 +로 잇고 마지막에 일반 키 하나. 순서 무관. ctrl(control) · alt(option) · shift · gui(win·cmd·super) · rctrl ralt rshift rgui(오른쪽).

미디어 키 이름volume_up volume_down mute play_pause stop next_track prev_track brightness_up brightness_down

04매크로 녹화

패드에서 직접 합니다. 키 하나를 단독으로 3초 누르면 녹음이 시작되고, 같은 키를 다시 3초 누르면 저장됩니다. 앱은 켜져 있어야 하지만(캡처는 PC가 합니다) 창을 볼 필요는 없습니다. 녹화 시작·종료 홀드는 그 키의 기본 바인딩을 실행하지 않습니다.

동작들어가는 슬롯픽셀
홀드 3초TAP빨강 맥동
탭 → 250 ms 안에 다시 눌러 홀드 3초DOUBLE분홍 맥동
저장 성공초록 플래시
저장 실패·빈 캡처빨강 플래시

캡처된 스텝은 창에 목록으로 뜨고 ~/.config/macrokey/macrokey.log에도 남습니다. 앱이 자동으로 정리합니다: 수식키 접기 · 지연 양자화 · 연속 문자 병합 · 패드 자신 HID 제외 · 비밀번호로 보이는 구간 제거.

재생은 녹음보다 빠릅니다. 연속 타자는 text로 합쳐지고 패드의 Typing(글자당 ms) 속도로 칩니다. 값은 프로필에 저장되므로 앱을 꺼도 패드가 그 속도로 재생합니다.

마우스는 기본적으로 현재 포인터 기준으로 재생합니다. 단순 클릭·휠은 현재 위치에서, 이동·드래그는 현재 위치로부터 상대적으로 실행됩니다. 화면의 같은 좌표가 필요할 때만 실험 기능인 Fixed screen을 켜세요. 이 모드는 녹음과 재생 전에 패드 USB 마우스로 좌상단에 홈하지만, 모니터 배치·해상도·배율·포인터 속도/가속·창 위치가 같아야 합니다. 긴 이동은 짧은 시간 조각으로 저장해 가속 오차를 줄이지만 절대 좌표 HID는 아닙니다. 위험한 버튼을 누르는 고정 위치 매크로는 안전한 대상에서 먼저 시험하세요.

05설정 후 앱 종료

패드는 USB HID로 혼자 동작합니다. PC 앱은 편집·녹음·동기화용이며 끝나면 꺼도 됩니다.

06개발용 CLI

배포 바이너리는 GUI만 포함합니다. 소스 트리에서는:

명령하는 일
python main.py편집기 (권장)
python -m macrokey ports시리얼 포트 목록
python -m macrokey info장치 정보 · 동기화 여부
python -m macrokey push / pull프로필 쓰기 · 읽기
python -m macrokey monitor이벤트 실시간 출력
python -m macrokey record --key NCLI 녹음

07LED

상황픽셀
키 탭흰색 짧은 플래시
빈 슬롯어두운 빨강
녹음 중 (TAP / DOUBLE)빨강 / 분홍 맥동
매크로(시퀀스) 실행 중시안 펄스
매크로 완료 · 저장 성공초록 플래시
앱 없음 / 녹음 거절주황 또는 빨강 플래시

밝기는 툴바 슬라이더(0–255). AgentPet 상시 LED 연동은 제거되었습니다.

08파일 위치

플랫폼경로
Linux~/.config/macrokey/
macOS~/Library/Application Support/MaduinosMacroKey/
Windows%APPDATA%\MaduinosMacroKey\

profile.json(키맵 · 장치 매크로 · LED 색)과 settings.json. 저장할 때마다 직전 프로필을 권한 0600의 profile.json.bak로 남깁니다. 편집기의 Profile → Restore previous version으로 복구하거나, 장치 EEPROM에서 python -m macrokey pull --save로 되찾을 수 있습니다.

09지금은 안 되는 것

기능현재 상태
호스트 액션 · 셸 · 클립보드 이미지제거됨. 장치 HID만
미디어 키 (consumer)MK_USE_HID_PROJECT=1로 다시 빌드해야 동작
마우스 이동 · 드래그녹음으로만. 클릭·휠은 편집기에서 직접 지정 가능
절대 좌표 마우스상대 마우스만. 선택형 좌상단 홈은 실험 기능
PC 단축키로 매크로 실행트리거는 패드뿐