한영타 변환기

"dkssud"처럼 키보드 모드를 착각해서 친 글자를 원래 의도한 한글이나 영타로 바꿔보세요. 입력하는 즉시 변환됩니다.

예시 넣기:

한영타 오타는 왜 생기고, 무엇을 되돌리는 건가요?

한국어 PC 자판에서 한글과 영문은 같은 물리 키를 공유합니다. 키보드의 ㅇ 자리에는 알파벳 D가, ㅏ 자리에는 K가 함께 새겨져 있고, 어떤 글자가 나올지는 한/영 전환 상태가 결정합니다. 그래서 한글 모드라고 믿고 "안녕"을 쳤는데 영문 모드였다면 화면에는 dkssud가 찍힙니다. 눌린 물리 키의 순서는 같으므로, 키 배치표만 알면 의도한 글자를 복원할 수 있습니다. 이 변환기는 그 복원 과정을 자동화한 것이며, 반대로 한글 문장을 "그 글자를 치려면 어떤 키를 눌러야 하는지"로 바꾸는 역방향(한글 → 영타)도 지원합니다.

여기서 다루는 배열은 두벌식 표준 자판(KS X 5002)입니다. 윈도우·맥·안드로이드·iOS의 기본 한글 키보드 대부분이 이 배열을 씁니다. 세벌식(390, 최종)이나 천지인·나랏글 같은 휴대폰 방식은 키와 글자의 대응이 전혀 다르므로 이 도구로 되돌릴 수 없습니다.

두벌식 자판 배치표

두벌식은 "자음 한 벌, 모음 한 벌"이라는 뜻입니다. 왼손 쪽에 자음, 오른손 쪽에 모음을 배치해 양손을 번갈아 치게 만든 구조입니다. 알파벳 26개 키가 모두 자모에 대응하며(자음 키 14개, 모음 키 12개), Shift를 함께 누르면 일부 키는 된소리 자음이나 이중 모음으로 바뀝니다. 아래 표는 이 페이지의 변환 테이블에서 빌드 시 그대로 뽑아낸 것입니다.

줄키 = 기본 / Shift
윗줄Q=ㅂ/ㅃ W=ㅈ/ㅉ E=ㄷ/ㄸ R=ㄱ/ㄲ T=ㅅ/ㅆ Y=ㅛ U=ㅕ I=ㅑ O=ㅐ/ㅒ P=ㅔ/ㅖ
가운뎃줄A=ㅁ S=ㄴ D=ㅇ F=ㄹ G=ㅎ H=ㅗ J=ㅓ K=ㅏ L=ㅣ
아랫줄Z=ㅋ X=ㅌ C=ㅊ V=ㅍ B=ㅠ N=ㅜ M=ㅡ

Shift가 의미를 갖는 키는 Q·W·E·R·T(ㅃ·ㅉ·ㄸ·ㄲ·ㅆ)와 O·P(ㅒ·ㅖ) 일곱 개뿐입니다. 나머지 키(예: K, S)는 Shift를 눌러도 기본 자모(ㅏ, ㄴ)가 그대로 나옵니다. 그래서 이 변환기는 대문자 K를 만나면 소문자 k와 같은 ㅏ로 처리합니다.

영문 키 → 한글 음절 조합 알고리즘

키 하나하나를 자모로 바꾸는 것까지는 표 한 장이면 됩니다. 어려운 부분은 "이 자모가 앞 글자의 받침인지, 다음 글자의 첫 자음인지"를 정하는 조합 단계입니다. 입력기는 글자를 쓰는 중에도 한 글자씩 상태(초성 → 중성 → 종성)를 갖는 작은 상태 기계로 동작하고, 이 변환기도 같은 규칙을 따릅니다.

  1. 자음이 오면: 지금 만드는 글자가 없으면 초성으로 시작합니다. 초성만 있고 모음이 아직 없으면 앞 자음은 홀로 확정되고 새 글자를 시작합니다(예: "ㄱㄴ").
  2. 초성 + 모음이 있는 상태에서 자음이 오면: 일단 받침(종성)으로 붙입니다. 단 ㄸ·ㅃ·ㅉ은 받침이 될 수 없으므로 새 글자의 초성이 됩니다.
  3. 받침이 이미 있는데 자음이 또 오면: 두 자음이 표준 겹받침 11종 중 하나를 이루면 합치고, 아니면 앞 글자를 확정한 뒤 새 글자의 초성으로 시작합니다.
  4. 받침이 있는 상태에서 모음이 오면: 받침이 다음 글자의 초성으로 이동합니다. 겹받침이었다면 뒤쪽 자음만 이동하고 앞쪽은 받침으로 남습니다.
  5. 모음이 연달아 오면: 표준 겹모음 7종(ㅘㅙㅚㅝㅞㅟㅢ)이 되는 조합이면 합치고, 아니면 앞 글자를 확정합니다.
  6. 숫자, 공백, 줄바꿈, 문장부호처럼 자모가 아닌 문자는 현재 글자를 확정시키고 그대로 출력합니다.

