MacOS와 Windows에서 친밀하게 지내기 위해 설정된 도면층
13871 단어 ergodox
과제.
Cmdキー
윈도라면Winキー
Cmd
을 쓰기 위해 WindowsCtrl
를 사용하고 싶습니다. DF
나TO
면 된다. 이번에는 스피커 코드를 사용하는 방법방법
1. OS당 차등 레이어 만들기
MacOS용
,-------------. ,---------------.
|ctl F2| | |ctl sp| ctl F3 |
,------|------|------| |------+--------+------.
| | | | | | | |
| Space| LAlt |------| |------| | |
| Cmd | | LCtrl| | | | |
`--------------------' `----------------------'
Windows ,-------------. ,-------------.
|Alt F4| | | | |
,------|------|------| |------+------+------.
| | | | | | | |
| Space| LAlt |------| |------| | |
| LCtrl| | Win | | | | |
`--------------------' `--------------------'
예를 들어 이번 운영체제를 통해 변경하고 싶은 부분의 도면층만 준비해 맥에 있을 때Cmd
, 윈도에 있을 때Ctrl
설정을 바꾸자는 취지다.2. 케이크 코드 만들기
레이어 전환 키를 설정합니다.
keymap.c
enum custom_keycodes {
//--layers--
// layouts
QWERTY = SAFE_RANGE,
QWDR,
GAME,
// momentary layer
NAV,
CONF,
GAME2,
// os
MAC,
WIN,
};
최근ErgoDox의 기본 버튼 차트에도 추가됐지만, 스피커 키 코드를 설정해 사용했다.enum의 시작 줄에 지정된 SAFE_RANGE
은 키 코드 정의 이기 때문에 사용 후의 키 코드는 사용자 정의 전용 입력을 할 수 있습니다.※ 단, 이 키 코드의 주의점은 일반 키
0x0000-0x00FF
의 범위에 있지 않으므로CTL_T(keycode)
등의 동작 설정은 직접 사용할 수 없습니다.3. 레이어에 캐스터보드 키 코드 지정
keymap.c
RESET, MAC, WIN, _______, _______, _______, _______,
_______, _______, _______, _______, _______, QWERTY, _______,
_______, _______, _______, _______, _______, QWDR, _______,
_______, _______, _______, _______, GAME, _______,
마음에 드는 곳에 두세요.자신의 상황에서 시스템의 입력을 설정하는 것은 2층 구조로 층으로 이동한 후의 구조용 층에 분배된다.
4. 사용자 정의 키 입력 프로세서
스피커 키 코드의 입력을 어디서 처리하는지 말하면
process_record_user
.keymap.c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
//--layers--
//os
case MAC:
if (record->event.pressed) {
persistant_default_layer_set(1UL<<L_MAC);
}
return false;
break;
case WIN:
if (record->event.pressed) {
persistant_default_layer_set(1UL<<L_WIN);
}
return false;
break
//layout
case QWERTY:
if (record->event.pressed) {
layer_move(L_QWERTY);
}
return false;
break;
case QWDR:
if (record->event.pressed) {
layer_move(L_QWDR);
}
return false;
break;
case GAME:
if (record->event.pressed) {
layer_move(L_GAME);
}
return false;
break;
//momentary layer
case GAME2:
switch_layer(L_GAME2, record->event.pressed);
return false;
break;
case NAV:
switch_layer(L_NAV, record->event.pressed);
return false;
break;
case CONF:
switch_layer(L_CONF, record->event.pressed);
return false;
break;
}
return true;
}
소스 전체 텍스트 이곳에서 하는 것은 주로 세 가지가 있다.
도면층공식 문서에 대해 설명했습니다.
keymap.md
Overlay feature layer
--------------------- bit|status
____________ ---+------
31 / / 31 | 0
30 /___________// -----> 30 | 1
29 /___________/ -----> 29 | 1
: : | :
: ____________ : | :
2 / / 2 | 0
,->1 /___________/ -----> 1 | 1
| 0 0 | 0
| +
`--- default_layer = 1 |
layer_state = 0x60000002 <-'
도면층 설정은 32비트의 정보로 관리되며 각 층은 켜지고 닫힌 상태이며 좋아하는 도면층을 유효하게 설정하여 위층부터 중첩할 수 있다.이번에는 default OS용 레이어입니다.layer로 지정하고 텍스트 배열의 레이어를 layer로 설정합니다move에서 배타적으로 선택하여 각각 OS와 텍스트 배열층을 선택하여 곱한다.
도면층 설정을 변경하는 동작은 이 일대에 정의되어 있습니다.
6. 초기 도면층 설정
keymap.c
void matrix_init_user(void) {
persistant_default_layer_set(1UL<<L_MAC);
layer_move(L_QWDR);
};
키보드 연결 시 호출 matrix_init_user
되며, 여기에서 임의의 초기 도층을 설정할 수 있습니다.7. 요약
처음에도 썼는데 층만 바꾸면
DF
또는TO
이면 돼요.다만, 캐스터네츠 키코드를 사용했다면 다른 처리도 다양하게 할 수 있어 총결산했다.기타: 레이어 변경 방지 수정자 키 스태킹
도면층 설정과 다르니 겸사겸사 쓰세요.
레이어 전환 및 코스메틱 키를 사용하면 유지를 복원할 수 없는 경우가 있으며 코스메틱 키 입력이 스택됩니다.
스택 예
이렇게 되면 Shift 키가 해제되지 않고 계속 누르는 상태가 됩니다.왜 그렇게 말했을까, 층 1에서 헤어질 때 시프트가 아닌 A버튼이 풀리기 때문에 해제되지 않는다.
해결책
이거
config.h
에 있어요.#define PREVENT_STUCK_MODIFIERS
이런 옵션은 방지할 수 있다.이 방면아까 readme.에는 쓰여 있지만 최근 비대해졌다doc와 Wiki가 재정리된 것 같다여기.에 이동이 기록되어 있다.
Reference
이 문제에 관하여(MacOS와 Windows에서 친밀하게 지내기 위해 설정된 도면층), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/miyaoka/items/f126aa5d9d8151468afc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)