반응형

얼마전 알리익스프레스에서 yaml 기반으로 동작하는 매크로 키보드를 구매해서 사용하다가, 본격적으로 커스텀 매크로를 작성해서 사용하면 어떨까? 하는 욕심이 올라왔다. 해당 키보드의 경우에는 키 하나에 대략 5가지의 조합키를 매핑할 수 있었지만, shift 라거나 마우스 클릭과 같은 특수동작 매핑은 불가능했다. 그러다가 결국, 오래전부터 알고지낸(?) QMK/VIA 커스텀 키보드까지 알아보게 되었다.

 

87배열의 QMK/VIA 커스텀 키보드를 새로 추가해서 사용하기에는 부담스러웠고 그냥 자그만한 매크로 키보드를 구매하고자, 알리익스프레스를 뒤져보았더니 15키 + 3노브 커스텀 키보드가 존재했다. 좋아, 이번 장난감은 이거다.

 

3Knob+9Key, 1Knob+6Key, 3Knob+15Key 키보드 외에 회사에 1Knob+3Key 키보드도 있다. 대체 커스텀 키보드가 몇개인지원.

 

이번에는 RGB 뿜뿜하면서 화려하게 즐기고 싶어, 투명 아크릴 하우징으로 된 3Knob + 15Key 조합으로 구매, 말로만 듣던 VIA 부터 세팅해보려고 했으나 여러 문제에 닥치게 되었고, 이하 기본적인 QMK/VIA, VIAL 사용기를 나중에 리마인드하기 위해 작성해보고자 한다.

 

0. 개념잡기

QMK , VIA, 조금 더 깊게 들어가면 VIAL에 QMK toolbox에 QMK Configurator,  등등 오만잡다한것들이 많다. 일단 기본적인 용도와 개념을 잡고 진행하고자 한다. ( 어느정도 틀린 부분이 있어도 너그럽게 이해 부탁드립니다. )

1. QMK MSYS * Windows 기반
- 키보드 펌웨어 소스코드의 빌드, 이후 결과물은 *.hex 파일이 생성된다
- Mac 기반에서는 QMK MSYS 없이 직접 빌드할 수 있다. 이건 집에서 해봐야지

2. QMK ToolBox
- QMK MSYS에서 빌드한 hex 파일을 키보드에 업로드하여 Flash(설치) 하기 위한 툴. 키보드의 OS/SW를 설치하는 개념으로 이해하면 편하다

3. VIA / VIAL
- https://usevia.com 이라는 VIA 설정 웹 사이트가 있으며, VIAL은 https://vial.rocks 이 존재한다. VIAL 웹사이트 속도가 조금 느려 난 직접 클라이언트를 설치하여 사용중
- VIA 에서 조금 더 기능이 확장된 것으로 VIAL이 존재한다. 일단 직접적인 체감상으로는 VIAL 에서 조금 더 세부적인 설정이 가능했고, 마우스의 키 이벤트를 설정할 수 있다는 점에서 대표적으로 달랐다.

- 탭댄스나 콤보와 같은 부가 기능들도 VIAL 에서 설정이 가능했다.
- 여기서부터는 사용자가 사용하기 위한 키보드의 설정 단계로, 복잡한거 싫다면 그냥 VIA 에서 직접 설정하고 끝내는것이 제일 좋은듯

4. QMK Configurator
- https://config.qmk.fm/
- 키보드의 기본 hex 파일을 생성하는 웹사이트
- QMK MSYS에서 직접 빌드하다가 꼬여서 기본 펌웨어도 못올릴 때, 이 사이트에서 디폴트 hex 파일을 생성해서 QMK ToolBox로 Flash하면 된다
- 물론 여기서도 부가적인 키 매핑등을 이용할 수 있지만, QMK 보다는 VIA가 기능이 더 많고, VIA 보다는 VIAL이 기능이 더 많다

5. KBFirmware
- https://kbfirmware.com/
- 직접 키보드 펌웨어를 만들 수 있는 사이트
- 아직은 내공이 딸려 이정도밖에 모르겠다.

 

1. QMK MSYS 설치부터 설정까지

뭐가 되어도 일단 설치부터 해야한다. 다음의 사이트에서 클라이언트를 다운로드한다.

- 설치가이드 : https://msys.qmk.fm/guide

 