음절의 최종 코드 값은 유니코드 한글 음절 영역(U+AC00부터 U+D7A3까지, 총 11,172자)에서0xAC00 + (초성 번호 × 21 + 중성 번호) × 28 + 종성 번호 공식으로 계산합니다. 초성은 19종, 중성은 21종, 종성은 "받침 없음"을 포함해 28종이기 때문입니다. 반대로 한글 → 영타 변환은 이 식을 거꾸로 풀어 초성·중성·종성 번호를 구하고, 각각을 위의 키 표로 바꿉니다. 아래 표는 빌드 시 위 공식으로 계산한 결과입니다.

글자초성(번호)중성(번호)종성(번호)누르는 키코드 값
한ㅎ (18)ㅏ (0)ㄴ (4)gksU+D55C
닭ㄷ (3)ㅏ (0)ㄺ (9)ekfrU+B2ED
왜ㅇ (11)ㅙ (10)없음 (0)dhoU+C65C
꽃ㄲ (1)ㅗ (8)ㅊ (23)RhcU+AF43
뷁ㅂ (7)ㅞ (15)ㄺ (9)qnpfrU+BDC1

예를 들어 "한"은 ㅎ(18번)·ㅏ(0번)·ㄴ(4번)이므로 (18 × 21 + 0) × 28 + 4 = 10,588이고, 여기에 0xAC00(44,032)을 더하면 54,620으로 16진수 D55C, 즉 U+D55C입니다. 키로는 g·k·s를 순서대로 누른 것과 같습니다.

겹모음과 겹받침 처리

두벌식에는 겹모음·겹받침 전용 키가 없습니다. 이미 있는 키를 연달아 눌러 합성하는 방식이므로, 변환기도 "키 두 개가 한 자모가 되는 경우"를 알고 있어야 합니다. 아래 두 표는 변환기가 쓰는 합성 규칙입니다.

겹모음구성누르는 키
ㅘㅗ + ㅏhk
ㅙㅗ + ㅐho
ㅚㅗ + ㅣhl
ㅝㅜ + ㅓnj
ㅞㅜ + ㅔnp
ㅟㅜ + ㅣnl
ㅢㅡ + ㅣml

ㅐ(o)와 ㅔ(p)가 단독 모음이라는 점에 유의하세요. ㅗ 뒤에 ㅔ(p)를 이어도 합성 규칙에 없으므로 "dhp"는 "왜"가 아니라 "오ㅔ"로 남고, "웨"를 만들려면 ㅜ(n) 뒤에 ㅔ(p)를 이어 "dnp"로 쳐야 합니다. "왜"는 ㅗ+ㅐ이므로 "dho"입니다.

겹받침구성누르는 키
ㄳㄱ + ㅅrt
ㄵㄴ + ㅈsw
ㄶㄴ + ㅎsg
ㄺㄹ + ㄱfr
ㄻㄹ + ㅁfa
ㄼㄹ + ㅂfq
ㄽㄹ + ㅅft
ㄾㄹ + ㅌfx
ㄿㄹ + ㅍfv
ㅀㄹ + ㅎfg
ㅄㅂ + ㅅqt

겹받침은 11종입니다. 한편 ㄲ·ㅆ은 겹받침이 아니라 쌍자음 받침이라 Shift 키(R, T)로 한 번에 입력하며, "rr"을 눌러도 ㄲ이 되지 않는다는 점이 흔한 함정입니다. 변환기는 "rkrr"을 "각ㄱ"으로, "rkRr"을 "갂ㄱ"으로 변환합니다.

검산 예시 (직접 실행해 확인한 값)

