【ご質問】
入力メソッドがアクティブの時(input-method-focus-behaviorがInputMethodFocusBehavior.activateの時)の
入力キーイベントや文字列を取得することは可能でしょうか?
【回答】
“StartCompositionEvent”、”CompositionChangeEvent”、
“EndCompositionEvent”、”CompositionResultEvent”を利用することで可能です。
これらのイベントを入力コントロールのUIクラスに記述してはいかがでしょうか。
詳細は以下のサンプルをご参照ください。
{curl 7.0,8.0 applet} {curl-file-attributes character-encoding = “shift-jis”} {applet {compiler-directives careful? = true} }
{let start:Frame = {Frame color = “blue”, font-weight = “bold”}} {let change:Frame = {Frame font-weight = “bold” }} {let end:Frame = {Frame color = “blue”, font-weight = “bold”}} {let result:Frame = {Frame color = “red”, font-weight = “bold”}}
{VBox {TextField width = 5cm, input-method-focus-behavior = “activate”, ui-object = {SkinnableTextFieldUI {on e:StartCompositionEvent do {start.clear} {change.clear} {end.clear} {result.clear} {start.add replace? = true, “イベントが開始しました”} }, {on e:CompositionChangeEvent do {change.add replace? = true, e.string} }, {on e:EndCompositionEvent do {end.add replace? = true, “イベントが終了しました”} }, {on e:CompositionResultEvent do {result.add replace? = true, e.string} } } }, {Table columns = 2, “イベントの開始”, start, “入力中の文字列”, change, “イベントの終了”, end, “入力結果”, result } }
|