Best Article
위와 같이 다이오드를 배치하면 어떠한 키 조합에서도 고스트 현상이 발생하지 않습니다.
위 링크에 가 보면 키보드에서 발생하는 다양한 상황과 그에 대한 대처가 자세히 나와 있어, 소개해 봅니다.
참고로 다이오드는 흔히 쓰는 1N4001 이 아닌, 1N4148 을 쓰라고 충고하고 있습니다. 1N4001은 fault tolerance가 60Hz에 불과해 1초에 60번 이상의 신호가 가해지면(여러분이 치는게 아니고, 컨트롤러가 신호를 보내는 횟수입니다) 제대로 된 동작을 보장하지 않으므로, 4ns 의 동작 타임을 보장하는 1N4148을 쓰라고 하는군요.
아꽈님이 컨트롤러에서 blocking 관련 로직을 뺄 수 있는 옵션을 넣어주신다면 위와 같이 회로를 살짝 개조해서 간편하게 무한입력 키보드를 만들 수 있겠네요.
그리 어려운 작업은 아니니 혹시 이 글을 보신다면 한번 부탁드려 봅니다.
추가사항 ) 이 배치를 기판에 어떻게 적용할 수 있을지에 대해서 그려봤습니다. 모든 row쪽 스위치 납땜 구멍에 대해서
위와 같이 작업하면 최소한의 작업으로 다이오드를 심을 수 있을 것 같습니다.
http://devicemart.co.kr/mart7/mall.php?cat=034009000&query=view&no=8289
에서 구매할 수 있는 SMD4148 다이오드를 쓰면 될 것 같습니다. 일반적인 키보드를 작업한다고 생각하면 약 6천원어치 사면 해결되네요.
오류가 있거나 더 좋은 방법이 있다면 댓글 달아 주세요 :)
ps. 키 네 개에서의 실험은 성공했습니다.
참고해주세요.
09.06.14 01:49 (*.193.220.137)
제가 림케비 소스에서 고스트 방지를 뺀 펌을 한번 드려볼까요.
스위치 마다 다이오드 다달고 제 콘트롤러 달아서 한번 써보세요. 어떤현상이 발생하는지.
그리고 림케비는 usb 콘트롤러입니다. usb콘트롤러는 고스트 방지를 위해 다이오드를 달아도
근본적인 통신구조상 6+1 밖에 입력이 안됩니다.
코딩을 하신다고 하니 아시겠지만 8바이트중 맨처음 1바이트는 정보, 나머지 6바이트는 문자열 및 기타 키가 한개씩 나머지
한바이트는 1비트씩 8개(shift, ctrl,alt,win) 의 정보를 보내게 됩니다. 만약 고스트 부분을 빼고
키들을 연결하면 분명 이론상으로는 6+8 이 입력이 되야 하는데 윈도 내부에서 별짓을 다하는 웃긴현상이 발생됩니다.
직접확인해 보시려면 펌만들어 드리죠..
제가 고스트 부분을 빼고 다이오드를 달고 6+1 다 쓰시라고 펌을 만들었다면 아마 지금쯤 무슨 욕을 먹으면서 살고 있을지
상상이 안가네요..
스위치 마다 다이오드 다달고 제 콘트롤러 달아서 한번 써보세요. 어떤현상이 발생하는지.
그리고 림케비는 usb 콘트롤러입니다. usb콘트롤러는 고스트 방지를 위해 다이오드를 달아도
근본적인 통신구조상 6+1 밖에 입력이 안됩니다.
코딩을 하신다고 하니 아시겠지만 8바이트중 맨처음 1바이트는 정보, 나머지 6바이트는 문자열 및 기타 키가 한개씩 나머지
한바이트는 1비트씩 8개(shift, ctrl,alt,win) 의 정보를 보내게 됩니다. 만약 고스트 부분을 빼고
키들을 연결하면 분명 이론상으로는 6+8 이 입력이 되야 하는데 윈도 내부에서 별짓을 다하는 웃긴현상이 발생됩니다.
직접확인해 보시려면 펌만들어 드리죠..
제가 고스트 부분을 빼고 다이오드를 달고 6+1 다 쓰시라고 펌을 만들었다면 아마 지금쯤 무슨 욕을 먹으면서 살고 있을지
상상이 안가네요..
09.06.14 01:54 (*.193.220.137)
물론 그 웃기는 현상을 방지하는 해결방법도 있습니다. 스위치마다 다이오드를 달아주면 고스트가 안일어날거 같지만
콘트롤러 row, col 부분에도 역전류방지 다이오드를 달아주셔야 합니다. 체리 무한 콘트롤러를 보시면 알수 있으실겁니다.
즉. 스위치에만 다이오드를 달아서는 완벽한 고스트 방지가 안된다는거죠... 콘트롤러에도 역전류가 흘러 들어가기 때문입니다.
그래서 이상한 짓거리를 하게 되는것이죠...
콘트롤러 row, col 부분에도 역전류방지 다이오드를 달아주셔야 합니다. 체리 무한 콘트롤러를 보시면 알수 있으실겁니다.
즉. 스위치에만 다이오드를 달아서는 완벽한 고스트 방지가 안된다는거죠... 콘트롤러에도 역전류가 흘러 들어가기 때문입니다.
그래서 이상한 짓거리를 하게 되는것이죠...
09.06.14 01:58 (*.193.220.137)
그럼 다이오드에 대해서 잘아시니 질문한개 해보겠습니다.
체리 무한 키보드중 다이오드가 달린 스위치를 보시면 충분히 아시겠지만 . 체리 무한콘트롤러들은
신호를 어떻게 보내서 받을까요 ?
1. row -> col
2. col -> row
별거 아닌거 같죠.. ㅋㅋㅋ
체리 무한 키보드중 다이오드가 달린 스위치를 보시면 충분히 아시겠지만 . 체리 무한콘트롤러들은
신호를 어떻게 보내서 받을까요 ?
1. row -> col
2. col -> row
별거 아닌거 같죠.. ㅋㅋㅋ
09.06.19 23:24 (*.255.179.18)
예전에 어느 회원님이 직접 실험을 하셨지만 실패!
저도 그말 듣고 직접 해보지는 않았습니다
하지만 !!
생각의 자유~
엔지니어라면~
뚜껑을 직접 열기전까지는 모르죠...
걍 주절주절~
09.06.20 09:50 (*.178.5.153)
체리 무한 컨트롤러는 안봐서 모르겠고
LIMKB는 col -> row 로, 텐키레스와 키네시스는 row ->col로 신호를 보내더군요.
LIMKB는 col -> row 로, 텐키레스와 키네시스는 row ->col로 신호를 보내더군요.
작성된지 3개월이 지난 글에는 새 코멘트를 달 수 없습니다.






머문자리
이상한나라의동화
Boris
카프리옹