입력한 키변환 결과볼 점
dkssud안녕ㅇㅏㄴ + ㄴㅕㅇ. 받침 ㄴ 뒤에 ㄴ이 오지만 ㄴㄴ은 겹받침이 아니므로 새 글자의 초성이 됨
dkssudgktpdy안녕하세요문장 전체가 한 줄로 이어져도 정확히 복원
ekfr닭ㄹ+ㄱ이 겹받침 ㄺ으로 합쳐짐
ekfrk달가뒤에 모음이 오면 겹받침이 쪼개져 ㄱ만 다음 글자로 이동
rkrt갃키가 여기서 끝나면 ㄱ+ㅅ이 겹받침 ㄳ
rkrtk각사같은 키에 모음 하나가 더 붙으면 ㅅ이 다음 글자로 이동
rkqtdl값이ㅇ+ㅣ는 초성이므로 받침 ㅄ이 그대로 유지
rhkdwk광자ㅗ+ㅏ가 ㅘ로 합성, 받침 ㅇ 뒤의 ㅈ+ㅏ는 새 글자
dho / dhl / dhk왜 / 외 / 와모음 한 글자 차이로 전혀 다른 글자
Rkskek까나다Shift+R이 쌍자음 ㄲ
ahrrjtjqjrl목거서버기"rr"은 ㄲ이 아니라 받침 ㄱ + 다음 글자 초성 ㄱ

역방향 검산도 했습니다. 안녕 → dkssud, 닭 → ekfr, 값 → rkqt, 읽다 → dlfrek, 읊 → dmfv, 꽃 → Rhc, 뷁 → qnpfr 로 바뀌고, 이 키 문자열을 다시 영타 → 한글로 돌리면 모두 원래 글자가 돌아옵니다. 왕복 결과가 맞는다는 것은 조합 로직이 서로 모순되지 않는다는 가장 단순한 증거입니다.

변환 로직의 세부 규칙

변환이 의도와 달라지는 경계 사례

이런 상황에서 활용하세요

한영 전환을 자주 실수한다면 변환보다 키보드 언어 전환 방법을 점검해 단축키를 손에 맞게 바꾸는 편이 낫고, 키보드 배열 자체가 궁금하다면 키보드 배열 안내가 도움이 됩니다. 완성된 한글에서 초성만 뽑으려면 초성 변환기를, 한글을 자모 단위로 풀고 합치려면한글 자모 분리·결합기를, 유니코드 정규화(NFC/NFD) 문제는한글 NFC 변환을 이용하세요.

자주 묻는 질문

숫자나 특수문자가 섞여 있어도 변환되나요?

네. 두벌식 자음·모음 키에 해당하지 않는 문자(숫자, 공백, 특수문자, 줄바꿈 등)는 변환하지 않고 그대로 유지하며, 그 문자를 만나면 앞에서 조합하던 글자는 확정됩니다.

세벌식이나 다른 자판 배열도 지원하나요?

현재는 가장 널리 쓰이는 두벌식(KS X 5002) 자판 배열만 지원합니다. 세벌식, 천지인·나랏글 같은 휴대폰 자판은 키와 글자의 대응이 다르므로 결과가 맞지 않습니다.

"rr"을 쳤는데 왜 ㄲ이 아니라 ㄱㄱ으로 나오나요?

두벌식에서 ㄲ은 Shift+r(대문자 R)로 입력하는 별도 자모입니다. 소문자 r을 두 번 누르면 ㄱ이 두 번 입력될 뿐이라 합쳐지지 않습니다. ㄸ(E), ㅃ(Q), ㅆ(T), ㅉ(W)도 마찬가지입니다.

겹받침 뒤에 모음이 오면 왜 글자가 쪼개지나요?

한글 맞춤법은 받침의 뒤쪽 자음을 뒤 글자의 초성으로 읽고 쓰기 때문입니다. "닭"(ekfr) 뒤에 ㅏ(k)가 오면 "달가"가 되어 ㄹ은 앞 글자 받침에 남고 ㄱ만 새 글자의 초성이 됩니다. 입력기와 이 변환기 모두 같은 방식으로 재조합합니다.

대문자 K, S 같은 입력도 한글로 바뀌나요?

네. 두벌식에서 Shift에 별도 자모가 없는 키는 대문자도 소문자와 같은 자모를 냅니다. 그래서 "K"는 ㅏ, "S"는 ㄴ으로 변환합니다. Shift 효과가 있는 R·E·Q·T·W·O·P만 별도 자모(ㄲ·ㄸ·ㅃ·ㅆ·ㅉ·ㅒ·ㅖ)가 됩니다.

입력한 내용이 서버로 전송되나요?

아니요. 모든 변환은 브라우저 안에서 자바스크립트로만 처리되며 입력한 글자는 외부로 전송되지 않습니다. 다만 비밀번호처럼 민감한 문자열은 공용 컴퓨터에서 입력하지 않는 것이 좋습니다.