글 수 704
in_ok.gif
늦게 나마 도찬구님의 글을 보게 되었습니다.
요즘 익스플로러에서는 보안상 키보드 후킹을 막아놨나 보군요.
그러면 어떻게 구현하셨는지 궁금합니다.
시스템 저레벨에서 키보드버퍼를 직접 억세스하셨나요?
ps 쪽지로 드려도될 것을 게시판에 올린 이유는 Uex때문입니다 ^^; 죄송...
늦게 나마 도찬구님의 글을 보게 되었습니다.
요즘 익스플로러에서는 보안상 키보드 후킹을 막아놨나 보군요.
그러면 어떻게 구현하셨는지 궁금합니다.
시스템 저레벨에서 키보드버퍼를 직접 억세스하셨나요?
ps 쪽지로 드려도될 것을 게시판에 올린 이유는 Uex때문입니다 ^^; 죄송...
훈민자판 건으로 개발하고 있는 것은 키보드에서 일반 스캔코드+알파 등과 전혀 다른 형태의로 받는 것으로 했습니다. 이 경우에 얻게 되는 장점은. 디바이스드라이버를 통신형태로만 하면 된다 + 다른 것에 프로그램을 깔 수 없다.(장점인지 단점인지.. 흐음.)
아참 그리고 한글 구현은 현재 지금의 엄지키보드와 다른 방식으로 구현할 생각입니다. 일단 주 키보드가 있는 대상을 상대로 외부 키보드를 두어서 사용한다는 것을 기본으로 생각하고 있기 때문에. (만약 그렇지 않을 경우에 상당한 문제가 발생합니다. 드라이버 설치 전에 사용을 하려고 한다면 정상적인 키가 인식 되지 않을 수도 있으며 여러 문제가 야기 되기에. 어디까지나 보조 입력 수단 + 장애인 + 노년을 대상으로 하는 형태로 개발 중입니다.) 키보드와 매치시키는 것은 조금 회의적입니다.
현재 엄지키보드의 문제점으론 자판이 3벌식일 경우에 엉뚱한 글자가 올라간다. 입력시 ime정보를 잃는 경우(xp에서 붉어진 문제점이죠. 고급입력을 없애면 해결) 영어만 입력된다.
이런 문제 때문에 자체 ime를 만들 생각입니다. (그러나 이덕에 무척 느려질 것이라고 생각됩니다. 시험삼아 연습한 봐로는 visual c에서 한글치는 것 보다 느렸습니다. copydate를 이용하다가 보니 그럴 수 밖에 없지만, 다른 방법도 있을 듯 한데 아직 범용적인 측면에서 더 좋은 방법을 찾지는 못했습니다.
그나저나 이런 키보드로 오락하려는 사람은 없겠죠. 만약 있다면 몹시 난감. directx 호출 시엔 전해 줄 방법이 없더군요. 드라이버에서 다 처리해서 해야 하는 걸까하는 생각이 들기는 하는데......
완벽한 놈을 만들 수는 없을 것 같다고 어렴풋이 느끼고는 있습니다. 가장 이상적인 형태는 이미 나와 있고(프로그패드 키보드에서 모든 처리를~ 그러나 한글이 이럴 수 없다는 것이.물론 window의 자판 배열을 통신으로 키보드에 알려주고 그 형태에 맞게 통신형태를 바꿔가면서 하기는 가능하지만 엄지키보드 형태의 입력 방식을 따라 갈 수는 없습니다. 문자를 조합하는 방식의 한글 입력과정을 키보드에서 보여 주어야 하는데 이렇게 되면..... 여하튼 문제가 많죠.)
아참 그리고 한글 구현은 현재 지금의 엄지키보드와 다른 방식으로 구현할 생각입니다. 일단 주 키보드가 있는 대상을 상대로 외부 키보드를 두어서 사용한다는 것을 기본으로 생각하고 있기 때문에. (만약 그렇지 않을 경우에 상당한 문제가 발생합니다. 드라이버 설치 전에 사용을 하려고 한다면 정상적인 키가 인식 되지 않을 수도 있으며 여러 문제가 야기 되기에. 어디까지나 보조 입력 수단 + 장애인 + 노년을 대상으로 하는 형태로 개발 중입니다.) 키보드와 매치시키는 것은 조금 회의적입니다.
현재 엄지키보드의 문제점으론 자판이 3벌식일 경우에 엉뚱한 글자가 올라간다. 입력시 ime정보를 잃는 경우(xp에서 붉어진 문제점이죠. 고급입력을 없애면 해결) 영어만 입력된다.
이런 문제 때문에 자체 ime를 만들 생각입니다. (그러나 이덕에 무척 느려질 것이라고 생각됩니다. 시험삼아 연습한 봐로는 visual c에서 한글치는 것 보다 느렸습니다. copydate를 이용하다가 보니 그럴 수 밖에 없지만, 다른 방법도 있을 듯 한데 아직 범용적인 측면에서 더 좋은 방법을 찾지는 못했습니다.
그나저나 이런 키보드로 오락하려는 사람은 없겠죠. 만약 있다면 몹시 난감. directx 호출 시엔 전해 줄 방법이 없더군요. 드라이버에서 다 처리해서 해야 하는 걸까하는 생각이 들기는 하는데......
완벽한 놈을 만들 수는 없을 것 같다고 어렴풋이 느끼고는 있습니다. 가장 이상적인 형태는 이미 나와 있고(프로그패드 키보드에서 모든 처리를~ 그러나 한글이 이럴 수 없다는 것이.물론 window의 자판 배열을 통신으로 키보드에 알려주고 그 형태에 맞게 통신형태를 바꿔가면서 하기는 가능하지만 엄지키보드 형태의 입력 방식을 따라 갈 수는 없습니다. 문자를 조합하는 방식의 한글 입력과정을 키보드에서 보여 주어야 하는데 이렇게 되면..... 여하튼 문제가 많죠.)
이궁. 제가 설명을 잘못한 듯 하군요. 일단 유동훈님의 입력은 2벌식을 기초로 만들어져 있습니다. 3벌식을 기본으로 둘 경우엔 사용자가 원하지 않는 타자가 입력 됩니다. 여기서 ime의 필요성이 생깁니다.(2벌식과 3벌식은 비록 입력 형태는 틀리지만 키보드에서 전해져 오는 데이터가 틀리지는 않습니다. 엄지키보드는 이런 데이터를 원하는 윈도우에 보는 방식이기 때문에 입력방식에 따라서 입력되는 한글이 틀려 집니다.)
자. 다음. 이런 ime를 어떻게 만드느냐? 완벽하게 윈도우와 같은 형태의 ime는 제작하기 힘듭니다. 아예 윈도우를 다시 만드는 것이 속편할 겁니다. 자 그럼 이 새로운 ime는 어떤 식이냐? 일단 조합형 한글을 가지고 글자를 만들고 해당 글자를 완성형으로 변형하고 이 데이터를 api 쪽의 WM_COPYDATA를 이용해서 출력을 원하는 윈도우에 뿌려준다.
이게 가상 ime의 형태입니다. (유동훈님도 처음에 이렇게 만드실 생각이었던 것 같던데요. 소스 디렉토리에 보면 조합형과 완성형 변환 소스가 있던 것으로 봐서는... 설마 은근 슬쩍 모른 척하시며 엄지키보드의 개발을 피하시는 것은 아닌지. ㅎㅎㅎㅎㅎ)
자. 다음. 이런 ime를 어떻게 만드느냐? 완벽하게 윈도우와 같은 형태의 ime는 제작하기 힘듭니다. 아예 윈도우를 다시 만드는 것이 속편할 겁니다. 자 그럼 이 새로운 ime는 어떤 식이냐? 일단 조합형 한글을 가지고 글자를 만들고 해당 글자를 완성형으로 변형하고 이 데이터를 api 쪽의 WM_COPYDATA를 이용해서 출력을 원하는 윈도우에 뿌려준다.
이게 가상 ime의 형태입니다. (유동훈님도 처음에 이렇게 만드실 생각이었던 것 같던데요. 소스 디렉토리에 보면 조합형과 완성형 변환 소스가 있던 것으로 봐서는... 설마 은근 슬쩍 모른 척하시며 엄지키보드의 개발을 피하시는 것은 아닌지. ㅎㅎㅎㅎㅎ)
최근 댓글
유동 채팅
일단. 방식은 ddk를 이용한 접근입니다. 동훈님이 말씀하신 것처럼 저 레벨에서 접근해야지만 익스플로러 자체의 후킹을 피할 수 있을 겁니다.
또 제가 생각한 방식의 하나는 아예 키패드를 따로 만들어 내는 겁니다.
이 경우에도 ddk가 사용하지만 아예 처음부터 필요한 프로그램에만 정보가 입력되게 한다면 익스플로러의 횡포(?)에서 벗어 날 수 있을 겁니다.
ddk 공부하기 정말 짜증나요~~ 흑흑. win 2000이상의 환경에서는 wdm을 이용해서 필터링할 수 있다고 하는데 공부하는데 어려움을 느낍니다. 게다가 이렇게 할 경우 win98이하의 호환성은 장담할 수 없는 것이 문제입니다.