QMK의 슬레이브 쪽에도 프로세스가 있어요.record 켜기()
process_record_user()
등 함수는 보통 마스터 측에서만 실행된다.보통 이래도 문제없지만 슬레이브 측도 OLED에서 버튼 이벤트와 관련된 표시를 하려고 하는 상황에서 곤란하다.투덜거려도 좋은 정보를 얻지 못하기 때문에 소스를 쫓아다니며 조사했다.
선결
정의
SPLIT_TRANSPORT_MIRROR
override
should_process_keypress()
및 반환true
#define SPLIT_TRANSPORT_MIRROR
bool should_process_keypress(void) { return true; }
should_process_keypress()
트레이스
process_record()
, 획득tmk_core/common/keyboard.c의 키보드task()로 점화, 이 조건으로 사용should_process_keypress()
.이 함수는 오버라이드도 할 수 있는데 댓글을 읽어보니 이번 용도였다.
/** \brief should_process_keypress
*
* Override this function if you have a condition where keypresses processing should change:
* - splits where the slave side needs to process for rgb/oled functionality
*/
__attribute__((weak)) bool should_process_keypress(void) { return is_keyboard_master();
기본적으로 위에서 말한 바와 같이 마스터만 사용하면 답장true
이 가능하기 때문에 자주 답장true
하면 이번 목적의 행동일 것이다.SPLIT_TRANSPORT_MIRROR
그리고 이것도 정의가 필요하다.
일반적으로 TRS 케이블을 통해 slave에서 마스터 방향으로matrix scan의 키를 누르는 상태만 보냅니다.slave 방면에서 양손의 움직임을 파악하기 위해서는 반향적인 정보 전달이 필요하다. 이를 실현하는 것이 이 옵션이다.
문헌에 따르면 마릭스 스칸의 연기에 다소 영향을 미친다고 쓰여 있지만 시도해 본 느낌, 특히 체감에는 영향을 미치지 않았다.응, 타자가 그렇게 빠르지 않아.
불순한 곳
이 두 동작은 거의 순조롭지만 슬레이브 측
read_layer_state()
의 결과는 이상하다.원래 도면층 키를 눌러도 반영되지 않고 다른 키에 반응한다.하지만 이번 개인의 목적을 달성했으니 깊이 따지지 말고 여기서 끝내자.
Reference
이 문제에 관하여(QMK의 슬레이브 쪽에도 프로세스가 있어요.record 켜기()), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/teppeis/articles/2021-05-qmk-fire-process-record-in-slave텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)