😤 CapsLock, 넌 왜 거기 있니?#
키보드를 보면 항상 드는 의문이 있어요. CapsLock 키는 대체 왜 저렇게 좋은 자리를 차지하고 있는 걸까요?
솔직히 CapsLock 키를 일부러 누르는 경우가 1년에 몇 번이나 될까요? 저는 거의 없어요. 오히려 실수로 눌러서 “aSDFASDF” 이런 식으로 타이핑되는 바람에 지우고 다시 치는 경우가 대부분이죠 😅
반면 Ctrl 키는 하루에도 수백 번은 누르는 것 같아요. 복사(Ctrl+C), 붙여넣기(Ctrl+V), 저장(Ctrl+S), 실행취소(Ctrl+Z)… 개발자라면 더 말할 것도 없고요.
그런데 이 Ctrl 키가 키보드 구석탱이에 처박혀 있으니, 새끼손가락이 고생이 이만저만이 아니에요. 장시간 코딩하다 보면 손목도 아프고요.
🎯 해피해킹 유저들은 이미 알고 있다#
해피해킹 키보드(HHKB)를 쓰는 분들은 이미 Ctrl 키가 CapsLock 자리에 있는 배열에 익숙해요. 한번 이 배열에 적응하면 일반 키보드로 돌아가기가 너무 힘들어지죠.
저도 여러 기기를 오가다 보니 배열을 통일하고 싶었어요. 특히 GPD WIN Max 2 같은 휴대용 기기에서는 키보드가 작아서 Ctrl 키 누르기가 더 불편하거든요.
🔧 PowerToys로 시도했는데…#
처음엔 Microsoft PowerToys의 Keyboard Manager를 썼어요. GUI로 쉽게 키를 리매핑할 수 있어서 좋았죠.
근데 이게 웬걸? 일부 프로그램에서 키 매핑이 안 먹히는 거예요! 😤
알고 보니 PowerToys는 사용자 수준(user-level)에서 동작해요. 그래서 관리자 권한으로 실행된 프로그램이나 시스템 레벨 창에서는 키 매핑이 적용되지 않더라고요.
개발하다 보면 관리자 권한으로 뭔가를 실행하는 경우가 많은데, 그때마다 Ctrl 키가 원래대로 돌아가버리니 손가락이 헷갈려서 미치겠더라고요.
💡 레지스트리 Scancode Map이 답이다#
결국 찾은 해결책은 레지스트리의 Scancode Map이에요. 이건 시스템 레벨에서 키를 바꿔치기 때문에 모든 프로그램에서 완벽하게 동작해요!
레지스트리 경로는 이거예요:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
여기에 Scancode Map이라는 이진값을 추가하면 돼요.
🚀 PowerShell 한 줄로 끝내기#
레지스트리 편집기에서 이진값을 직접 입력하려면 좀 귀찮아요. 붙여넣기도 안 되고, 일일이 손으로 쳐야 하거든요.
그래서 PowerShell 명령어를 준비했어요. 관리자 권한으로 PowerShell을 열고 아래 명령어를 복사해서 붙여넣기만 하면 끝!
$hexified = "00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,1d,00,00,00,00,00".Split(',') | % { "0x$_"}
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout" -Name "Scancode Map" -PropertyType Binary -Value ([byte[]]$hexified) -Force
명령어 실행 후 재부팅하면 적용 완료예요! 🎉
🔄 원래대로 되돌리고 싶다면#
혹시 원래 배열로 돌아가고 싶으면 이 명령어로 되돌릴 수 있어요:
Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout" -Name "Scancode Map" -Force
마찬가지로 재부팅하면 원래대로 돌아와요.
📝 Scancode Map 값의 의미#
혹시 궁금하신 분들을 위해 저 이진값이 뭘 의미하는지 간단히 설명할게요:
00,00,00,00 - 헤더 (버전)
00,00,00,00 - 헤더 (플래그)
03,00,00,00 - 매핑 개수 + 1 (2개 매핑 + null 종료자)
1d,00,3a,00 - CapsLock(3a) → Ctrl(1d)로 매핑
3a,00,1d,00 - Ctrl(1d) → CapsLock(3a)으로 매핑
00,00,00,00 - null 종료자
즉, 양방향으로 키를 서로 바꿔치기하는 설정이에요.
✨ 적용 후 느낀 점#
이렇게 설정하고 나니 정말 편해졌어요!
- ✅ 모든 프로그램에서 일관되게 동작
- ✅ 관리자 권한 프로그램에서도 OK
- ✅ 부팅할 때부터 바로 적용
- ✅ 별도 프로그램 실행 필요 없음
단점이라면 윈도우 새로 설치할 때마다 다시 설정해야 한다는 거? 근데 PowerShell 명령어 한 줄이니까 별로 귀찮지도 않아요 ㅎㅎ
🐧 리눅스에서는?#
리눅스(Ubuntu 등)에서는 /etc/default/keyboard 파일을 수정하면 돼요.
sudo nano /etc/default/keyboard
XKBOPTIONS 부분을 찾아서 다음과 같이 수정해요:
XKBOPTIONS="ctrl:swapcaps"
저장하고 재부팅하면 적용돼요.
임시로 바로 테스트해보고 싶으면 이 명령어를 쓰면 되는데, 로그아웃하면 풀려요:
setxkbmap -option ctrl:swapcaps
⌨️ 아예 펌웨어 키매핑 지원 키보드를 사는 것도 방법#
매번 OS 설정 건드리기 귀찮다면, 아예 VIA 같은 펌웨어 기반 키매핑을 지원하는 키보드를 사는 것도 좋은 방법이에요.
이런 키보드들은 키보드 자체에서 키 배열을 바꿀 수 있어요. 가장 큰 장점은 설정이 키보드에 저장된다는 거예요. 그래서 다른 컴퓨터에 연결해도 내 설정 그대로 유지돼요!
키크론 Q 시리즈, K Pro 시리즈 같은 제품들이 이런 기능을 지원하는데, GUI로 드래그앤드롭하듯이 키 매핑을 바꿀 수 있어서 편해요. 레지스트리 만질 필요도 없고, OS 바꿔도 상관없고요.
커스텀 키보드 쪽에서는 이런 펌웨어 키매핑 지원 여부가 거의 필수 스펙처럼 취급되더라고요. 나중에 키보드 새로 살 계획 있으시면 한번 확인해보세요 👍
💬 마무리#
CapsLock 키 때문에 손가락 고생하고 계셨다면, 오늘 바로 바꿔보세요! 한번 적응하면 다시는 돌아갈 수 없을 거예요 😄
혹시 다른 키 조합으로 리매핑하고 싶으신 분들은 댓글로 남겨주세요. Scancode 값 찾아서 알려드릴게요!
그리고 비슷한 경험 있으신 분들, 어떤 키 배열 쓰고 계신지 궁금해요. 해피해킹 배열 쓰시는 분? 댓글로 공유해주세요! 💬
