body start
새나루
Project News
Project Info
- Development Status: Beta
- License: New BSD License, Other License
- Operating System: Windows
- Programming Language: C, C++
- Topic: System SW
- User Interface: Text-based Console, Windows
- Member count : 2
- Registered: : 2003.11.28
- Activity Percentile: : 99.26%
Developer Info
새나루는 scancode 기반이 아니기때문에 글쇠 드라이버가 kbdkor.dll로 고정적이다. kbddv.dll과 같은 드보락 드라이버로 바꾸면 특별처리를해주어야 한다.
그러나 scancode기반으로 바꾸면 이러한 각 글쇠 드라이버를 특별처리 해주지 않아도 되므로,
영문을 제외한 다른 글자판과 쉽게 같이 사용할 수 있게 된다.
스캔코드 기반으로 사용가능하도록 고치려면 무엇이 필요할까?
Nabi / libhangul의 키보드 자판과 하위 호환가능하도록 ¶
# this file is the new-3set keyboard map file for Nabi Name: 새세벌 Type3 U002c U11C2 # XK_,: jongseong hieuh U002e U11C0 # XK_.: jongseong thikeuth U0031 U002c # XK_1: comma U0032 U002e # XK_2: period U0033 U110f # XK_3: choseong khieukh U0034 U1110 # XK_4: choseong thieuth U0035 U1111 # XK_5: choseong phieuph ...
이와같이 새나루의 사용자 자판 및 내부적으로 처리되는 자판 파일은 스캔코드=>한글 매핑이 아니라
쿼티자판을 가정하고 있다.
QWERTY 방식을 SCANCODE 방식으로 변환 ¶
기존의 QWERTY자판을 기반으로 했던 여러 자판 데이터를 SCANCODE 기반으로 변환을 내부적으로 변환한다.
Shift 상태 고려 ¶
스캔코드는 shift와 무관하다. shift상태에 대해 변환하는 각각의 테이블이 필요하다.
새나루의 스캔코드 기반 ¶
새나루에서는 스캔코드 => 글자 변환이 한번에 일어나지 않고 다음과 같은 두단계를 거친다.
한글 모드일 경우
- 스캔코드 => 스캔코드-쿼티 변환 테이블 => 쿼티-한글자판 변환 테이블
- 스캔코드 => VK_키 그대로 사용.
※ 비교 - 새나루의 예전방식의 드보락 지원 ¶
새나루에서는 다음과 같은 두가지 방식으로 드보락을 지원했다.
- 키 후킹 - 키 후킹을 통해서 영문모드일 경우 쿼티로 입력되는 VK 키코드를 드보락으로 변환
- 키보드 드라이버 - 이경우는 곧바로 VK 키코드 사용. 키후킹 필요 없음.
반면 이 경우 한글을 사용하려면, 드보락 VK코드 => 쿼티 VK코드 변환 =>쿼티-한글자판 변환 => 한글입력. 과 같은 방식으로 중간에 드보락-쿼티 변환 테이블이 필요했다.
스캔코드 기반을 지원하게 되면 이러한 각각의 키보드 매핑 대신에 한글 자판 지원을 위해 스캔코드-쿼티 테이블만 있으면 영문모드일 경우에는 VK키코드를 그대로 사용하면 되므로 단순하면서 더 효율적이라 할 수 있다.