Getting Started | QMK MSYS

 

msys.qmk.fm

- 설치사이트 : https://github.com/qmk/qmk_distro_msys/releases/tag/1.10.0

 

Release 1.10.0 · qmk/qmk_distro_msys

Minor dependency updates

github.com

 

QMK MSYS를 설치하고 실행하면 터미널 창이 하나 열린다. 여기에서 다음과 같이 명령어를 입력한다.

[KimFish@KimFishs-ThinkPad13 ~]$ qmk setup

해당 명령어는 기본적인 qmk 설치를 위한 준비단계로, 꽤 오랜 시간동안 설정이 진행된다.

 

setup 단계는 대략 다음과 같이 진행된다.

Welcome to QMK MSYS!
  * Documentation:    https://docs.qmk.fm
  * Support:          https://discord.gg/qmk

If you have not already done so,
  run qmk setup to get started.
  run qmk compile -kb <keyboard> -km default to start building.
  run qmk config user.hide_welcome=True to hide this message.
[KimFish@KimFishs-ThinkPad13 ~]$ qmk setup
☒ Could not find qmk_firmware!
Would you like to clone qmk/qmk_firmware to C:/Users/KimFish/qmk_firmware? [y/n] y
'/c/Users/KimFish/qmk_firmware'에 복제합니다...
Updating files:   0% (145/21779)
Updating files:   1% (218/21779)
Updating files:   1% (258/21779)
Updating files:   1% (340/21779)

(중략)
                                                                                                          
