|
날개셋이 참 잘 만들어진 한글 입력기인데요.
그에 반해 설명이 좀 어렵다는 생각이 듭니다.
검색을 해봐도 자세하게 설명된 곳도 없고요.
그래서 글쇠를 입력하는 방법과 수식을 입력하는 방법에 대해,
글을 한번 적어보도록 하겠습니다.
사실 저도 수식을 전혀 몰랐는데요.
조금씩 만들면서 수정하다 보니,
이해가 되기 시작하네요.
아직 모르는 부분도 있고,
제대로 설명을 못 할 수도 있으니,
양해를 부탁드립니다.
신세벌식 K 자판을 기준으로 적었는데요.
팥알 님이 만드는 신세벌식 P2 자판에서 수식을 가져왔고,
일부 수식은 쓰임에 맞춰서 수정하였음을 알려드립니다.
1. 입력 방법
'글쇠배열'에서 입력할 글쇠에 더블클릭하면,
글쇠 수식 편집 창이 뜹니다.
여기에서 계산식 우측에 있는 점 3개(…)를 누르시면,
입력 문자 창이 뜨는데,
여기에서 선택해서 입력하시면 됩니다.
※사실은 저도 최근에서야 이런 게 있다는 걸 알았고,
기호의 경우는 ASCII 코드표에서 검색해서 입력하였습니다.
다중 문자의 경우에도 'ASCII 코드 16진수 변환'을 통해,
'맨 뒤에서부터 거꾸로 적는 방식'을 사용해서 입력하였는데,
이 방법을 사용하면 훨씬 편하게 입력이 가능하네요.
1) 일반 문자 - 다중 문자(A3):
'다중 문자'를 입력하는 곳으로,
최대 '한글 3글자', 또는 '한글 2글자+기호 1개'까지 입력이 가능합니다.
한글로 여러 글자를 입력할 때는,
여기에 글자를 써서 입력하시면 됩니다.
'문자표'를 눌러서 기호의 입력도 가능합니다.
※문자 생성기를 '고급 입력기'로 바꾸면 나오는,
'사용자 정의 조합' 또는 '한글 출력 치환'을 사용해도,
여러 글자를 입력하는 것이 가능합니다.
'사용자 정의 조합'의 경우는 기호를 조합해서 입력하고,
'한글 출력 치환'은 초성+종성 또는 옛한글로 조합해서 입력합니다.
단, 이러한 방법을 사용하면 전체 글자가 표시되는 것이 아니라,
'하나의 글자만 표시'되고,
'다음에 무언가를 입력해야' 전체 글자가 표시됩니다.
'사용자 정의 조합'을 통해 한글 낱자를 입력하는 경우에는,
초성은 ᄇᅠᄊᅠ처럼, 받침은 ᅟᅠᆸ, ᅟᅠᆻ처럼 모양이 다르게 나오기도 합니다.
또, 이러한 방식으로 '다중 문자를 너무 길게 입력해서',
ist 파일을 만들어 적용하는 경우에는,
키보드가 일시적으로 먹통이 되는 현상이 생길 수도 있습니다.
2) 한글 조합 - 세벌식 (H3)
여기에서 초성, 중성, 종성 중 하나를 넣고 '확인'을 누르시면,
해당하는 낱자가 바로 입력됩니다.
초성 ㄱ은 H3|G_
모음 ㅏ는 H3|A_
받침 ㄱ은 H3|_G
로 입력됩니다.
기본적으로 한글 낱자를 입력할 때는,
이러한 방식으로 입력하시면 됩니다.
2. 상태변수
상태변수 칸에 아래와 같이 입력해서,
'특정 상태에서 입력되는 글쇠'를 확인할 수 있습니다.
P: Caps Lock
글쇠배열 상태변수에 'P=1'을 넣으면,
'Caps Lock이 켜진 상태'에서의 글쇠가 표시됩니다.
N: Num Lock
이건 키보드에 버튼이 없어서 테스트가 안 되는데요.
설명에는 Num Lock이 켜지면 N=1,
Scroll Lock이 켜지면 N=2,
둘 다 켜지면 N=3으로 설정하는 것 같네요.
D, E, F: 한글을 조합 중인 경우 각 성분
초성, 중성, 중성이 조합 중일 때 다음에 뭐가 입력되는지 나옵니다.
D=1로 넣으면 초성이 조합 상태일 때,
E=1로 넣으면 중성이 조합 상태일 때,
F=1로 넣으면 종성이 조합 상태일 때,
다음에 글쇠를 누르면 뭐가 입력되는지 나오고요.
D=1, E=1로 넣으면 초성과 중성이 조합 상태일 때,
다음에 뭐가 입력되는지 나옵니다.
T: 문자 생성기의 상태 번호
오토마타의 상태 값에 따라서,
입력되는 글쇠가 바뀔 경우에 사용하게 됩니다.
G~Z: 변수
'변숫값에 따라 글쇠가 바뀌는 경우'에는,
G=1, H=0, H=1 등을 넣어 해당 변숫값에 따라 바뀌는 글쇠가 표시됩니다.
대신에 모든 알파벳이 되는 것은 아니고,
'사용되지 않는 알파벳'만 사용이 가능합니다.
예를 들자면 D, E, F는 초성, 중성, 종성에 사용되기에,
변수로 사용할 수 없습니다.
특정한 값에 따라 글쇠가 바뀌는 경우에는,
'상태변수를 넣고' 작업하시면,
더욱 쉽게 구분이 가능합니다.
3. 수식 작성 기본 지식
D: 초성
E: 중성
F: 종성
T: 오토마타 상태 값
=: 변수에 특정 값을 입력
==: 앞과 뒤의 값이 동일하면
!: 값이 0 또는 입력되지 않음
&&: A 그리고 B 모두 만족해야
|| : A 또는 B 하나만 만족해도
간단하게 위에 있는 것들만 외우셔도,
충분하실 것으로 생각합니다.
공세벌식의 경우는 별다른 수식이 필요하지 않지만,
신세벌식의 경우는 '갈마들이 방식'을 사용하기에 수식이 필요합니다.
이것 역시도 몇 가지 패턴만 외우시면 되는데요.
이것을 '조건문'이라고 생각하시면 됩니다.
※더욱 자세한 사항은 아래를 참고하세요.
DS1TPT님의 수식 작성 가이드:
https://cafe.daum.net/3bulsik/6CY8/384
4. 수식 만들기
갈마들이에 들어있는 수식을 직접 한번 보겠습니다.
아래는 모음 ㅑ에 있는 수식인데요.
D&&!E&&!F ? H3|YA : H3|_N
D가 있고, E가 없고(!), F가 없고(!), 셋 다 만족하면(&&) H3|YA,
그렇지 않으면 H3|_N이 입력된다는 뜻입니다.
즉, D는 초성, E는 중성, F는 종성을 뜻하기에,
초성이 있고, 중성이 없고, 종성이 없으면 모음 ㅑ,
그렇지 않으면(초성이 없거나, 중성이 있거나, 종성이 있으면) 받침 ㄴ이 입력됩니다.
이러한 형태가 갈마들이 방식에 쓰이는 수식인데요.
같은 자리에 모음과 받침의 수식이 함께 있고,
'조건에 따라 모음 또는 받침'이 붙는 조건문임을 알 수 있습니다.
단, 형태가 조금 다른 것도 있는데요.
ㅏ, ㅓ, ㅐ, ㅔ, ㅣ의 5가지 모음은 예외에 해당합니다.
왜냐하면 이 5가지 모음은,
모음 조합 ㅗ, ㅜ와 결합하기 때문입니다.
5. 모음 조합 ㅗ, ㅜ의 수식
일단은 모음 조합 ㅗ, ㅜ에 해당하는 수식을 먼저 알아보겠습니다.
/의 자리에 있는 모음 조합 ㅗ는,
D&&!E&&!F ? H3|0x1F50000 : H3|K_
O의 자리에는 있는 모음 조합 ㅜ는,
D&&!E&&!F ? H3|0x1F60000 : H3|C_
로 설정되어 있습니다.
모음 조합 ㅗ의 수식은 다음과 같은데요.
D&&!E&&!F ? H3|0x1F50000 : H3|K_
D가 있고, E가 없고(!), F가 없으면(!), 셋 다 만족하면(&&) H3|0x1F50000,
그렇지 않으면 H3|K_가 입력된다는 뜻입니다.
즉, 초성이 있고, 중성이 없고, 종성이 없으면 H3|0x1F50000,
그렇지 않으면(초성이 없거나, 중성이 있거나, 종성이 있으면),
초성 ㅋ이 입력됩니다.
이걸 다음과 같은 수식으로 바꿔서 적을 수도 있는데요.
기능은 위의 수식과 똑같습니다.
!T || E || F ? H3|K_ : H3|0x1F50000
T가 0이거나(!), E가 있거나, F가 있으면, 셋 중 하나라도 만족하면(||) H3|K_,
그렇지 않으면 H3|0x1F50000가 입력된다는 뜻입니다.
즉, 오토마타 상태 값이 0(초기 상태)이거나, 중성이 있거나, 종성이 있으면 초성 ㅋ,
그렇지 않으면 H3|0x1F50000이 입력됩니다.
※참고로 !T는 T==0으로 표기할 수 있습니다.
6. 가상 낱자 설정
여기까지는 어렵지 않은데요.
H3|0x1F50000가 문제입니다.
이게 무얼 뜻할까요?
ASCII(10진수) 501의 경우,
ASCII(16진수)로 전환하면 01F5이 나옵니다.
즉, H3|0x1F50000은,
'501이라는 가상의 낱자'가 입력된다는 말입니다.
그럼, 이 가상의 낱자에 무엇이 입력되는지가 문제인데요.
'낱자 처리'에 들어가서 '중성'을 선택하고,
항목을 '가상 낱자 대응 규칙'으로 바꾸면,
가상 낱자에 대응하는 한글 낱자를 설정할 수 있습니다.
입력에 글쇠를 넣고 다른 글쇠로 전환되게 '추가'하시면 됩니다.
하지만, 가상 낱자 501을 어떻게 입력하는지가 문제인데요.
그냥 501이라는 숫자를 메모장 등 아무 곳에나 써서,
'해당 텍스트를 복사'한 다음에,
붙여넣기를 해서 넣으시면 됩니다.
그리고 가상 낱자 501에 모음 ㅗ를 설정하고 '추가'하게 되면,
H3|0x1F50000이 찍힐 때 모음 ㅗ가 나타나게 됩니다.
H3|0x1F60000의 경우도 마찬가지입니다.
ASCII(10진수) 502를,
ASCII(16진수)로 전환하면 01F6이 나오는데요.
즉, H3|0x1F60000은,
'502라는 가상의 낱자'가 입력된다는 말입니다.
위와 마찬가지로 가상 낱자 502에 모음 ㅜ를 설정하고 '추가'하게 되면,
H3|0x1F60000이 찍힐 때 모음 ㅜ가 나타나게 됩니다.
그리고 낱자 처리에서 '낱자 결합 규칙'을 만들어야,
생성한 가상 낱자가 다른 모음과 결합하게 되는데요.
입력에 501, 502 숫자를 복사해서 붙여 넣고 규칙을 추가하시면 됩니다.
※이러한 방식을 사용하는 이유는,
다른 모음과의 결합 때문에 그렇습니다.
신세벌식의 경우는 '모음과 받침이 같은 자리를 사용하기에',
만일, 모음과 다른 글쇠가 조합된다면,
모음 대신에 받침이 먼저 붙게 되는데요.
이렇게 가상 낱자 방식을 사용해 '낱자 결합 규칙'을 만들면,
받침 대신에 모음과 먼저 결합하게 됩니다.
7. 모음 조합 ㅗ, ㅜ와 결합하는 수식
모음 조합 ㅗ와 붙을 수 있는 모음:
ㅏ, ㅐ, ㅣ
모음 조합 ㅜ와 붙을 수 있는 모음:
ㅓ, ㅔ, ㅣ
모음 조합 ㅗ가 붙든 ㅜ가 붙든,
수식은 기본적으로 동일한데요.
E==501, 또는 E==502로,
붙을 수 있는 모음에 해당하는 값만 달라집니다.
그리고 모음 ㅣ는 모음 조합 ㅗ, ㅜ 모두와 결합하니,
수식이 약간 달라집니다.
다음은 모음 ㅏ에 들어있는 수식입니다.
D&&!F&&(!E || E==501) ? H3|A_ : H3|_P
괄호가 들어가면서 수식이 더 복잡하게 보이는데요.
괄호 안에 들어있는 수식은 앞의 내용에 종속됩니다.
즉, '앞의 내용을 모두 만족하면서',
괄호 안에 있는 내용 역시도 만족해야 합니다.
해석하면 이렇습니다.
D가 있고, F가 없고(!), 이걸 모두 만족하고(&&),
E가 없거나(!) E의 값이 501이면(==), 둘 중 하나를 만족하면(||) H3|A_,
그렇지 않으면 H3|_P가 입력된다는 뜻입니다.
즉, 초성이 있고, 종성이 없는 걸 모두 만족하고,
중성이 없거나 중성의 값이 501이면 모음 ㅏ,
그렇지 않으면 받침 ㅍ이 입력됩니다.
여기에서 중성의 값이 501이란 것은,
앞서 가상 낱자 501에 설정한 모음 조합 ㅗ를 뜻합니다.
만일, 모음 조합 ㅜ와 결합하는 경우라면,
앞서 가상 낱자 502에 모음 조합 ㅜ를 설정했으니,
중성의 값만 502로 바꿔주시면 됩니다.
즉, 모음 ㅏ, ㅐ의 경우에는 모음 조합 ㅗ와 결합하니,
D&&!F&&(!E || E==501) 수식을 사용하시면 되고…
모음 ㅓ, ㅔ의 경우에는 모음 조합 ㅜ와 결합하니,
D&&!F&&(!E || E==502) 수식을 사용하시면 됩니다.
즉, 수식은 같은데 '결합하는 모음의 값'만 다르게 설정합니다.
하지만 모음 ㅣ의 수식은 아래와 같이 형태가 조금 다른데요.
D&&!F&&(!E || E>500&&E<504) ? H3|I_ : H3|_K
이것은 모음 ㅣ가 모음 조합 ㅗ, ㅜ 모두와 결합하기에 그렇습니다.
해석하면 이렇습니다.
D가 있고, F가 없고(!), 두 조건을 모두 만족하고(&&),
E가 없거나(!) E의 값이 501~503이면, 둘 중 하나를 만족하면(||) H3|I_,
그렇지 않으면 H3|_K가 입력된다는 뜻입니다.
즉, 초성이 있고, 종성이 없는 걸 모두 만족하고,
중성이 없거나 중성의 값이 501~503이면 모음 ㅣ,
그렇지 않으면 받침 ㅋ이 입력됩니다.
여기에서 중성의 값에 503이 포함된 이유는,
가상 낱자 503에 아래아를 설정해서 그렇습니다.
여기까지가 갈마들이 방식으로 자판을 만드는 데 있어서,
필요한 수식 전부라고 봐도 무방합니다.
8. 갈마들이 수식 정리
다음과 같이 몇 가지 형태로 구분이 가능합니다.
기본적으로 모음에 쓰이는 수식은,
D&&!E&&!F ? 모음 : 받침
모음 조합 ㅗ(가상 낱자 501)는,
D&&!E&&!F ? H3|0x1F50000 : 초성
모음 조합 ㅜ(가상 낱자 502)는,
D&&!E&&!F ? H3|0x1F60000 : 초성
모음 조합 ㅗ와 붙는 모음 ㅏ, ㅐ는,
D&&!F&&(!E || E==501) ? 모음 : 받침
모음 조합 ㅜ와 붙는 모음 ㅓ, ㅔ는,
D&&!F&&(!E || E==502) ? 모음 : 받침
모음 조합 ㅗ, ㅜ와 모두 붙는 모음 ㅣ는, (*아래아까지 포함)
D&&!F&&(!E || E>500&&E<504) ? 모음 : 받침
※참고로 ASCII(10진수)를 ASCII(16진수)로 바꿔서 적을 수도 있습니다.
500=0x1F4, 501=0x1F5, 502=0x1F6, 503=0x1F7, 504=0x1F8, 505=0x1F9
9. 특정 낱자에서 다른 글쇠가 입력되게 설정
그 외에 특정 초성·중성·종성이 나왔을 때,
다른 글쇠가 나오게 설정할 수 있는데요.
이때 초성·중성·종성의 값은,
날개셋 편집기 - '계산기'를 눌러서,
계산기 창이 뜨면…
상수 명칭에서 '날개셋문자'를 선택하고,
계산식에 낱자를 넣어 '계산'을 누르시면 값이 나옵니다.
그 값을 넣어서 수식을 작성하시면 됩니다.
F==0x24 || F==0x6D ? H3|_B
위의 수식은 받침 ㄹ 또는 받침 ㅅ이 나올 경우,
받침 ㅂ이 나오면서 겹받침으로 결합하는 수식입니다.
물론, 낱자 처리에서 '낱자 결합 규칙'이 지정되어 있어야,
겹받침으로 결합이 가능합니다.
그리고 이 뒷부분에 기본 수식을 넣으면,
특정 초성·중성·종성이 나올 때의 글쇠와,
기본적으로 적용되는 수식을 함께 사용할 수 있습니다.
F==0x24 || F==0x6D ? H3|_B : 기본 수식
아래는 숫자 3자리에 있는 수식인데요.
F==0x24 || F==0x6D ? H3|_B : D&&!E&&!F ? H3|YE : E&&!F ? H3|_B : 0x33
위와 같이 길게 나오지만,
하나씩 끊어서 보시면 됩니다.
F==0x24 || F==0x6D ? H3|_B :
종성 ㄹ 또는 ㅅ이 나올 경우에,
종성 ㅂ을 입력,
아닐 경우 다음 수식으로 넘어감
D&&!E&&!F ? H3|YE :
초성이 있고, 중성이 없고, 종성이 없으면,
모음 ㅖ를 입력,
아닐 경우 다음 수식으로 넘어감
E&&!F ? H3|_B :
중성이 있고, 종성이 없으면,
받침 ㅂ을 입력,
아닐 경우 다음 수식으로 넘어감
0x33
앞의 수식에 전부 해당하지 않을 때는,
숫자 3을 입력
이렇게 '특정 초성·중성·종성이 나올 때의 수식'과,
'모음이 붙는 수식'과 '받침이 붙는 수식'을 결합해서 사용하실 수 있습니다.
첫댓글 본문에 보충 설명으로, 날개셋 제어판의 각 입력기 계층에서 편집하고 싶은 세벌식 레이아웃 > 오토마타를 들어가면(*댓글에 첨부한 이미지 참고) 본인이 지정하는 초중종성 조합 상태를 지정할 수 있습니다. 이를 글쇠배열 > 각 글쇠의 글쇠 수식 편집 창에서 T 변수로 소환할 수 있습니다. 예를 들어 글쇠 수식을 (T==0 || T==1 || T==2 || (T==3 && E==0x1F4) || T==5) ? C0|0xE : H3|_SS 이라고 작성하면, 이 수식은 한국말로 풀어쓰면 "이 글쇠 자리는, 오토마타 상태 T가 0 혹은 1 혹은 2이거나 3이면서 중성이 0x1F4(*hex로 0x1F4은 decimal로 500과 동의어)이거나 T가 5일때 타건했을 시에 C0|0xE 글쇠(*특수글쇠로 조합 중단(뒤))를 출력하라. 그게 아닌 경우에 타건시에는 H3|_SS 글쇠(*세벌식으로 종성 ㅆ)를 출력하라."라는 뜻입니다. 이런 식으로 오토마타 상태 변수 T 목록을 미리 설정한 후 글쇠 수식에서 T값을 소환하여 사용하면, 수식을 더 깔끔하게 단축시킬 수 있고 수식 관리가 간편해집니다.
글쇠 수식을 사용하다보면 각 초성, 중성, 종성 글쇠 및 특수기호, 특수글쇠 낱자들에 대한 decimal, hex, H3|..식의 표현을 두루두루 꺼내 쓸 수 있어야 합니다. 이런 건 엑셀을 사용하면 좋습니다. hex값을 알기 위해서 DEC2HEX함수(*decimal값=>hex값으로 대응시켜주는 함수)를 사용하고, H3|.. 표현은 날개셋 편집기의 글쇠 수식 편집창에서 ... 단추 누르고 들어가서 각 세벌식(H3) 입력 문자들의 키 값을 알 수 있습니다. 이걸로 엑셀 표 list를 만들면 두고두고 쓸만 합니다. 물론 본문의 9.번 내용처럼 계산기 참고해도 됩니다.
그렇게 오토마타에 설정해 두고,
불러와서 쓰는 방법도 있었군요.
아직은 좀 어렵게 느껴지네요.
그리고 !T가 조합 상태가 아닐 때라고만 생각했는데,
오토마타 상태 값이 0(초기 상태)이란 뜻이었군요.
초성, 중성, 종성 등을 엑셀에 정리해 두면,
필요할 때 쉽게 찾아서 꺼내 쓸 수 있겠네요.
이번에도 유용한 정보를 많이 알려주셔서 감사합니다.
@보름달 https://cafe.daum.net/3bulsik/5rKc/263?svc=cafeapi
글쇠들의 코드 list를 새로 작성하시기 번거로우실거 같아 제가 작성하여 사용하고 있는 코드 list를 엑셀 파일로 제공드립니다.