head	1.3;
access;
symbols;
locks
	root:1.3; strict;
comment	@# @;


1.3
date	2010.03.27.16.07.24;	author root;	state Exp;
branches;
next	1.2;

1.2
date	2010.03.27.14.28.03;	author root;	state Exp;
branches;
next	1.1;

1.1
date	2010.02.27.15.24.40;	author root;	state Exp;
branches;
next	;


desc
@/opt/nforge/var/wiki/saenaru/data/text/_ec_8a_a4_ec_ba_94_ec_bd_94_eb_93_9c_ea_b8_b0_eb_b0_98
@


1.3
log
@210.220.67.74;;wkpark wkpark ;;
@
text
@새나루는 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 키코드 사용. 키후킹 필요 없음.
   [[BR]]반면 이 경우 한글을 사용하려면, 드보락 VK코드 => 쿼티 VK코드 변환 =>쿼티-한글자판 변환 => 한글입력. 과 같은 방식으로 중간에 드보락-쿼티 변환 테이블이 필요했다.

그런데 만약 [[콜맥자판]]이라던지 독일어/프랑스어 자판을 함께 지원하려면 각각의 변환 테이블이 필요하게 되는 상당히 비 효율적인 구조인 것이다.

스캔코드 기반을 지원하게 되면 이러한 각각의 키보드 매핑 대신에 한글 자판 지원을 위해 스캔코드-쿼티 테이블만 있으면 영문모드일 경우에는 VK키코드를 그대로 사용하면 되므로 단순하면서 더 효율적이라 할 수 있다.
@


1.2
log
@210.220.67.74;;wkpark wkpark ;;
@
text
@d45 1
a45 1
그런데 만약 [[콜맥]] 자판이라던지 독일어/프랑스어 자판을 함께 지원하려면 각각의 변환 테이블이 필요하게 되는 상당히 비 효율적인 구조인 것이다.
@


1.1
log
@210.220.67.74;;wkpark wkpark ;;
@
text
@d22 2
a23 1
이와같이 되어있는 자판 파일을 SCAN코드 기반으로 바꾸려면?
d25 8
a32 8
{{{
U002c	U11C2	# XK_,:	jongseong hieuh			
}}}
대신에
{{{
S0033	U11C2	# XK_,:	jongseong hieuh			
}}}
와 같은 식으로 바꿔야 한다.
d34 4
a37 1
여기서 0x0033은 ","에 대한 scancode값.
d39 7
a45 2
== QWERTY 방식을 SCANCODE 방식으로 변환 ==
기존의 QWERTY자판을 기반으로 했던 여러 자판 데이터를 SCANCODE 기반으로 변환을 내부적으로 하도록 한다.
d47 1
a47 2
== Shift 상태 고려 ==
스캔코드는 shift와 무관하다. shift상태에 대해 변환 테이블을 쉽게 구분해줄 방식이 필요.
@