Updating files:  99% (21728/21779)                                                                                                               
Updating files: 100% (21779/21779)                                                                                                               
Updating files: 100% (21779/21779), 완료.                                                                                                          
'lib/chibios' 경로에 대해 'lib/chibios' (https://github.com/qmk/ChibiOS) 하위 모듈 등록
'lib/chibios-contrib' 경로에 대해 'lib/chibios-contrib' (https://github.com/qmk/ChibiOS-Contrib) 하위 모듈 등록
'lib/googletest' 경로에 대해 'lib/googletest' (https://github.com/qmk/googletest) 하위 모듈 등록
'lib/lufa' 경로에 대해 'lib/lufa' (https://github.com/qmk/lufa) 하위 모듈 등록
'lib/lvgl' 경로에 대해 'lib/lvgl' (https://github.com/qmk/lvgl.git) 하위 모듈 등록
'lib/pico-sdk' 경로에 대해 'lib/pico-sdk' (https://github.com/qmk/pico-sdk.git) 하위 모듈 등록
'lib/printf' 경로에 대해 'lib/printf' (https://github.com/qmk/printf) 하위 모듈 등록
'lib/vusb' 경로에 대해 'lib/vusb' (https://github.com/qmk/v-usb) 하위 모듈 등록
'/c/Users/KimFish/qmk_firmware/lib/chibios'에 복제합니다...
'/c/Users/KimFish/qmk_firmware/lib/chibios-contrib'에 복제합니다...
'/c/Users/KimFish/qmk_firmware/lib/googletest'에 복제합니다...
'/c/Users/KimFish/qmk_firmware/lib/lufa'에 복제합니다...
'/c/Users/KimFish/qmk_firmware/lib/lvgl'에 복제합니다...
'/c/Users/KimFish/qmk_firmware/lib/pico-sdk'에 복제합니다...
'/c/Users/KimFish/qmk_firmware/lib/printf'에 복제합니다...                                                                                             
'/c/Users/KimFish/qmk_firmware/lib/vusb'에 복제합니다...                                                                                               
Submodule path 'lib/chibios': checked out 'be44b3305f9a9fe5f2f49a4e7b978db322dc463e'
Submodule path 'lib/chibios-contrib': checked out '77cb0a4f7589f89e724f5e6ecb1d76d514dd1212'
'lib/chibios-contrib/ext/mcux-sdk' 경로에 대해 'ext/mcux-sdk' (https://github.com/NXPmicro/mcux-sdk) 하위 모듈 등록
'/c/Users/KimFish/qmk_firmware/lib/chibios-contrib/ext/mcux-sdk'에 복제합니다...
Submodule path 'lib/chibios-contrib/ext/mcux-sdk': checked out '102c27d7cc2aaac87c133702e7829a105e0cb433'
Submodule path 'lib/googletest': checked out 'e2239ee6043f73722e7aa812a459f54a28552929'
Submodule path 'lib/lufa': checked out '549b97320d515bfca2f95c145a67bd13be968faa'
Submodule path 'lib/lvgl': checked out 'e19410f8f8a256609da72cff549598e0df6fa4cf'                                                                
Submodule path 'lib/pico-sdk': checked out 'a3398d8d3a772f37fef44a74743a1de69770e9c2'
Submodule path 'lib/printf': checked out 'c2e3b4e10d281e7f0f694d3ecbd9f320977288cc'
Submodule path 'lib/vusb': checked out '819dbc1e5d5926b17e27e00ca6d3d2988adae04e'
Ψ Successfully cloned https://github.com/qmk/qmk_firmware to C:/Users/KimFish/qmk_firmware!
Ψ Added https://github.com/qmk/qmk_firmware as remote upstream.                                                                                  
Ψ QMK Doctor is checking your environment.                                                                                                       
Ψ CLI version: 1.1.6                                                                                                                             
Ψ QMK home: C:/Users/KimFish/qmk_firmware                                                                                                        
Ψ Detected Windows 11 (10.0.26100).                                                                                                              
Ψ QMK MSYS version: 1.10.0                                                                                                                       
Ψ Userspace enabled: False                                                                                                                       
Ψ Git branch: master                                                                                                                             
Ψ Repo version: 0.27.1                                                                                                                           
Ψ - Latest master: 2024-12-09 07:34:07 +0100 (847257c3c7) -- Addition of EC TKL X (#24647)
Ψ - Latest upstream/master: 2024-12-09 07:34:07 +0100 (847257c3c7) -- Addition of EC TKL X (#24647)
Ψ - Latest upstream/develop: None                                                                                                                
Ψ - Common ancestor with upstream/master: 2024-12-09 07:34:07 +0100 (847257c3c7) -- Addition of EC TKL X (#24647)
Ψ - Common ancestor with upstream/develop: None                                                                                                  
Ψ All dependencies are installed.                                                                                                                
Ψ Found arm-none-eabi-gcc version 13.3.0                                                                                                         
Ψ Successfully compiled using arm-none-eabi-gcc                                                                                                  
Ψ Successfully tested arm-none-eabi-binutils using arm-none-eabi-size                                                                            
Ψ Found avr-gcc version 14.2.0                                                                                                                   
Ψ Successfully compiled using avr-gcc                                                                                                            
Ψ Successfully tested avr-binutils using avr-size                                                                                                
Ψ Found avrdude version 7.3-2024041                                                                                                              
Ψ Found dfu-programmer version 1.1.0                                                                                                             
Ψ Found dfu-util version 0.11                                                                                                                    
Ψ Submodules are up to date.                                                                                                                     
Ψ Submodule status:                                                                                                                              
Ψ - lib/chibios: 2024-02-17 19:20:06 +0000 --  (be44b3305f)                                                                                      
Ψ - lib/chibios-contrib: 2024-04-03 20:39:24 +0800 --  (77cb0a4f)                                                                                
Ψ - lib/googletest: 2021-06-11 06:37:43 -0700 --  (e2239ee6)                                                                                     
Ψ - lib/lufa: 2022-08-26 12:09:55 +1000 --  (549b97320)                                                                                          
Ψ - lib/vusb: 2022-06-13 09:18:17 +1000 --  (819dbc1)                                                                                            
Ψ - lib/printf: 2022-06-29 23:59:58 +0300 --  (c2e3b4e)                                                                                          
Ψ - lib/pico-sdk: 2023-02-12 20:19:37 +0100 --  (a3398d8)                                                                                        
Ψ - lib/lvgl: 2022-04-11 04:44:53 -0600 --  (e19410f8)                                                                                           
Ψ QMK is ready to go                                                                                                                             
[KimFish@KimFishs-ThinkPad13 ~]$

 

2. QMK MSYS - Git Clone

QMK MSYS 의 설정이 모두 끝났다면 Git에 등록된 키보드 오픈소스 펌웨어를 로컬 리포지토리에 복제해야한다. git 사이트에서 zip으로 압축받는 것은 하위 상관관계의 라이브러리 종속성 문제가 있을 수 있으니 꼭 다음 명령어를 통해 git clone을 수행해야 한다. 다운로드 받고자 하는 경로로 가서 아래의 명령어를 수행한다.

git clone --recursive https://github.com/vial-kb/vial-qmk.git

 

다음 QMK MSYS 터미널에서는 다음과 같이 수행된다.

[KimFish@KimFishs-ThinkPad13 ~]$ git clone --recursive https://github.com/vial-kb/vial-qmk.git 
'vial-qmk'에 복제합니다...                                                                                                            
remote: Enumerating objects: 557188, done.                                                                                      
remote: Counting objects: 100% (8/8), done.                                                                                     
remote: Compressing objects: 100% (8/8), done.                                                                                  
remote: Total 557188 (delta 0), reused 2 (delta 0), pack-reused 557180 (from 1)                                                 
오브젝트를 받는 중: 100% (557188/557188), 231.12 MiB | 21.44 MiB/s, 완료.                                                                 
델타를 알아내는 중: 100% (343726/343726), 완료.                                                                                           
Updating files: 100% (24242/24242), 완료.                                                                                         
'lib/chibios' 경로에 대해 'lib/chibios' (https://github.com/qmk/ChibiOS) 하위 모듈 등록                                                    
'lib/chibios-contrib' 경로에 대해 'lib/chibios-contrib' (https://github.com/qmk/ChibiOS-Contrib) 하위 모듈 등록                            
'lib/googletest' 경로에 대해 'lib/googletest' (https://github.com/qmk/googletest) 하위 모듈 등록                                           
'lib/lufa' 경로에 대해 'lib/lufa' (https://github.com/qmk/lufa) 하위 모듈 등록                                                             
'lib/lvgl' 경로에 대해 'lib/lvgl' (https://github.com/qmk/lvgl.git) 하위 모듈 등록                                                         
'lib/pico-sdk' 경로에 대해 'lib/pico-sdk' (https://github.com/qmk/pico-sdk.git) 하위 모듈 등록                                             
'lib/printf' 경로에 대해 'lib/printf' (https://github.com/qmk/printf) 하위 모듈 등록                                                       
'lib/vusb' 경로에 대해 'lib/vusb' (https://github.com/qmk/v-usb) 하위 모듈 등록                                                            
'/c/Users/KimFish/vial-qmk/lib/chibios'에 복제합니다...                                                                               
remote: Enumerating objects: 264269, done.                                                                                      
remote: Counting objects: 100% (23013/23013), done.                                                                             
remote: Compressing objects: 100% (5887/5887), done.                                                                            
remote: Total 264269 (delta 16584), reused 22905 (delta 16534), pack-reused 241256 (from 1)                                     
오브젝트를 받는 중: 100% (264269/264269), 178.51 MiB | 20.86 MiB/s, 완료.                                                                 
델타를 알아내는 중: 100% (200627/200627), 완료.                                                                                           
'/c/Users/KimFish/vial-qmk/lib/chibios-contrib'에 복제합니다...                                                                       
remote: Enumerating objects: 26224, done.                                                                                       
remote: Counting objects: 100% (26213/26213), done.                                                                             
remote: Compressing objects: 100% (8428/8428), done.                                                                            
remote: Total 26224 (delta 16906), reused 25613 (delta 16583), pack-reused 11 (from 1)                                          
오브젝트를 받는 중: 100% (26224/26224), 10.75 MiB | 21.79 MiB/s, 완료.                                                                    
델타를 알아내는 중: 100% (16906/16906), 완료.                                                                                             
'/c/Users/KimFish/vial-qmk/lib/googletest'에 복제합니다...                                                                            
remote: Enumerating objects: 22998, done.                                                                                       
remote: Total 22998 (delta 0), reused 0 (delta 0), pack-reused 22998 (from 1)                                                   
오브젝트를 받는 중: 100% (22998/22998), 8.84 MiB | 18.18 MiB/s, 완료.                                                                     
델타를 알아내는 중: 100% (17080/17080), 완료.                                                                                             
'/c/Users/KimFish/vial-qmk/lib/lufa'에 복제합니다...                                                                                  
remote: Enumerating objects: 76748, done.                                                                                       
remote: Counting objects: 100% (3098/3098), done.                                                                               
remote: Compressing objects: 100% (78/78), done.                                                                                
remote: Total 76748 (delta 3049), reused 3027 (delta 3020), pack-reused 73650 (from 1)                                          
오브젝트를 받는 중: 100% (76748/76748), 18.93 MiB | 19.78 MiB/s, 완료.                                                                    
델타를 알아내는 중: 100% (61670/61670), 완료.                                                                                             
'/c/Users/KimFish/vial-qmk/lib/lvgl'에 복제합니다...                                                                                  
remote: Enumerating objects: 62969, done.                                                                                       
remote: Counting objects: 100% (2036/2036), done.                                                                               
remote: Compressing objects: 100% (196/196), done.                                                                              
remote: Total 62969 (delta 1862), reused 1840 (delta 1840), pack-reused 60933 (from 1)                                          
오브젝트를 받는 중: 100% (62969/62969), 92.04 MiB | 20.88 MiB/s, 완료.                                                                    
델타를 알아내는 중: 100% (49384/49384), 완료.                                                                                             
'/c/Users/KimFish/vial-qmk/lib/pico-sdk'에 복제합니다...                                                                              
remote: Enumerating objects: 6628, done.                                                                                        
remote: Total 6628 (delta 0), reused 0 (delta 0), pack-reused 6628 (from 1)                                                     
오브젝트를 받는 중: 100% (6628/6628), 2.45 MiB | 19.88 MiB/s, 완료.                                                                       
델타를 알아내는 중: 100% (3529/3529), 완료.                                                                                               
'/c/Users/KimFish/vial-qmk/lib/printf'에 복제합니다...                                                                                
remote: Enumerating objects: 1578, done.                                                                                        
remote: Counting objects: 100% (627/627), done.                                                                                 
remote: Compressing objects: 100% (100/100), done.                                                                              
remote: Total 1578 (delta 567), reused 539 (delta 522), pack-reused 951 (from 1)                                                
오브젝트를 받는 중: 100% (1578/1578), 797.96 KiB | 14.00 MiB/s, 완료.                                                                     
델타를 알아내는 중: 100% (978/978), 완료.                                                                                                 
'/c/Users/KimFish/vial-qmk/lib/vusb'에 복제합니다...                                                                                  
remote: Enumerating objects: 1372, done.                                                                                        
remote: Counting objects: 100% (73/73), done.                                                                                   
remote: Compressing objects: 100% (50/50), done.                                                                                
remote: Total 1372 (delta 32), reused 46 (delta 18), pack-reused 1299 (from 1)                                                  
오브젝트를 받는 중: 100% (1372/1372), 476.46 KiB | 9.93 MiB/s, 완료.                                                                      
델타를 알아내는 중: 100% (832/832), 완료.                                                                                                 
Submodule path 'lib/chibios': checked out 'be44b3305f9a9fe5f2f49a4e7b978db322dc463e'                                            
Submodule path 'lib/chibios-contrib': checked out '77cb0a4f7589f89e724f5e6ecb1d76d514dd1212'                                    
'lib/chibios-contrib/ext/mcux-sdk' 경로에 대해 'ext/mcux-sdk' (https://github.com/NXPmicro/mcux-sdk) 하위 모듈 등록
'/c/Users/KimFish/vial-qmk/lib/chibios-contrib/ext/mcux-sdk'에 복제합니다...                                                          
remote: Enumerating objects: 80982, done.                                                                                       
remote: Counting objects: 100% (18997/18997), done.                                                                             
remote: Compressing objects: 100% (5244/5244), done.                                                                            
remote: Total 80982 (delta 14060), reused 17970 (delta 13620), pack-reused 61985 (from 1)                                       
오브젝트를 받는 중: 100% (80982/80982), 229.18 MiB | 19.09 MiB/s, 완료.                                                                   
델타를 알아내는 중: 100% (55271/55271), 완료.                                                                                             
Submodule path 'lib/chibios-contrib/ext/mcux-sdk': checked out '102c27d7cc2aaac87c133702e7829a105e0cb433'
Submodule path 'lib/googletest': checked out 'e2239ee6043f73722e7aa812a459f54a28552929'                                         
Submodule path 'lib/lufa': checked out '549b97320d515bfca2f95c145a67bd13be968faa'                                               
Submodule path 'lib/lvgl': checked out 'e19410f8f8a256609da72cff549598e0df6fa4cf'                                               
Submodule path 'lib/pico-sdk': checked out 'a3398d8d3a772f37fef44a74743a1de69770e9c2'                                           
Submodule path 'lib/printf': checked out 'c2e3b4e10d281e7f0f694d3ecbd9f320977288cc'                                             
Submodule path 'lib/vusb': checked out '819dbc1e5d5926b17e27e00ca6d3d2988adae04e'                                               
[KimFish@KimFishs-ThinkPad13 ~]$ pwd                                                                                            
/c/Users/KimFish

 

여기까지 했다면 QMK MSYS의 기본 설정과 QMK/VIA 키보드의 펌웨어 준비단계까지 모두 완료된 셈이다.

3. VIA/VIAL 펌웨어 빌드

준비단계가 모두 끝났다면 QMK MSYS에서 펌웨어를 빌드한다. 내가 작업할 키보드는 winry315 키보드로, git 저장소 내에 다음과 같이 펌웨어 소스코드가 존재한다. 다른 키보드도 git에 소스코드가 있다면 같은 방식으로 펌웨어를 찾을 수 있을 것이다.

git clone 경로는 위에서 pwd로 보여지는 경로의 하위에 생성되며, 나의 경우에는 C:\Users\KimFish 에서 git Clone을 수행했기 때문에 해당 경로 하위에 vial-qmk 디렉토리가 생성되어있다. vial-qmk 하위에 keyboards/winry/winry315/keymaps 디렉토리를 찾으면 defaults, left_numpad, vial 디렉토리가 존재하는데 이는 기본 키맵 펌웨어, 왼손 넘버패드 펌웨어, vial 전용 펌웨어로 이해할 수 있다.

 

각 펌웨어의 설정은 다음 단계에서 알아보기로 하고, 이번에는 VIAL 빌드를 수행한다.

컴파일 명령어는 다음과 같다. 주의할 점은 vial-qmk 디렉토리에서 수행해야 한다는 점이다.

 

qmk compile -j 8 -kb winry/winry315 -km vial

[KimFish@KimFishs-ThinkPad13 vial-qmk]$ qmk compile -j 8 -kb winry/winry315 -km vial
C:/Users/KimFish/vial-qmk/lib/python/qmk/decorators.py:20: UserWarning: cli._subcommand has been deprecated, please use cli.subcommand_name to get the subcommand name instead.
  if cli.config_source[cli._subcommand.__name__]['keyboard'] != 'argument':
C:/Users/KimFish/vial-qmk/lib/python/qmk/decorators.py:40: UserWarning: cli._subcommand has been deprecated, please use cli.subcommand_name to get the subcommand name instead.
  if cli.config_source[cli._subcommand.__name__]['keymap'] != 'argument':
Ψ Compiling keymap with make --jobs=8 --output-sync=target -r -R -f builddefs/build_keyboard.mk -s KEYBOARD=winry/winry315 KEYMAP=vial KEYBOARD_ FILESAFE=winry_winry315 TARGET=winry_winry315_vial VERBOSE=false COLOR=true SILENT=false QMK_BIN="qmk"


avr-gcc.exe (GCC) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Size before:
   text    data     bss     dec     hex filename
      0   27306       0   27306    6aaa winry_winry315_vial.hex

Compiling: quantum/bitwise.c                                                                        [OK]
Compiling: keyboards/winry/winry315/winry315.c                                                      [OK]
Compiling: .build/obj_winry_winry315_vial/src/default_keyboard.c                                    [OK]
Compiling: quantum/keymap_introspection.c                                                           [OK]
Compiling: quantum/quantum.c                                                                        [OK]
Compiling: quantum/led.c                                                                            [OK]
Compiling: quantum/action.c                                                                         [OK]
Compiling: quantum/action_layer.c                                                                   [OK]
Compiling: quantum/action_tapping.c                                                                 [OK]

(중략) 

Compiling: lib/lufa/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c                                      [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c                                          [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c                                    [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c                                          [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c                                 [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c                                  [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/ConfigDescriptors.c                                       [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/DeviceStandardReq.c                                       [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/Events.c                                                  [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/HostStandardReq.c                                         [OK]
Compiling: lib/lufa/LUFA/Drivers/USB/Core/USBTask.c                                                 [OK]
Compiling: tmk_core/protocol/lufa/usb_util.c                                                        [OK]
Linking: .build/winry_winry315_vial.elf                                                             [OK]
Creating load file for flashing: .build/winry_winry315_vial.hex                                     [OK]
Copying winry_winry315_vial.hex to qmk_firmware folder                                              [OK]
Checking file size of winry_winry315_vial.hex                                                       [OK]
 * The firmware size is fine - 27306/28672 (95%, 1366 bytes free)

 

정상적으로 빌드되었다면 해당 펌웨어의 용량과 hex 파일이 출력된다. 설정파일에서 기능을 많이 넣게 된다면 빌드는 실패하게 된다. 맨 마지막줄의 굵은 글씨가 해당 펌웨어 hex 파일과 펌웨어 용량정보이다. 이걸 이제, QMK Toolbox로 플래싱하게 된다.

 

4. QMK Toolbox 플래싱

QMK MSYS 는 키보드 펌웨어를 빌드한다면 QMK Toolbox는 해당 빌드 결과물인 펌웨어를 키보드에 업로드하는 작업을 수행한다. 크게 어렵지 않다.

https://qmk.fm/toolbox

 

QMK Firmware

QMK Toolbox A collection of flashing tools for QMK keyboards

qmk.fm

해당 사이트에서 OS 버전에 맞춰 다운로드 한 후, 키보드 연결하여 실행한다.

 

 

아무런 화면도 출력되지 않지만, 키보드의 reset 버튼(일반적으로 키보드 기판에 작게 붙어있음)을 눌러주면 화면에 다음과 같이 출력된다. 

Atmel DFU device connected (WinUSB): Atmel Corp. ATm32U4DFU (03EB:2FF4:0000)

이 메세지는 키보드에 펌웨어 업로드가 준비되었다는 의미이다. 

 

이제 Local file 의 Open 버튼을 클릭하여 3 단계에서 수행한 결과물인 hex 파일을 선택한다. hex 파일은 vial-qmk 디렉토리에 존재한다. MCU는 노란 글씨에서 보여지는 것을 선택한다. 나의 경우에는 ATm32U4DFU 이다.

그리고 Flash 버튼을 클릭한다.

Atmel DFU device connected (WinUSB): Atmel Corp. ATm32U4DFU (03EB:2FF4:0000)

Attempting to flash, please don't remove device
> dfu-programmer.exe atmega32u4 erase --force
> Erasing flash...  Success
> Checking memory from 0x0 to 0x6FFF...  Empty.
> dfu-programmer.exe atmega32u4 flash --force "C:\Users\KimFish\vial-qmk\winry_winry315_vial.hex"
> Programming 0x6B00 bytes...
> Success
> Reading 0x7000 bytes...
> Success
Validating...  Success
> 0x6B00 bytes written into 0x7000 bytes memory (95.54%).
> dfu-programmer.exe atmega32u4 reset
Flash complete
Atmel DFU device disconnected (WinUSB): Atmel Corp. ATm32U4DFU (03EB:2FF4:0000)

 

정상적으로 Flash가 된 모습이다. 이제부터는 VIA/VIAL 에서 접속해서 사용이 가능하다.

 

5. VIA / VIAL

VIA 및 VIAL 모두 웹사이트 설정, 클라이언트 설정이 가능하다.

각각의 정보는 다음과 같다.

 

* VIA WEB - https://usevia.app/

 

VIA

Your keyboard's best friend

usevia.app

 

*VIA Client - https://github.com/the-via/releases/releases

 

Releases · the-via/releases

Contribute to the-via/releases development by creating an account on GitHub.

github.com

 

* VIAL WEB - https://vial.rocks/

 

Vial Web

You can check web browser support at caniuse.com. Latest versions of Chrome, Chromium or Edge are recommended to use Vial Web. You can also download the standalone Vial application from get.vial.today.

vial.rocks

* VIAL Client - https://get.vial.today/download/

 

Download

Vial is an open-source cross-platform (Windows, Linux and Mac) GUI and a QMK fork for configuring your keyboard in real time.

get.vial.today

 

 

이후 세부적인 설정정보들은 다음에 더 쓰는 걸로. 

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,