skip menu and go to main content

body start

새나루

Wiki

Project News

Project Info

activity viewforum,download view

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키코드를 그대로 사용하면 되므로 단순하면서 더 효율적이라 할 수 있다.