仮想キーボード
画面上のキーボードで他言語を入力。各国の本物の配列、キーは位置で対応、デッドキーと AltGr の第3層、ハングルの音節組み立て、ローマ字入力。すべてブラウザ内で動作。
矢印キーで画面上のキーの間を移動し、Enter でそのキーを押します。Tab はキーボードから抜けます。手元のキーボードはテキストボックスに直接入力します。
物理キーは位置で対応付けられます。各キーは、選んだ配列がその位置に置く文字を入力します。OS の配列は関係ありません。キャプチャはテキストボックスにフォーカスがある間だけ有効で、Ctrl+C・Tab・矢印キーはそのまま使えます。
手元のキーボードはローマ字入力です。ka は か、kya は きゃ、tta は った になり、n は子音の前か n を二度打つと ん になります。まだ音にならない文字は、確定するまでテキストボックスの上に表示されます。画面のキーはどちらのモードでもかなのままです — かなのキートップに読み取るローマ字はありません — ので、クリックすると必ずそこに印字された音が入ります。
かなのみ:この道具はかなを漢字に変換しません。変換には数十万語の辞書が必要で、出来の悪い変換はもっともらしい誤った文を作ってしまいます。
ひとつのツールで十三言語
このキーボードは、このサイトが書かれている十三の言語を入力できます。それぞれの言語について、その言語の話者が実際に使っている配列を表示します。選定の規則は単純で、話者が最も多い国の標準配列です。ヘブライ語は SI-1452 規格、フランス語は AZERTY、ドイツ語は QWERTZ、ロシア語は ЙЦУКЕН、スペイン語はラテンアメリカ配列、ポルトガル語はブラジルの ABNT2、トルコ語は Turkish Q、日本語は JIS かな配列、韓国語は두벌식(Dubeolsik)です。切り替えリストは各配列をその言語自身の名前で表示します。自分の言語を探す読者は、どの表示言語でもその自称(エンドニム)なら見分けられるからです。
ひとつだけ、意図的に面白みのない項目があります。インドネシア語です。インドネシアには国の標準キーボード配列がなく、英語と同じ US QWERTY で入力されています。誠実な答えは、どのインドネシア人も見たことのない配列をでっち上げるのではなく、その事実をそのまま述べることです。ツールは読んでいるページの言語の配列で開き、いつでも他の配列に切り替えられます。切り替えても入力済みのテキストはそのまま残ります。
位置マッピング:自分の OS の配列は関係ない
物理キーボードで入力すると、ツールは各キーを盤面上の位置で読み取ります。OS がそのキーの文字だと考えているものは決して見ません。スペースバーの二段上、J のすぐ右にあるキー — K の位置 — は、US QWERTY では k を、ヘブライ語配列では ל を入力します。マシンにどの配列が入っていても同じです。この逆転こそが要点で、もしツールが OS の言うことを聞いたら、あなた自身の配列をこだまのように返すだけになり、インストールしていない言語を入力することは永遠にできません。
画面上のキーへのクリックと物理キーの打鍵は、まったく同じ仕組みを通ります。だから両者が「このキーは何をするか」で食い違うことはあり得ません。物理入力の間、押したキーは画面上のキーボードで光ります。慣れない配列のどこにどの文字が住んでいるかは、こうして覚えられます。かつて印刷されたキーボードシールが教えてくれたのと同じやり方です。
キャプチャは意図的に狭くしてあります。物理キーはテキストボックスにフォーカスがある間だけ読み取られ、ページの残りは通常どおり動き続けます。Ctrl+C・Ctrl+V・Ctrl+A・Ctrl+Z のようなショートカットは矢印キーや Home、End、Delete と同じくそのままブラウザへ通り抜けます。そして Tab は決して飲み込まれません。Tab を食べるツールは、キーボードでページを移動する人を閉じ込めてしまうからです。
物理キーボードに足りないことがあるのは、キーそのものです。ここに並ぶヨーロッパの配列は ISO 規格の板で、左のシフトキーと最下段の最初の文字のあいだに102番目のキーを持ち、ブラジルの ABNT2 はさらに右シフトの横に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 — が必要で、出来の悪いものを載せるのは何も載せないより悪い。もっともらしく間違ったテキストが、気づく手立てのないまま出てくることになります。かなのみの出力であることをここに明記するのは、限界が「発見される」のではなく「理解されている」状態にするためです。
すべてブラウザの中で動く
配列はページと一緒に届くデータで、打鍵はすべてローカルで処理されます。入力した内容がアップロード・保存・記録されることはありません。これは大半のツールより入力ツールでこそ重要です。人がキーボードに打ち込むものは、たいていまさに大事にしているテキストだからです。キャプチャはテキストボックスに限定されているので、ページの他の場所で押されたキーをツールが見ることはなく、タブを閉じれば何も残りません。
よくある質問
- なぜ K のキーを押すと ל が入力されるのですか?
- キーが OS の報告する文字ではなく、物理的な位置で対応付けられているからです。ヘブライ語配列では K の位置に ל が載っているので、それが入力されます。物理キーボードでも画面上のキーボードでも同じです。マシンに配列がインストールされていない言語を入力できるのは、この仕組みのおかげです。
- その言語をパソコンにインストールしておく必要はありますか?
- いいえ。ツールはキーの意味を OS に尋ねることが一切なく、選択中の配列に対して自力で各キーを解決します。マシンにどんな配列が入っていても、必要な配列がひとつもなくても、入力されるテキストは同じです。
- 入力中も Ctrl+C が効いたのはなぜですか?
- 設計どおりです。修飾キーのショートカット、矢印キー、Home、End、Delete、Tab はキャプチャされずにそのままブラウザへ渡されます。だからコピー・貼り付け・元に戻す・すべて選択という普段の編集操作はテキストボックスの中で効き続け、キーボードによるページ内の移動はその外で効き続けます。
- かなを漢字に変換できますか?
- いいえ、意図的にできません。漢字変換には IME — 数十万語の辞書とランキングモデル — が必要で、出来の悪い変換はもっともらしく間違ったテキストを生みます。それは何もないより悪い。ツールはひらがなとカタカナを入力し、物理キーボードではローマ字入力を使い、その限界を発見させるのではなく、ここで明言しています。
- ヘブライ語で Shift+9 が閉じ括弧を入力するのはなぜですか?
- SI-1452 規格がそこに置いた論理的な文字を入力しているからです。右から左のテキストが描画されるとき、双方向テキストのアルゴリズムがそれを鏡映しにするので、画面にはキートップに刻まれたとおりの括弧が見えます。これを「修正」すれば、ヘブライ語で打たれるすべての括弧が壊れます。
- 私のキーボードには左シフトの隣にキーがありません。それでも入力できますか。
- できます。クリックしてください。ヨーロッパの配列はその位置に102番目のキーを持つ ISO 規格の板で、ブラジルの ABNT2 は右シフトの横に追加のキーを持ちます。米国式の ANSI キーボードにはどちらもありません。どちらも画面上のキーボードに描かれており、クリックすれば配列がそこに置く文字が入力されるので、お使いの板が何であれ、配列の文字が手の届かないままになることはありません。
- 入力した内容はサーバーに送られますか?
- いいえ。キーボード全体 — 配列、マッピング、組み立て — がブラウザの中で動きます。打鍵はローカルで処理され、何もアップロードも記録もされません。キャプチャはテキストボックスにフォーカスがある間だけ働くので、ページの他の場所で押されたキーはそもそも見えません。