JShark: A Japanese handwriting input system

SHARK2の日本語版。ペンを使って日本語を入力するソフトウェアキーボード。(実装はかなり異なりますが。)

SHARK

SHARK は、ペンで文字を入力するためのインタフェースの一つです。キーボードの上をペンでなぞることによって、文字を入力することが出来ます。

内部に辞書を持っており、ある程度雑に書いても適当に補正されるのが特長です。

JSHARK

JSHARK は、ペンで日本語を入力するためのインタフェースで、SHARK のアイデアをもとに作られました。SHARK 同様、キーボードの上をペンでなぞることによって日本語を入力します。

日本語は文字数が多いので、一文字一文字割り当てているとキーの数が多くなってしまいます。そのため、同じキーに2つの文字を割り当て、それをシフトさせる動作を導入することで、ある程度問題を解決しました。

入力方法

アプリケーションをを立ち上げるとキーボードが表示されます。

この状態で、たとえば「あきしののみや」と入力するには、次のようにペンを動かしてください。

基本的には角度が急激に変わっているところを検出し、そのキーの左上の文字をキーボードエミュレーションにより入力します。

キーの右下の文字を入力するには、次のように、キーの上でまるを書いて、線を交差させてください。たとえば、「ぎりしゃ」と入力するには……

右クリックでコンテキストメニューをだすと、次の設定が出来ます。

なお、入力中に間違えたと思ったときは、「今のなし!」上でペンを離せば、入力はなかったことになります。

ダウンロード

Windows XP 以降で動作します。Windows 2000 でも動くかもしれませんがテストしていません。

ソースのコンパイルには boost が必要です。ここではあんまり使ってませんけど。

  • バイナリ + MFC DLL(mfc71.dll, msvcr71.dll)
  • ソース一式 (VS.NET 2003, C++ で記述)

ライセンスは modified BSD とします。著作権は放棄しませんが、あなたが変更して利用するのは自由です。

  • 参考:NetBSD のライセンスと再配布について

TODO

  • キー配列を考えた方がよい。五十音はひどい。
  • 同じ文字が連続で入力しにくい (SHARK2 のように空白部分があるといいかも?)
  • シフトの感度が良すぎるのをなんとかする
  • 頻度ファイルの形式、頻度の見方
  • 実は入力文字の長さ N に対して、動作が O(exp(N)) かかる! (手抜き仕様)
  • CTRL とか Shift とか。ファンクションキーとか。
  • 入力した後に「今のなし!」したい (by いろんな人)
  • 頻度に関しては、漢字まで入れてやるとより精度が出るらしいが、ちょっとこのアプリケーションの範囲を超えますね。

参考文献

  • ソフトウェアキーボード (基本的な作り方のヒントを得た)
  • SHARK2
  • Pen
2005-01-01