質問者
入力補完について

質問
-
お世話になります。
開発環境:VS2005、C#現在、スクリーンキーボードを自作しまして、そのスクリーンキーボードに、日本語入力補完機能(Googleサジェストや、http://www13.ocn.ne.jp/~koro/の様な)を実装しようと取り組んでいます。
しかし、自分ひとりではどのように進めていけばよいのか詰まった状態になってしまいました。
スクリーンキーボードに日本語入力補完機能を実装する上で、どのような手順で制作していくのが良いのか、また、既存のシステム等があり、それをソフトに組み込むことができたりする方法でも結構ですので、ご教授していただけると幸いです。
宜しくお願いいたします。
すべての返信
-
2005からはこういうのも使えるようです。
http://www.atmarkit.co.jp/fdotnet/dotnettips/423autocompsource/autocompsource.html
はやとさんの用件を満たすかはわかりませんが。 -
-
どのようなアプリケーションを作成されようとしているのか、あまり理解していないですのですが…仮想キーコードから文字へのマッピングを自前で用意してしまえば可能です。(他にも方法はあるのでしょうけれど)
例えば、VK_A がキーボードイベントとして飛んできた場合には、「あ」が入力されたものとして扱えば良いわけです。(ローマ字入力の場合には、ですが)
勿論、子音+母音の場合には直前の文字と組み合わせて、ローマ字仮名のテーブル(これは自前で用意することになるのでしょうか)を引く必要があります。
# 仮名入力の場合には、仮想キーコードから「仮名」へのマッピングが必要になりますけど。
-
・仮想キーコードから文字へのマッピングを自前で用意する
とは具体的にはどのようなことでしょうか?
現状でaボタンのコードは、
const int VK_A = 0x41;
private void aButton_Click(object sender, EventArgs e)
{
INPUT input = new INPUT();
input.type = INPUT_KEYBOARD;
input.ki.wScan = 0;
input.ki.time = 0;
input.ki.dwExtraInfo = GetMessageExtraInfo();input.ki.wVk = (ushort)VK_A;
input.ki.dwFlags = 0; //Key DownSendInput(1, ref input, Marshal.SizeOf(typeof(INPUT)));
input.ki.wVk = (ushort)VK_A;
input.ki.dwFlags = KEYEVENTF_KEYUP; //Key UpSendInput(1, ref input, Marshal.SizeOf(typeof(INPUT)));
}というふうにしております。
作成しようとしているアプリケーションは、スクリーンキーボードに入力補完機能を実装する。といったものです。
例えば、
スクリーンキーボードのa(コントロールボタン)をクリックすると、今まで入力してきた単語・文章を表示して、表示された単語・文章をクリックすると、アクティブになっている他のアプリケーション(テキストファイルなど)のカーソルの場所に入力される。
といった感じです。
ただ、単語・文章などの候補表示をどのようにすると制作しやすいのか(右クリックで表示されるメニュー表示やスクリーンキーボードにコンボボックスを配置するなど)という部分も悩んでおります。
何か良い方法があればお願いいたします。