몇시간 삽질 끝에 드디어 가상 HID(Virtual HID)를 완성했습니다. ^^)/~ 약간 문제가 있긴 하지만 그래도 동작은 하니... ^^;;;;; 하나의 드라이버로 동작하게 할 생각이었습니다만은 보안 프로그램에 따라 특색이 조금씩 달라서 결국 포기했습니다.
이게 희한한게... 하나는 완전히 내렸다가 새로 올리고 다른 하나는 아예 그냥 잘라버립니다. ㅡ_ㅡa... 이것 참... 그래서 한쪽에 맞춰두면 다른 한쪽에서 문제가 발생하더군요. 결국 두가지 버전으로 구성했습니다. 이렇게 되면 버전관리가 힘든데... 흑흑.... ㅜ_ㅜ 어쩔수 없지요 ㅜ_ㅜ...
대충 키보드/마우스 이벤트를 넣어보고 정리하려고 키보드 쪽을 유심히 봤더니, HID 키보드의 값과 전통적으로 사용하는 스캔 코드(Scan Code)의 값이 서로 다르더군요. @0@)/
결국 기존의 LIbrary가 스캔 코드 값을 받도록 되어있었기에, 호환성 유지를 위해 HID 값으로 바꿔줘야 했습니다. 결국 Mapping Table을 만들어야 한다는 이야기!!! 그래도 구글신이 도와주셔서 괜찮은 문서를 구했고, 삽질 끝에 맵핑 테이블을 완성했습니다. ^^)/~
아아~ 일단 만들었으니 내일 테스트 해야겠습니다. ^^)/~ 다들 좋은 밤 되시길~
문서와 Mapping Table 첨부합니다. ^^)/~
/*Key Name PS/2 Set 1 Make* HID Usage ID */
{/* DO NOT USE 0x00 */ 0x00 ,
/* Escape 0x01 */ 0x29 ,
/* 1 ! 0x02 */ 0x1E ,
/* 2 @ 0x03 */ 0x1F ,
/* 3 # 0x04 */ 0x20 ,
/* 4 $ 0x05 */ 0x21 ,
/* 0.05 0x06 */ 0x22 ,
/* 6 ^ 0x07 */ 0x23 ,
/* 7 & 0x08 */ 0x24 ,
/* 8 * 0x09 */ 0x25 ,
/* 9 ( 0x0A */ 0x26 ,
/* 0 ) 0x0B */ 0x27 ,
/* - _ 0x0C */ 0x2D ,
/* = + 0x0D */ 0x2E ,
/* Backspace 0x0E */ 0x2A ,
/* Tab 0x0F */ 0x2B ,
/* q Q 0x10 */ 0x14 ,
/* w W 0x11 */ 0x1A ,
/* e E 0x12 */ 0x08 ,
/* r R 0x13 */ 0x15 ,
/* t T 0x14 */ 0x17 ,
/* y Y 0x15 */ 0x1C ,
/* u U 0x16 */ 0x18 ,
/* i I 0x17 */ 0x0C ,
/* o O 0x18 */ 0x12 ,
/* p P 0x19 */ 0x13 ,
/* [ { 0x1A */ 0x2F ,
/* ] } 0x1B */ 0x30 ,
/* Return 0x1C */ 0x28 ,
/* Left Control 0x1D */ 0xE0 ,
/* a A 0x1E */ 0x04 ,
/* s S 0x1F */ 0x16 ,
/* d D 0x20 */ 0x07 ,
/* f F 0x21 */ 0x09 ,
/* g G 0x22 */ 0x0A ,
/* h H 0x23 */ 0x0B ,
/* j J 0x24 */ 0x0D ,
/* k K 0x25 */ 0x0E ,
/* l L 0x26 */ 0x0F ,
/* ; : 0x27 */ 0x33 ,
/* ' " 0x28 */ 0x34 ,
/* ` ~ 0x29 */ 0x35 ,
/* Left Shift 0x2A */ 0xE1 ,
/* \ | 0x2B */ 0x31 ,
/* Europe 1 (Note 0x2B */ 0x32 ,
/* z Z 0x2C */ 0x1D ,
/* x X 0x2D */ 0x1B ,
/* c C 0x2E */ 0x06 ,
/* v V 0x2F */ 0x19 ,
/* b B 0x30 */ 0x05 ,
/* n N 0x31 */ 0x11 ,
/* m M 0x32 */ 0x10 ,
/* , < 0x33 */ 0x36 ,
/* . > 0x34 */ 0x37 ,
/* / ? 0x35 */ 0x38 ,
/* Right Shift 0x36 */ 0xE5 ,
/* Keypad * 0x37 */ 0x55 ,
/* Left Alt 0x38 */ 0xE2 ,
/* Space 0x39 */ 0x2C ,
/* Caps Lock 0x3A */ 0x39 ,
/* F1 0x3B */ 0x3A ,
/* F2 0x3C */ 0x3B ,
/* F3 0x3D */ 0x3C ,
/* F4 0x3E */ 0x3D ,
/* F5 0x3F */ 0x3E ,
/* F6 0x40 */ 0x3F ,
/* F7 0x41 */ 0x40 ,
/* F8 0x42 */ 0x41 ,
/* F9 0x43 */ 0x42 ,
/* F10 0x44 */ 0x43 ,
/* Num Lock 0x45 */ 0x53 ,
/* Scroll Lock 0x46 */ 0x47 ,
/* Keypad 7 Home 0x47 */ 0x5F ,
/* Keypad 8 Up 0x48 */ 0x60 ,
/* Keypad 9 PageUp 0x49 */ 0x61 ,
/* Keypad - 0x4A */ 0x56 ,
/* Keypad 4 Left 0x4B */ 0x5C ,
/* Keypad 5 0x4C */ 0x5D ,
/* Keypad 6 Right 0x4D */ 0x5E ,
/* Keypad + 0x4E */ 0x57 ,
/* Keypad 1 End 0x4F */ 0x59 ,
/* Keypad 2 Down 0x50 */ 0x5A ,
/* Keypad 3 PageDn 0x51 */ 0x5B ,
/* Keypad 0 Insert 0x52 */ 0x62 ,
/* Keypad . Delete 0x53 */ 0x63 ,
/* UNASSIGNED 0x54 */ 0x00 ,
/* UNASSIGNED 0x55 */ 0x00 ,
/* Europe 2 (Note 0x56 */ 0x64 ,
/* F11 0x57 */ 0x44 ,
/* F12 0x58 */ 0x45 ,
/* Keypad = 0x59 */ 0x67 ,
/* UNASSIGNED 0x5A */ 0x00 ,
/* UNASSIGNED 0x5B */ 0x00 ,
/* Keyboard Int'l 6 0x5C */ 0x8C ,
/* UNASSIGNED 0x5D */ 0x00 ,
/* UNASSIGNED 0x5E */ 0x00 ,
/* UNASSIGNED 0x5F */ 0x00 ,
/* DO NOT USE 0x60 */ 0x00 ,
/* DO NOT USE 0x61 */ 0x00 ,
/* UNASSIGNED 0x62 */ 0x00 ,
/* UNASSIGNED 0x63 */ 0x00 ,
/* F13 0x64 */ 0x68 ,
/* F14 0x65 */ 0x69 ,
/* F15 0x66 */ 0x6A ,
/* F16 0x67 */ 0x6B ,
/* F17 0x68 */ 0x6C ,
/* F18 0x69 */ 0x6D ,
/* F19 0x6A */ 0x6E ,
/* F20 0x6B */ 0x6F ,
/* F21 0x6C */ 0x70 ,
/* F22 0x6D */ 0x71 ,
/* F23 0x6E */ 0x72 ,
/* UNASSIGNED 0x6F */ 0x00 ,
/* Keyboard Intl'2 0x70 */ 0x88 ,
/* UNASSIGNED 0x71 */ 0x00 ,
/* UNASSIGNED 0x72 */ 0x00 ,
/* Keyboard Int'l 0x73 */ 0x87 ,
/* UNASSIGNED 0x74 */ 0x00 ,
/* UNASSIGNED 0x75 */ 0x00 ,
/* F24 0x76 */ 0x73 ,
/* Keyboard Lang 4 0x77 */ 0x93 ,
/* Keyboard Lang 3 0x78 */ 0x92 ,
/* Keyboard Int'l4 0x79 */ 0x8A ,
/* DO NOT USE 0x7A */ 0x00 ,
/* Keyboard Int'l5 0x7B */ 0x8B ,
/* DO NOT USE 0x7C */ 0x00 ,
/* Keyboard Int'l2 0x7D */ 0x89 ,
/* Keypad ,Brazilian Keypad 0x7E */ 0x85 ,
/* DO NOT USE 0x7F */ 0x00 }
'프로그래밍(Programming)' 카테고리의 다른 글
Visual Studio 6.0에서 사용할 수 있는 Platform SDK를 다운 받을 수 있는 사이트 (4) | 2009.06.14 |
---|---|
Make Your Own Network Set-Top Box~!!! (0) | 2008.06.22 |
안티 바이러스(바이러스 백신)과 필터 드라이버의 관계는 ? (0) | 2008.05.29 |
위모트(Wii Remote) 설정방법 (0) | 2008.05.25 |
파이썬으로 티스토리 댓글만 뽑아내서 파일로 저장하려다 실패했습니다. ㅜ_ㅜ)/~ (2) | 2008.05.02 |