키보드테스트및 map변경 툴

안녕하십니까. 신입회원입니다.

이번에 레오폴드 700r로 기계식입문을 하였습니다.


키보드 테스트겸 scancode map을 바꾸려하니 둘다 되는 마땅한 툴이 안보여서 만들어보았습니다.

img.png


목표는 다음과 같습니다.

  1. 키보드의 scancode및 virtual key의 확인
  2. 키보드의 레이아웃의 지정
  3. Scancode map의 수정
  4. Application command의 사용자 지정

입니다.

참고한 프로그램은 AquaKeyTest입니다.


구성은 다음과 같습니다.

  1. TLKeyboardMap.exe : 실행파일 c# .net 3.5입니다. win7이면 기본설치되어있습니다.
  2. Layout.xml : 설정파일입니다. scancode의 정보및 layout정보를 가지고 있습니다. 사용자가 layout추가가 가능합니다.



동작방법


 프로그램실행후 키를 눌려보시면 눌려진키는 밝은 노란, 한번이라도 눌러졌던키는 회색, 아직 안눌러본키는 주황입니다.(동작방식은 AquaKeyTest와 동일합니다.)

하단에 키의 정보가 표기됩니다. scancode(lParam)와 해당하는 virtual key(wParam)이 출력됩니다.



메뉴설명

  • Layouts : 레이아웃을 변경.
  • Clear : 눌러진키정보를 초기화
  • Reload : Layout.xml를 수정하였을경우 불러와서 적용
  • Scancode Map : 키보드 맵변경용 레지스트리 조작(팝업창이 뜹니다.)
  • App Command : 어플리케이션 키의 동작형태를 조작(팝업창이 뜹니다.)
  • Config : 사용자설정(현재 키캡의 색상조정이 가능합니다. 팝업창)




map의 변경방법


다음과 같습니다. (왼쪽 한자키를 왼쪽 alt키로 바꾸는것입니다.)

  1. Scancode Map을 눌러 팝업을 띄운다.
  2. 맵에서 왼쪽 한자키를 드래그해서 팝업창의 "To    From"글자 아래의 빈공간에 드랍한다.
    (scancode가 적힌 네모박스가 하나생기면서  From쪽으로 붙습니다.)
  3. 맵에서 왼편 알트키를 드래그해서 팝업창의 "To    From"글자 아래의 빈공간에 드랍한다.
    (scancode가 적힌 네모박스가 하나생기면서  To쪽으로 붙습니다.)
  4. "설정값을 설명"을 눌러 원하는 대로 설정이되었는지 확인합니다.
  5. "설정값을 적용하기"를 눌러 레지스트리에 기록합니다.
  6. 윈도우를 재시작하시면 적용이됩니다.

2,3번에서 순서가 중요하지 위치는 상관없습니다.
다른키도 바꾸실경우 2,3번을 반복하시면됩니다.

한번 드랍한 내용은 드래그로 위치 이동이 가능하고, 드래그해서 옆의 설명창쪽에 버리면 삭제도 됩니다.


scancode Map창의 버튼은 다음과 같은 역활을 합니다.

  • "Scancode Map을 삭제" : 레지스트리에 정의된 키를 지웁니다.
  • "Scancode Map을 불러오기" : 레지스트리의 내용을 읽어서 설정값에 넣습니다.
  • "설정값을 설명" : 드래그&드랍으로 추가한 키를 설명을 붙여서 보여줍니다.
  • "설정값을 파일로 저장" : .reg 파일로 저장시켜줍니다.
  • "설정값을 적용하기" : 레지스트리에 바로 기록합니다.


멀티미디어 키등도 map되도록작업하려 했으나 그런 키보드를 가진게 없어서...OTL...

그리고 USB키보드는 멀티미디어키들이 scancode를 가지고 있지 않고 virtual key만 가지고 있는것 같더군요.(좀더 명확히 알아봐야할것같습니다.)

scancode를 가지고 있지않으면 map에서 고칠수가 없지요. ps2로 연결하면 가지는것같습니다.




레이아웃 추가


현재 레이아웃으로 한글106키(멀티미디어 없고 enter가 큰것과 작은것)와 700R, 마제1, 전체키가 모양없이 정열된것이 있습니다.

자신의 키보드의 모양대로 하시려면 Layout.xml에 주석을 참고로 추가하시면됩니다.(xml은 알고 있으셔야합니다.)




Application command


Application command의 사용자 설정기능입니다.

