키보드당

(탄핵 재표결 1일 전)   🔥 제목 시위는 [말머리] 또는 임시게시판(불타는앙)을 이용바랍니다.

윈도우에 맵핑 프로그램을 짜봤습니다.

알림
|
X

페이지 정보

작성자 디버그 115.♡.213.5
작성일 2024.07.12 20:50
355 조회
4 추천
쓰기

본문

제가 가진 중국산 키보드를 사용하고자 결국 여기까지 왔습니다. 제공된 앱이 원하는 기능을 제대로 구현 하지도 못하지만 찐핑이가 옆에 있을 듯한 찜찜함으로 박스에 고이 모셔두고 있었지요. 그러다 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에 이식해 보는 겁니다. 지금 윈도우용 프로그램으로 잘 사용중이니 좀 시간을 가지고 도전해 봐야죠.

쓰고 보니 키보드당에 어울리지 않게 개발이야기가 되어 가네요. 그래도 읽어 주셔서 감사합니다.

댓글 6

모리님의 댓글

작성자 모리 (118.♡.155.180)
작성일 07.14 00:04
아하! 그렇군요…
어떻게든 이해해보고 싶었습니다 ㅜ

bluemas님의 댓글

작성자 bluemas (223.♡.216.138)
작성일 07.14 13:50
혹시 공유 가능하실까요?

디버그님의 댓글의 댓글

대댓글 작성자 디버그 (115.♡.213.5)
작성일 07.14 20:05
@bluemas님에게 답글 그냥 언어초보가 만든거라...일단 압축해서 실행파일과 소스를 자료실에 올려 보겠습니다.

bluemas님의 댓글의 댓글

대댓글 작성자 bluemas (122.♡.152.32)
작성일 07.14 20:15
@디버그님에게 답글 감사합니다!

cpp64님의 댓글

작성자 cpp64 (39.♡.174.51)
작성일 07.14 22:15
윈도우에서 매크로 만들거나 키 매핑하는 데는 AutoHotkey 많이 사용합니다.

디버그님의 댓글의 댓글

대댓글 작성자 디버그 (115.♡.213.5)
작성일 07.15 21:40
@cpp64님에게 답글 개발중에 검색하면 많이 나오던 게 autoHotKey 였긴합니다. 아마 기본은 동일한 api를 사용했을 듯 하지만 결정적으로 layer지원은 어렵지 않을까 생각되네요. 제가 개발하려고 한 최종목적지는 rp2040에 심기고 지금은 연습프로그램정도로 생각합니다. 그래도 qmk지원 없는 일반 키보드에서도 간단하게 qmk의 기본 기능정도는 적용가능합니다. 그래서 지금 제가 사용하는 용도로는 만족합니다.
쓰기
홈으로 전체메뉴 마이메뉴 새글/새댓글
전체 검색