디버그 (115.♡.213.5)
2024년 7월 12일 PM 08:50 · 수정됨(07. 15. 21:40)
제가 가진 중국산 키보드를 사용하고자 결국 여기까지 왔습니다. 제공된 앱이 원하는 기능을 제대로 구현 하지도 못하지만 찐핑이가 옆에 있을 듯한 찜찜함으로 박스에 고이 모셔두고 있었지요. 그러다 hid-remapper를 보고 다시 꺼냈지만 이건 또 키보드 두 개를 한 개로 처리 하지 못하는 문제가 있어 결국 직접 프로그램을 짜보고 싶어졌습니다.
정말 쥐어짠것 같네요. 언어도 생소하고 하나 하나 공부해가면서 하느라 시간소모도 작지 않았습니다.언어는 golang을 선택하고 github에서 샘플을 찾았습니다. user32util 이라는 프로젝트를 처음에 참고 했는데 지나고 나서 보니 실수였고 차라리 클로드 쏘넷으로 샘플 받아서 시작한게 더 도움이 되긴 했습니다.
윈도우 API중에 SetWindowsHookExW, SendInput 그리고 맵핑로직을 처리하는 callback 구현이 핵심이라 지금은 전체가 다 이해가 되지만 언어초보에게 쉽지 않았네요.
설정은 json을 이용해서 hold, mouse, tap, macro 등을 지원하게 했습니다.
"0":[{"key":"VK_RSHIFT", "hold":{"layer":1}, "tap":{"layer":2}},
{"key":"VK_CAPITAL","hold":{"vkcode":"VK_LWIN"}, "tap":{"vkcode":"VK_CAPITAL"}},
{"key":"VK_RETURN", "hold":{"vkcode":"VK_RSHIFT"},"tap":{"vkcode":"VK_RETURN"}}
{"key":"VK_4", "tap":{"vkcode":"VK_F4","mod":["alt"]}},
{"key":"VK_M", "mouse":"CLICK"},
{"key":"VK_Y", "mouse":"WHEEL_UP"},
{"key":"VK_I", "mouse":"MS_UP"},
{"key":"VK_C", "tap":{"macro":0}},
이 정도가 제가 사용하는 용도라서 지금 만족하게 사용하고 있습니다. 개발중에 가장 헷갈린 로직이 hold처리 였습니다. 단순한데 쉽진않았는 데 이유를 보니 저 hold 하나에 상태가 중첩되는 데 처음에 분리해서 생각하지 못하고 계속 조건을 달아나가는 실수를 몇번했죠ㅋ.
이제 다음에는 원래계획인 rp2040에 이식해 보는 겁니다. 지금 윈도우용 프로그램으로 잘 사용중이니 좀 시간을 가지고 도전해 봐야죠.
쓰고 보니 키보드당에 어울리지 않게 개발이야기가 되어 가네요. 그래도 읽어 주셔서 감사합니다.

첨부파일
m.png 55.2 KB댓글 (6)
-
땡땡큐파파
24.07.14 · 118.♡.155.180
-
Bbluemas
24.07.14 · 223.♡.216.138
혹시 공유 가능하실까요? - 디
디버그
→ bluemas 작성자
24.07.14 · 115.♡.213.5
그냥 언어초보가 만든거라...일단 압축해서 실행파일과 소스를 자료실에 올려 보겠습니다. -
Bbluemas
→ 디버그
24.07.14 · 122.♡.152.32
감사합니다! -
Ccpp64
24.07.14 · 39.♡.174.51
윈도우에서 매크로 만들거나 키 매핑하는 데는 AutoHotkey 많이 사용합니다. - 디
디버그
→ cpp64 작성자
24.07.15 · 115.♡.213.5
개발중에 검색하면 많이 나오던 게 autoHotKey 였긴합니다. 아마 기본은 동일한 api를 사용했을 듯 하지만 결정적으로 layer지원은 어렵지 않을까 생각되네요. 제가 개발하려고 한 최종목적지는 rp2040에 심기고 지금은 연습프로그램정도로 생각합니다. 그래도 qmk지원 없는 일반 키보드에서도 간단하게 qmk의 기본 기능정도는 적용가능합니다. 그래서 지금 제가 사용하는 용도로는 만족합니다.
댓글을 작성하려면 이 필요합니다.
어떻게든 이해해보고 싶었습니다 ㅜ