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