가상 키보드
화면 키보드로 다른 언어 입력. 각국의 실제 자판 배열, 위치 기반 대응, 죽은 키와 AltGr 층, 한글 음절 조합, 일본어 로마자 입력까지 모두 브라우저 안에서.
화살표 키로 화면의 키 사이를 옮기고 Enter로 그 키를 누릅니다. Tab은 키보드를 빠져나가며, 쓰고 있는 키보드는 텍스트 상자에 바로 입력합니다.
물리 키는 위치로 대응됩니다. 각 키는 선택한 배열이 그 자리에 두는 문자를 입력하며, 시스템 배열과는 무관합니다. 캡처는 텍스트 상자에 포커스가 있는 동안에만 적용되고 Ctrl+C, Tab, 화살표 키는 그대로 동작합니다.
자판이 입력하는 것은 낱자모입니다. 자음과 모음이 하나씩 들어오면 치는 동안 음절 블록으로 모입니다 — ㅎ, ㅏ, ㄴ이 모여 한이 됩니다. 백스페이스는 음절 전체를 지우지 않고 조합 중인 블록에서 자모를 하나씩 되돌리며, 뒤에 모음이 오면 받침은 다음 블록으로 넘어갑니다.
도구 하나, 열세 개 언어
이 키보드는 이 사이트가 쓰인 열세 개 언어를 입력하며, 각 언어마다 그 언어 사용자들이 실제로 쓰는 배열을 보여줍니다. 선택 규칙은 단순합니다. 화자가 가장 많은 나라의 표준 배열입니다. 히브리어는 SI-1452 표준, 프랑스어는 AZERTY, 독일어는 QWERTZ, 러시아어는 ЙЦУКЕН, 스페인어는 라틴아메리카 배열, 포르투갈어는 브라질 ABNT2, 터키어는 Turkish Q, 일본어는 JIS 가나 배열, 한국어는 두벌식입니다. 선택 목록은 각 배열을 그 언어 자신의 이름으로 표기합니다. 자기 언어를 찾는 독자는 어떤 인터페이스 언어에서든 그 자칭 이름을 알아보기 때문입니다.
한 항목은 일부러 심심합니다. 인도네시아어입니다. 인도네시아에는 국가 표준 키보드 배열이 없어서 영어와 같은 US QWERTY로 입력합니다. 정직한 답은 어떤 인도네시아인도 본 적 없는 배열을 지어내는 대신 그 사실을 그대로 말하는 것입니다. 도구는 읽고 있는 페이지 언어의 배열로 열리고, 언제든 다른 배열로 바꿀 수 있으며, 바꿔도 이미 입력한 텍스트는 그대로 남습니다.
위치 매핑: 내 시스템 배열은 상관없다
물리 키보드로 입력하면 도구는 각 키를 자판 위의 위치로 읽습니다. 운영체제가 그 키의 문자라고 여기는 것은 결코 보지 않습니다. 스페이스바에서 두 줄 위, J 바로 오른쪽 키 — K 위치 — 는 US QWERTY에서는 k를, 히브리어 배열에서는 ל를 입력합니다. 컴퓨터에 어떤 배열이 설치되어 있든 같습니다. 이 뒤집기가 핵심입니다. 도구가 운영체제 말을 들었다면 당신 자신의 배열을 메아리처럼 돌려줄 뿐이고, 설치하지 않은 언어는 영원히 입력할 수 없었을 것입니다.
화면 키 클릭과 물리 키 누름은 정확히 같은 기계 장치를 통과하므로, 둘이 키의 동작에 대해 어긋날 수 없습니다. 물리로 입력하는 동안 누른 키가 화면 키보드에서 빛납니다. 낯선 배열의 문자들이 어디에 사는지는 이렇게 배웁니다. 예전에 키보드에 붙이던 인쇄 스티커가 가르쳐 주던 방식 그대로입니다.
캡처는 일부러 좁게 잡았습니다. 물리 키는 텍스트 상자에 포커스가 있는 동안에만 읽히므로 페이지의 나머지는 평소처럼 동작합니다. Ctrl+C, Ctrl+V, Ctrl+A, Ctrl+Z 같은 단축키는 화살표 키, Home, End, Delete와 마찬가지로 브라우저로 그대로 통과합니다. 그리고 Tab은 절대 삼켜지지 않습니다. Tab을 먹는 도구는 키보드로 페이지를 이동하는 사람을 가둬 버리기 때문입니다.
물리 키보드에 모자랄 수 있는 것은 키 자체입니다. 여기 실린 유럽 배열은 ISO 규격 보드라, 왼쪽 Shift와 맨 아랫줄 첫 글자 사이에 102번째 키가 있고 브라질 ABNT2는 오른쪽 Shift 옆에 49번째 키를 더 둡니다. 미국식 ANSI 키보드에는 둘 다 없어서 아무리 눌러도 닿지 않습니다. 다만 화면 키보드에는 다른 키와 똑같이 그려져 있고, 클릭하면 배열이 그 자리에 둔 문자가 그대로 입력됩니다. 배열 안에 닿을 수 없는 것은 없습니다. 맞지 않는 보드에서는 그 일부가 마우스 전용이 될 뿐입니다.
레이어: Shift, Caps Lock, AltGr, 데드 키
실제 키보드는 키 수보다 많은 문자를 입력하는데, 그것은 레이어로 이뤄집니다. Shift를 누른 채 치면 Shift 레이어가 입력됩니다. 반면 화면의 Shift를 클릭하면 정확히 한 글자만큼만 걸립니다. 어디서나 화면 키보드가 그렇게 동작합니다. Caps Lock은 흔히 생각하는 것보다 좁게 작동합니다. Shift 레이어가 정말로 기본 글자의 대문자인 키만 대문자로 바꾸므로 a는 A가 되지만 1이 !가 되는 일은 없습니다. 대소문자 구분이 아예 없는 문자 — 히브리어가 그렇습니다 — 에서는 Caps Lock이 아무것도 하지 않으며, 실제 히브리어 키보드도 똑같습니다.
유럽 배열들은 AltGr로 닿는 셋째 레이어를 지니는데, @나 €, 괄호 쌍 같은 문자가 거기에 삽니다. 그리고 표준 동작을 따르는 데드 키가 있습니다. 악센트 기호를 누른 다음 글자를 누르면 둘이 합성되고, 데드 키 다음에 스페이스를 누르면 기호 자체가 나오며, 악센트가 붙을 수 없는 글자는 그냥 그 뒤에 옵니다. 대기 중인 데드 키는 화면 키보드에 표시되어, 두 타건 사이의 침묵이 혼란이 아니라 눈에 보이는 것이 됩니다.
히브리어의 두 가지 세부는 버그처럼 보이지만 표준 그 자체입니다. 이 배열은 짝을 이루는 구분 기호를 거울처럼 뒤집습니다. US QWERTY가 (를 내는 자리에서 Shift+9는 )를 입력합니다. 표준이 대응시키는 것은 논리적 문자이고, 양방향 텍스트 알고리즘이 그릴 때 그것을 다시 거울로 뒤집기 때문입니다. 여는 괄호처럼 보이는 키는 화면에서도 여는 괄호를 만듭니다. 그리고 히브리어나 아랍어를 고르면 텍스트 상자 자체가 오른쪽에서 왼쪽으로 바뀝니다. 방향은 입력되는 텍스트의 것이지, 둘러싼 페이지 언어의 것이 아니기 때문입니다.
일본어와 한국어는 입력 방식이지, 단순한 배열이 아니다
대부분의 언어에서 키보드는 표입니다. 키 위치 하나에 문자 하나. 한국어와 일본어에는 표 이상이 필요합니다. 한국어 두벌식은 자모 — 낱낱의 자음과 모음 — 를 입력하고, 입력 방식이 치는 대로 음절 블록으로 조합합니다. ㅎ 다음 ㅏ 다음 ㄴ이 한이 되고, 겹모음과 겹받침도 같은 방식으로 조립되며, 받침은 뒤에 오는 것이 그렇게 읽는 게 맞을 때 다음 음절로 넘어갑니다. Backspace는 음절을 통째로 지우는 대신 조합을 자모 하나씩 되감습니다. 모든 한국어 입력기가 그렇게 동작하고, 다른 어떤 방식이든 오타 수정을 고문으로 만들기 때문입니다.
일본어는 두 모드로 옵니다. 기본은 물리 키보드의 로마자 입력입니다. ka라고 치면 か가 나타나고, 작은 っ와 ん도 표준대로 처리됩니다. 실제 일본어 입력 대부분이 이 방식으로 이뤄지기 때문입니다. 화면 키보드는 각 키가 음절 하나인 JIS 가나 배열을 보여주고, 정말 그렇게 치는 사람을 위해 위치 기반 JIS 모드도 있습니다. 전환 스위치로 출력을 히라가나와 가타카나 사이에서 바꿉니다.
이 도구가 일부러 하지 않는 것은 가나를 한자로 변환하는 일입니다. 진짜 변환에는 수십만 단어의 사전과 그 위의 순위 모델 — 키보드가 아니라 IME — 이 필요하고, 나쁜 것을 싣는 것은 아예 안 싣는 것보다 나쁩니다. 그럴듯하지만 틀린 텍스트가 알아챌 길 없이 나오게 되니까요. 가나 전용 출력이라는 사실을 여기 분명히 적는 것은, 한계가 발견되는 것이 아니라 이해되게 하기 위해서입니다.
아랍어 키보드, 히브리어 키보드, 러시아어 키보드 — 설치할 것이 없습니다
이 세 가지 요청이 여기서 의미를 갖는 것은 위치 기반 대응 덕분입니다. 아랍어 배열을 고르세요. 목록에는 배열 자신의 이름인 العربية — 101 로 올라 있습니다. 고르는 순간 앞에 놓인 자판의 모든 키가 내 배열이 아니라 그 배열을 상대로 해석됩니다. 미국식 자판에 L, V, P, F, H 로 새겨진 다섯 위치를 이 순서로 누르면, 새겨진 글자가 무엇이든 مرحبا 가 입력됩니다. 내려받는 것도 없고 언어 팩이 추가되지도 않으며 시스템 설정도 건드리지 않으니, 선택기를 되돌리면 내 배열은 있던 그대로입니다.
- 기본 레이어은 글자이며 101 배열입니다. 미국식 자판에 K 로 새겨진 위치가 여기서는 ن 을 칩니다. 히브리 배열에서 ל 을, US QWERTY 에서 k 를 치는 바로 그 위치입니다. 키는 하나, 배열은 셋, 글자도 셋이고, 그중 어느 것도 사용자의 운영체제가 정하지 않습니다.
- Shift 레이어에 사는 것은 대문자가 아니라 단모음입니다. 아랍어에는 대문자가 없어 그 레이어가 비어 있기 때문입니다. 파트하, 담마, 카스라와 그 세 가지 탄윈 형태, 수쿤과 샷다가 그것입니다. 모두 결합 문자여서 앞 글자 위나 아래에 그려질 뿐 홀로 서지 않으니, 글자를 먼저 치고 기호를 나중에 칩니다.
- Shift 레이어은 함자 형태 أ, إ, آ 와 함자를 지닌 람알리프 합자 셋 — 민 합자는 기본 레이어에 있습니다 — 그리고 아랍어 쉼표와 쌍반점과 물음표 ، ؛ ؟ 도 함께 싣습니다. 이들은 ASCII 짝을 뒤집은 것이 아니라 그 자체로 별개의 코드 포인트여서, 입력한 글은 영어가 아니라 아랍어가 쓰이는 방식대로 구두점이 찍힙니다.
- Shift 레이어의 J 위치는 타트윌, 곧 카시다입니다. 소리를 더하는 대신 두 글자의 이음새를 늘이므로, 이것을 담은 낱말은 철자가 달라지지 않은 채 길어집니다.
- AltGr 은 세 번째 레이어을 엽니다. 히브리 배열에는 이 레이어가 아예 없습니다. 숫자 줄은 아랍-인도 숫자 ١٢٣٤٥٦٧٨٩٠ 을 내주고 기본 줄은 1234567890 을 그대로 두므로, 두 숫자 집합은 수정 키 하나 거리에 있습니다. 글자 줄은 아랍어 자판에 여전히 필요한 페르시아어와 우르두어 글자 — پ, چ, ژ, گ, ڤ — 와 아랍어 소수점과 자릿점을 내줍니다.
이 배열에서 고장처럼 보이는 두 가지는 문자 자체를 정직하게 옮긴 결과입니다. Caps Lock 은 아랍어에서도 히브리어에서도 아무 일도 하지 않습니다. Shift 레이어이 기본 글자의 대문자인 키만 다스리는데, 대소문자가 없는 문자에는 그런 키가 자판 어디에도 없기 때문입니다. 그리고 여기에는 데드 키도 조합 단계도 없습니다. 위의 한국어나 일본어와 달리 아랍어 키는 누르는 순간 제 글자를 치므로 완성을 기다리는 것이 없습니다. 히브리 SI-1452 배열과 러시아 ЙЦУКЕН 배열도 같은 목록에서 고르고 똑같은 방식으로 칩니다.
브라우저 안에서 돌아간다
배열은 페이지와 함께 오는 데이터이고 모든 타건은 로컬에서 처리됩니다. 입력한 것은 업로드되거나 저장되거나 기록되지 않습니다. 이는 대부분의 도구보다 입력 도구에서 더 중요합니다. 사람들이 키보드에 치는 것이야말로 대개 그들이 아끼는 바로 그 텍스트이기 때문입니다. 캡처는 텍스트 상자로 한정되므로 도구는 다른 곳에서 눌린 키를 결코 보지 못하고, 탭을 닫으면 아무것도 남지 않습니다.
자주 묻는 질문
- 왜 K 키를 누르면 ל가 입력되나요?
- 키가 운영체제가 보고하는 문자가 아니라 물리적 위치로 매핑되기 때문입니다. 히브리어 배열에서는 K 위치에 ל가 실려 있어서 그것이 입력됩니다. 물리 자판에서도 화면 키보드에서도 똑같습니다. 컴퓨터에 배열이 설치되지 않은 언어를 입력할 수 있는 것은 바로 이 구조 덕분입니다.
- 그 언어가 컴퓨터에 설치되어 있어야 하나요?
- 아니요. 도구는 키의 의미를 운영체제에 묻는 일이 없습니다. 선택된 배열에 대해 스스로 각 키를 해석합니다. 컴퓨터에 어떤 배열이 있든, 필요한 배열이 하나도 없든, 입력되는 텍스트는 같습니다.
- 입력 중에도 Ctrl+C가 계속 동작한 이유는요?
- 설계된 동작입니다. 수정자 키 단축키, 화살표 키, Home, End, Delete, Tab은 캡처되지 않고 브라우저로 그대로 전달됩니다. 그래서 복사, 붙여넣기, 실행 취소, 모두 선택 같은 평소 편집 습관은 텍스트 상자 안에서 계속 통하고, 키보드 내비게이션은 그 밖에서 계속 통합니다.
- 일본어 가나를 한자로 변환할 수 있나요?
- 아니요, 일부러 하지 않습니다. 한자 변환에는 IME — 수십만 단어의 사전과 순위 모델 — 가 필요하고, 나쁜 변환기는 그럴듯하지만 틀린 텍스트를 만듭니다. 그것은 없는 것보다 나쁩니다. 이 도구는 히라가나와 가타카나를 입력하고 물리 키보드에서는 로마자 입력을 쓰며, 그 한계를 발견하게 두는 대신 여기서 밝힙니다.
- 히브리어에서 Shift+9가 닫는 괄호를 입력하는 이유는요?
- SI-1452 표준이 그 자리에 둔 논리적 문자를 입력하는 것입니다. 오른쪽에서 왼쪽으로 쓰는 텍스트가 그려질 때 양방향 텍스트 알고리즘이 그것을 거울로 뒤집으므로, 화면에는 키에 새겨진 그대로의 괄호가 보입니다. 이것을 「고치면」 히브리어로 치는 모든 괄호가 망가집니다.
- 제 키보드에는 왼쪽 Shift 옆에 키가 없습니다. 그래도 입력할 수 있나요?
- 클릭하면 됩니다. 유럽 배열은 그 자리에 102번째 키가 있는 ISO 규격 보드이고, 브라질 ABNT2는 오른쪽 Shift 옆에 키가 하나 더 있습니다. 미국식 ANSI 키보드에는 둘 다 없습니다. 두 키 모두 화면 키보드에 그려져 있고 클릭하면 배열이 그 자리에 둔 문자가 입력되므로, 어떤 키보드를 쓰든 배열의 문자가 손이 닿지 않는 곳에 남지는 않습니다.
- 입력한 내용이 서버로 전송되나요?
- 아니요. 키보드 전체 — 배열, 매핑, 조합 — 가 브라우저 안에서 돌아갑니다. 타건은 로컬에서 처리되고, 아무것도 업로드되거나 기록되지 않으며, 캡처는 텍스트 상자에 포커스가 있는 동안에만 적용되므로 페이지의 다른 곳에서 눌린 키는 아예 보이지 않습니다.
- 아랍어 키보드 없이 아랍어를 입력하려면?
- 배열 목록에서 العربية — 101 을 고르고 그대로 치면 됩니다. 키는 운영체제가 알려주는 글자가 아니라 위치로 그 배열을 상대로 해석되므로, 설치할 것이 없고 내 배열도 그대로입니다. 미국식 자판이라면 L, V, P, F, H 위치가 مرحبا 를 냅니다. 화면 키를 눌러도 똑같은 기계를 지나가므로, 키가 모자란 자판도 걸림돌이 되지 않습니다.
- 아랍어 모음 기호 하라카트는 자판 어디에 있나요?
- Shift 레이어에 있습니다. 아랍어에는 Shift 가 담을 대문자가 없어 그 레이어가 비어 있기 때문입니다. 미국식 자판에 Q, E, A 로 새겨진 위치가 파트하와 담마와 카스라를, W, R, S 가 그 세 탄윈 형태를, X 가 수쿤을, 1 왼쪽 키가 샷다를 담습니다. 모두 결합 문자이니 글자를 먼저 치고 기호를 나중에 치면 바로 앞 글자에 겹쳐 그려집니다.
- 아랍 숫자 ١ ٢ ٣ 은 어떻게 입력하나요?
- AltGr 을 누른 채 숫자 줄을 쓰면 됩니다. 아랍어 배열은 ١٢٣٤٥٦٧٨٩٠ 을 세 번째 레이어에 놓고 1234567890 을 기본 줄에 남겨 두므로, 두 집합은 수정 키 하나만큼 떨어져 있고 어느 쪽도 전환이 필요 없습니다. 같은 레이어에는 페르시아어와 우르두어 글자 پ, چ, ژ, گ, ڤ 와 아랍어 소수점과 자릿점도 있습니다. 자판에 AltGr 키가 없다면 화면의 AltGr 이 같은 일을 하고 딱 한 번의 타건 동안만 걸립니다.
관련 도구
- 글자로 단어 찾기
손에 글자 몇 개가 있는데 무슨 낱말이 되는지 모를 때, 저 페이지는 그것을 애너그램으로 읽습니다. 없는 글자 한 자는 물음표로 대신할 수 있습니다.
- 다섯 글자 단어 풀이기
저 페이지는 입력이 아니라 알아맞히기 놀이를 위한 곳입니다. 이미 놓은 줄을 각 칸이 돌려준 색과 함께 옮기면, 그 모두와 아직 어긋나지 않는 다섯 글자 단어가 나옵니다.