어플리케이션 키라는것은 키보드에 홈(브라우져가뜬다),메일(아웃룩이뜬다), 내컴퓨터(탐색기가뜬다), 볼륨조절 등등의 키입니다.

이것들을 사용자가 원하는 프로그램및 동작으로 바꾸는것입니다.

메뉴의 AppCommand를 누르시면 다음과 같은 팝업이 뜹니다.

img2.png

위의 예제는 메일키를 누르면 mp3용 프로그램이 뜨고 홈키를 누르면 노트패드가 뜨도록 설정한것입니다.

  • 추가 : 설정하는 칸을 하나더 만듭니다.
  • 현재값 파일로 저장 : 현재레지스트리의 값을 reg파일로 저장합니다.(화면에 보이는값이아닙니다.)
  • 적용 : 현재 설정값을 적용합니다.(부팅필요없이 바로 적용됩니다.)
  • X : 설정한것을 지울때 사용합니다. 혹은 목록에서 가장처음의 NONE을 선택해도 됩니다.

첫칸은 어플리케이션 키의 종류들인데 모두다 동작하지는 않습니다.(볼륨조절같은것들은 동작안합니다. 오히려 동작하는게 더 적을 겁니다.)

두번째칸은 2가지 실행형태를 나타냅니다.

  • Association : .mp3처럼 확장자를 적습니다. 그러면 해당 확장자와 연결된 프로그램이 실행됩니다. mailto는 메일프로그램, http는 브라우져가 뜹니다.
  • ShellExcute : 일반적인 프로그램을 실행합니다. 애매하시면 전체경로를 적으시고 공백주의해주세요.



특이한 키들


  • 한영, 한자키는 Down이벤트만 있고 up이 없습니다.(가끔씩 처음누를때 다운없이 업이 한번 나올경우는 있더군요)
  • FN키를 재정의하거나 다른키를 FN키로 만들수 없습니다.(하드웨어키. 신호자체가 안올라옴)
  • pause break를 재정의하거나 다른키를 pause break키로 만들수없습니다.(확인필요.)
  • Num Lock은 올라오는 code와 map에 설정하는 코드가 다릅니다.(map에 설정할때 pause break값으로 설정해야 동작합니다. map에 드랍시 알아서 변환됩니다. 코드는 같고 확장이 True/False의 차이만있는데 왜그런지 스팩상의 이유를 못찾아봤네요.)



버그나 요구사항같은것도 댓글로 적어주시면 반영하도록 노력해보겠습니다.


툴들을 팁&태크 게시판에 올리시는것같아서 허접하나마 올려봅니다.


참고로 shift+space로 한영전환하는것은 http://jwmx.tistory.com/1647 의 jwShiftSpaceKey라는 프로그램이 좋습니다.

이거랑 scancode map이면 굳이 type 3번으로 키보드 드라이버를 안바꿔도 되지요. 더 좋은점들도 있고요.


테스트한 환경은 다음과 같습니다.

  • win7 32/64 한글판
  • 키보드셋팅은 type 1로만
  • 마제1, 700r, 아이락스 6310, 큰글씨 한글키보드
  • usb연결만 테스트해봄.


12-11-19: 수정사항

  • 레오폴드 700r의 레이아웃이 틀렸더군요. 이건 한영/한자키가 없죠.
  • 한영한자키를 레지스트리에 설정할때 적용이 안되던 버그를 수정하였습니다.
    이유가 한영(E0F2,0072)/한자(E0F1,0071)키가 하드웨어적으로 특별한 키입니다. down만 있고 up도 없고 press도 없습니다.
    그리고 기본적으로 발생하는 값은 F1/F2인데 설정시는 -80을해서 71/72로 설정해야합니다.
    참고자료 : http://ko.wikipedia.org/wiki/%EC%96%B8%EC%96%B4_%EC%9E%85%EB%A0%A5_%ED%82%A4

12-11-19: 수정사항2

  • 마제닌자1, 한글106키 enter작은것 레이아웃을 추가하였습니다.
  • 어플리케이션키에 다른 프로그램을 할당하는 기능을 추가하였습니다. 설명은 본문에 추가하였습니다.
  • 적혀있는 말들이 코드에있는걸 그대로 써서 일반유저가 알아먹기 힘든말들이 많네요.. 나중에 좀더 쉬운말로 바꿔보지요.

