키보드 매핑:상어60과 K9 Pro

키보드가 자리를 많이 차지하는 것을 싫어해서 포커 배열을 쓰기 시작한 지 십수년 쯤 됐다. 로우 프로파일 키보드인 K9 Pro에 정착한 지도 몇 해가 지났다. 최근 블로그 정비하면서 더 빠른 문장부호 입력 방법을 궁리하던 중, 키 매핑을 손봐서 F13 ~ F24 키 코드를 단축키 지정에 활용하자는 아이디어가 떠올랐다.

매핑 계획

기존 매핑

포커 배열 키보드는 우하단 특수키 4개 중 하나 이상을 Fn 키로 활용하는 경우가 많다. 그러나 표준 위치가 정해지지 않았다는 점에서 미완성으로 느껴졌고, 해당 영역 자체가 자주 누르기에 피곤했다. 그래서 활용 빈도는 낮지만 긴장 없이 누를 수 있는 CapsLockFn 키로 전용해서 지금까지 사용했다. 여기에 더해, 우하단 특수키 4곳에 순서대로 를 매핑해서 키 조합 없이 방향을 입력할 수 있게 했다. 화살표들이 한 줄로 배치된 것은 타협이지만, viH J K L 이동 시퀀스를 그대로 따른 것이므로 적응은 쉽다1. Fn 레이어에서는 관습에 따라 숫자 키 열에 F1 ~ F12를, 커스텀 룰을 확장해서 우하단 특수키 4개에 순서대로 Home PgDn PgUp End를 배정했다.

레이어 위치 기능
0 CapsLock Fn1
0 BR02
0 BR1
0 BR2
0 BR3
0 Esc Esc/~
1 BR0 Home
1 BR1 PgDn
1 BR2 PgUp
1 BR3 End
1 1/! ~ =/+ F1 ~ F12
1 Esc `/~
1 Bs Del

새 매핑

SpaceFn3 키 코드를 이용해 Space 키를 조건부 Fn1 키로 사용하고, 기존 CapsLock 위치는 Fn2로 배정했다. 추가된 Fn2 레이어에서는 F11 ~ F24 입력을 받는다. 이 방식은 Space 키를 홀드해서 공백을 연속으로 입력할 수 없는 단점이 있다. 그러나 기능을 희생하지 않고 추가 레이어에 접근할 수 있으며 가장 사용 빈도가 높고 편안한 키를 중심으로 조작할 수 있다는 장점이 있다.

레이어 위치 기능
0 Space SpaceFn1
0 CapsLock Fn2
0 BR0
0 BR1
0 BR2
0 BR3
0 Esc Esc/~
1 BR0 Home
1 BR1 PgDn
1 BR2 PgUp
1 BR3 End
1 1/! ~ =/+ F1 ~ F12
1 Esc `/~
1 Bs Del
2 1/! ~ =/+ F11 ~ F22
2 [/{ ~ ]/} F23 ~ F24
2 BR0 CapsLock
2 BR1 NumLock
2 BR2 ScrlLock
2 BR3 Print

매크로 예비

K9 ProVIA 앱을 지원한다는 점을 이용해서 미리 매크로 레이어를 추가했다.

레이어 위치 기능
1 Tab Fn3
2 Tab Fn3
3 Esc M0
3 1/! ~ =/+ M1 ~ M12
3 [/{ ~ ]/} M13 ~ M14
3 Bs M15

레이아웃 업데이트

상어60

구입 당시 널리 쓰이던 DZ60 보드45가 설치된 키보드. 해당 보드는 VIA 앱을 지원하지 않으므로6 QMK Configurator로 매핑 프로필과 펌웨어를 마련하고 QMK Toolkit으로 플래싱했다. 첫 시도는 드라이버 불일치 이슈7로 실패했지만, Zadig 앱으로 드라이버를 강제로 변경8하고 플래싱에 성공했다.

K9 Pro

이 키보드는 외장에 노출된 OS 선택(Win/Mac) 스위치로 기본 레이어를 지정(0/1)하는 기능이 있어 확장 레이어 인덱스를 1씩 밀어야 했다. VIA 앱은 매핑하는 즉시 하드웨어에 반영되기 때문에 작업은 단순했다.

결과 보고

  1. 키 조합 없이 , , , 키 코드를 입력할 수 있다.
  2. Space 키 조합으로 F1 ~ F12, Home, End, PgDn, PgUp 키 코드를 입력할 수 있다.
  3. CapsLock 키 조합으로 F11 ~ F24, CapsLock, NumLock, ScrlLock, Print 키 코드를 입력할 수 있다.
  4. (K9 Pro 한정) Space + Tab 또는 CapsLock + Tab 키 조합으로 M0 ~ M15 키 코드를 입력할 수 있다.
  1. 이 배열이 입력 빈도를 반영했다는 주장은 증명되지 않았지만, 코딩 환경에서는 타당하다고 본다. 

  2. BR0~BR3은 우하단 특수키 네 개의 물리적 위치를 의미한다. 

  3. Space 키를 홀드하는 동안에는 Fn1 키로, 릴리즈하는 순간에는 Space 키로 동작한다. 

  4. ATmega32U4 컨트롤러를 사용한다. 

  5. DFU 모드 진입 방법은 USB 케이블 연결 시 Esc 키를 홀드하는 것이다. 

  6. 본 작업에서는 장치를 인식시키는 방법이 있는지 조사하지 않았다. 

  7. Atmel DFU device has libusb0 driver assigned but should be WinUSB. Flashing may not succeed. 

  8. DFU 모드에서 드라이버를 libusb0winusb으로 변경했다.