OS에서 실행되는 현재 활성 앱을 확인하고 몇 가지 사용자 정의 가능한 규칙을 구문 분석하고 대상 레이어 인덱스를 RAW HID를 통해 QMK 키보드로 보냅니다. 따라서 레이어를 프로그래밍 방식으로 변경할 수 있습니다.
My Z12 Micropad는 Vim, 브라우저, Figma 및 Default의 4 개의 레이어를 사용합니다. 인코더는 각 층마다 다른 일을합니다. Figma에서 작업 할 때 오른쪽 인코더를 사용하여 확대하고 싶었지만 기본 레이어가 활성화 된 경우 인코더가 대신 스크롤됩니다. 이 스크립트는 이러한 종류의 문제를 해결하고 OSX에서 실행되는 기본 앱에 따라 레이어를 자동으로 변경하여 레이어를 직접 전환 해야하는 것을 잊어 버립니다.
첫 번째 요구 사항은 QMK를 실행하는 키보드이며 RAW HID를 사용하도록 구성합니다. 아래 섹션의 예를 참조하십시오.
이 노드 스크립트에는 노드-히드, JSON 기반 조건 및 룰 레즈-로그--불법화기 및 Active-Win-Cli의 세 가지 종속성이있는 노드가 필요합니다. Node가 이미 설치되어 있으므로 Package.json에서 종속성을 설치하기 만하면됩니다.
$ npm install
스크립트는 2 초마다 active-win-cli 의 앱 및 제목 옵션을 확인하고 node-hid 의 write 메소드를 사용하여 앱에 따라 타겟팅하려는 레이어의 인덱스를 마이크로 패드로 전송합니다.
전송 할 인덱스를 결정하려면 간단한 JSON 파일을 사용하여 완전히 구성 할 수있는 일련의 조건 및 규칙을 구문 분석해야합니다. 이를 통해 여러 스크립트를 사용하여 동시에 여러 QMK 장치를 타겟팅 할 수 있습니다.
JSON 파일은 제품 이름, 초기화를위한 타이머 값, 연결이 끊김 및 러너의 경우 Relink를 포함하는 객체입니다 (현재 앱 데이터를 얼마나 자주 확인하려는 지). 또한 조건과 규칙에 대한 두 가지 객체를 보유하고 있습니다.
Conditons는 규칙에 의해 구문 분석 할 조건 당 하나의 객체를 포함하는 객체입니다.
Conditons 객체 구조에 대한 문서를 따르거나/또는 사용의 예를 참조하십시오.
규칙은 조건 세트 당 하나의 객체를 포함하는 배열입니다.
규칙 객체 구조에 대한 문서를 따르거나/또는 사용의 예,이 repo에 사용 된 config.json조차 참조하십시오.
QMK 측에서는 규칙 .mk 파일에 RAW_ENABLE = yes 추가해야합니다. 노드 스크립트의 write 호출은 qmk에서 raw_hid_receive 메소드를 트리거하며, 여기서 layer_clear(); 이전 통화를 정리하려면 layer_on(data[0]) 통해 스트림을 통해 전송 된 레이어로 변경하십시오.
참고 : 기본 계층 (0 raw_hid_receive layer_on(data[0]) 복원하려면 99 0 있습니다.
keymap.c의 코드 예제 :
#include "raw_hid.h"
#ifdef RAW_ENABLE
void raw_hid_receive ( uint8_t * data , uint8_t length ) {
layer_clear ();
if ( data [ 0 ] == 99 ) {
layer_on ( _TERM );
}
else {
layer_on ( data [ 0 ]);
}
}
#endif 스크립트는 node-hid 사용하여 제어하려는 장치에 연결되어 있는지 확인합니다 (제품 이름 만 전달,이 경우 z12 및 기본 UsagePage 및 사용 값). 연결이 확립되기를 기다립니다 (2 초마다 다시 시작). 단절 후 다시 연결됩니다.
$ node index.js
Default JSON 파일은 config.json 이지만 다른 하나를 사용하고 메인 호출에 인수로 이름을 추가 할 수 있습니다.
$ node index.js otherfile.json
또한 Cron 작업에서 호출 할 수 있습니다.
MACOS에서 터미널 스크린 레코드 링 스토먼트를 제공해야합니다. 그렇지 않으면 Active-Win은 항상 제목의 빈 문자열입니다.
Node-Hid 연결, uint8_t* data 포인터 및 레이어를 프로그래밍 방식으로 변경하는 방법 및 방법을 이해하는 데 도움이되는 뛰어난 active-win-cli , Fauxpark, Precondition 및 Riblee에 대한 Sindresorhus에게 큰 감사를드립니다. 모든 글로벌 DEP를 제거하고 Package.json으로 이동하도록 도와 주신 Ale Muñoz.