12-11-20: 수정사항

  • alt,F10키를 눌렀을경우 메뉴로 포커스가 이동해서 키입력이 정상적이지 않던 버그 수정 :SkyEyes님 제보감사.
    이전 댓글 28
    GON_ 2012-11-19 01:43
    와... 능력자이십니다. ^^;좋은 툴을 힘들게 만드셨을텐데... 이렇게 공유해주셔서 많은 유저들이 혜택을 볼 수 있을 것 같아요.추천 찍고 갑니다. ^^;
    철혈마제 2012-11-19 01:49
    조용히 추천 찍고 갑니다 ^^
    얼음사랑 2012-11-19 10:59
    와~ 대단 하십니다.
    Honggoon 2012-11-19 11:31
    우월~ 능력자십니다 ㅋㅋ 아이콘 안부럽군용
    키보드마저 2012-11-19 17:30
    좋은 툴이 있어도 저는 이해를 못하는 수준의 초심자라 슬프네요. ㅠㅠ 700r 레이아웃으로 해놓고 포커로 fn키 누르면 스캔코드가 안나오는데 그럼 위치 바꾸는 것 자체가 불가능한 거겠죠. 마음같아선 Fn키와 Rwin을 바꾸고,바뀐 Rwin을 한/영 변환으로 변경했으면 하는데 그런건 불가능한가요?   일단 추천~~~~~~~
    화이트핸드 2012-11-19 21:59
    추천을 한번만 할 수 있다는 것이 안타깝군요.이렇게 공유해주셔서 감사합니다.
    SkyEyes 2012-11-19 23:16
    추천 한 방 날렸습니다. 궁금한 것이 있는데요.. AutoHotkey라는 리매핑 프로그램이 있는데요, 이거로 리매핑해 놓으면 키 값을 잡지 못하네요.. AquaKeyTest는 오토핫키 리매핑을 싹 무시하고 키 값을 잘 잡았습니다. 프로그램은 잘 모르지만.. 그 어떤 건드리는 깊이가 달라서 그런가요 ? 이것이 양쪽 윈키나 좌측 얼트키 작동을 억누르지 못하는 것과도 관련이 있는 것으로 생각하는데.. 전 그런거 잘 모르니까, 그냥 추측만.. (시간 나시면.. F10 키하고 프린트 스크린 키도 한 번 점검해 주세요. 제 키보드/컴퓨터가 문제인지 좀 이상하게 작동합니다 ^^).
    taijimania 2012-11-19 23:21
    정말 추천을 한번만 할 수 있다는 것이 안타깝네요.. 대단하십니다!!
    오혜성 2012-11-20 02:30
    레오폴드 전용인가요?
    lorg 2012-11-20 03:22
    대박... 이에요 ㅋㅋ 
    아톤 2012-11-21 13:27
    잘 쓰겠습니다. 너무 감사합니다.
    루아달 2012-11-22 23:14
    엄청납니다;ㅁ; 얼른 받아서 저도 테스트 해보고싶네요/ㅂ/
    심통 2012-11-25 16:31
    무한 감사 (__)
    빨간풍차 2012-12-10 17:45
    리얼포스 106키 사용중입니다. 한자키-> R콘트롤, R-콘트롤 -> 한자키 로 수정하고자 프로그램에서 수정했는데한자키-> R콘트롤 전혀 수정이 안먹습니다. 해당 프로그램에서는 제대로 바뀐걸로 인지합니다. 다른 수정은 인지합니다. 그런데 나와보면 다른 프로그램에선 그렇게 인지를 못하네요. ㅠ.ㅜ 왜 그럴까요?  한자키로 컨트롤+V, 컨트롤+C 사용하고 싶었거든요.. 그리고.. 혹시 key tweak처럼  사용안할 키 지정, 일반키에 어플리케이션 키 지정 이런거 안될까요?일반 키보드에서는 계산기,인터넷이나  키같은게 없는데 일반키에 지정될 수 있으면 좋을 것 같습니다.^^
    SkyEyes 2012-12-11 00:07
    한문, 한글 키 신호를 특이하게 만든 것은 좀 고쳐졌으면 좋겠습니다. 브레이크 신호를 왜 안 내보내는지 이해가 안 갑니다. 연타를 막겠다는 의도로 추측만되는데.. 연타가 그 무슨 문제라고 그랬는지 이해가 안 갑니다. 시간이 너무 많이 흘렀는가요 ? 아니면, 표준이므로 반드시 따라야 하는가요.. 좌우간 일반 키와 다름없이 신호 좀 내보낼 수 있도록 컨트롤러 프로그램 수정하려면, 어디에 누구한테 어떻게 하소연을 해야 하는지요..... 이것만 고쳐지면 106배열 아무런 거리낌없이 살 것입니다. (일본어 카나 키도 그런가요 ? ... 안 그럴껄요... 일본어 배열에서 그런 불편함이 있어서 키매핑이 불가능했다는 소리는 아직 못 들었습니다.)
    pioland 2012-12-11 00:11
    어...작성자가 저인데 추천글로 가더니 수정권한이 없어져버렸네요.어쩔수없이 댓글로 변경사항및 파일첨부합니다.12-12-11 : 변경사항일반키에 멀티미디어 키를 배치하는 기능추가(빨간풍차님 요구사항)배치하는건 기존과 동일합니다. 드래그&드롭일단 기본 106키의 layou하단에만 멀티미디어키들을 배치하였습니다.테스트 결과는 아래내용 참조버그수정 및 잡다 패치 키보드 1~6까지의 키캡글자가 다른것으로 찍히던것을 수정scancode설정시 정상동작후 정상동작되었다는 메세지 창 추가scancode설정값 초기화버튼추가Reload시 scancode의 변경값도 적용되도록 변경   너무 믿믿하여 아이콘 추가;;;멀티미디어키 테스트 결과아래의 내용대로 정의후 테스트를 해보았습니다.굵은 글씨의 키는 반응을 안하던데 특정상황에서만 되는건지 아니면 scancode값을 잘못알고있는건지 모르겠습니다.Favorites 같은키는 즐겨찾기 창이 나오는건데 당연히 ie를 띄워놓고 하셔야 동작하는것입니다.전원 로그오프같은 전원관련 4개의 기능키는 특별히 테스트를 하지않았습니다.(에러나시면 댓글주세요)00 00 00 00  : 헤더00 00 00 00  : 버전16 00 00 00  : 갯수 = 226B E0 29 00  : ~ 를 My Computer로 변경3C E0 02 00  : 1 를 My Music/Office Home로 변경 x64 E0 03 00  : 2 를 My Pictures로 변경 x21 E0 04 00  : 3 를 Calculator로 변경05 E0 05 00  : 4 를 Messenger or Files로 변경 x6C E0 06 00  : 5 를 Mail로 변경6D E0 07 00  : 6 를 Media로 변경66 E0 08 00  : 7 를 Favorites로 변경32 E0 09 00  : 8 를 Web Home로 변경6A E0 0A 00  : 9 를 Web Back로 변경69 E0 0B 00  : 0 를 Web Forward로 변경65 E0 0C 00  : - 를 Web Search로 변경68 E0 0D 00  : + 를 Web Stop로 변경67 E0 0E 00  : Backspace 를 Web Refresh로 변경22 E0 3B 00  : F1 를 Media Play Pause로 변경24 E0 3C 00  : F2 를 Media Stop로 변경19 E0 3D 00  : F3 를 Media Next Track로 변경10 E0 3E 00  : F4 를 Media Prev Track로 변경30 E0 3F 00  : F5 를 Volume +로 변경2E E0 40 00  : F6 를 Volume -로 변경20 E0 41 00  : F7 를 Volume Mute로 변경00 00 00 00  : 종료
    빨간풍차 2012-12-11 01:04
    엄청나게 빠른 피드백 감사합니다.^^ 이제는 제게 정말 외산 프로그램보다 훨씬 더 유용해져버렸습니다.^^ 내일 회사에서 체크해 봐야겠습니다.^^ ㅎ
    장우람 2012-12-15 15:25
    감사합니다.. 한번 써봐야 겠네여~~
    체리컴팩 2012-12-21 08:45
    진정한 능력자 이시네요.. 당신의 열정에 ~~ ㅊㅊ
    ukira 2012-12-26 03:04
    사용해보아야겠네요 우와우
    루돌프 2012-12-27 10:25
    잘봤습니다.
    뚀잉뚀잉 2012-12-27 19:23
    우앙.. 뭔가 잘 모르겠지만 굉장한 능력자이시군뇨 ㅠ ㅠ키의 기능을 바꾸어주는건가요?
    kota 2012-12-29 15:39
    잘보고 갑니다 ^^
    인간메트로놈 2013-01-03 13:21
    추천드립니다~!
    KWSN 2013-01-04 12:59
    감사히쓰겠습니다~
    presentsmile 2013-02-12 22:27
    정말 유용하네요!!
    기환이 2013-03-30 20:13
    마침 필요한 자료였는데 공유 감사드립니다~ 잘쓸께요~
    매그도나르도 2014-02-12 16:07
    능력자..