6

問題文 :仮想キーボードは Linux 環境で必要であり、iPhone、iPad、Android などの仮想キーボードのように、ユーザーが編集可能な UI コンポーネントを押すたびに起動する必要があります。

ソリューションの概要 :仮想キーボードの基礎として、豊富な機能を提供するオープンソース アプリケーションであるマッチボックス キーボードが採用されました。自動トグルのメカニズムは、QT と GTK のソースを変更して、仮想キーボードをオンにするデーモンに "on_press" シグナル (ユーザーが編集可能な UI コンポーネントを押したとき) で Dbus シグナルを送信することで解決されました。

問題 :ユーザーが UI コンポーネントを押すかクリックすると、QT および GTK の「on_click」イベント中に「on_press」Dbus 信号が送信されます。仮想キーボードは、QT および GTK の「focus_out」イベントで非表示になります。一部のアプリケーションが起動中に「focus_in」イベントを一瞬発生させてから「focus_out」イベントを発生させるため、「focus_in」イベント中にキーボードがオンにならず、仮想キーボードが短時間表示されてから非表示になり、正確ではありませんでした。これは、「on_click」GTK および QT イベント中に「on_press」Dbus 信号を生成することで解決されました。

だから今ここで私は別の問題を抱えています。

  1. ユーザーが編集可能なボックスを押して、仮想キーボードが表示され、"on_click" (GTK、QT イベント) -> "on_press" (Dbus 信号) -> 仮想キーボードが起動されたとします。
  2. 次に、ユーザーは Tab ボタンを押して、他の編集可能なボックスに切り替えます。"focus_out" (GTK、QT イベント) -> "hide_keyboard" (Dbus 信号) -> 仮想キーボードが非表示になり、再起動されません。

これは、2 番目の編集可能ボックスが「on_click」イベントではなく「focus_in」イベントを発行するために発生します。

そのため、ユーザーがタブ ボタンで編集可能なボックスを切り替える場合の解決策を見つけるのを手伝ってください。または、まったく別の解決策がある場合は、それを提案してください。

前もってありがとう、レボン

4

2 に答える 2

6

私はフローレンス仮想キーボードの作者です: http://florence.sourceforge.net . at-spi (http://en.wikipedia.org/wiki/Assistive_Technology_Service_Provider_Interface) を使用して問題を解決しました。at-spi の利点は、GTK や Qt だけでなく、Java、Firefox、Libre/OpenOffice でも動作することです。

于 2011-03-30T09:26:31.900 に答える
1

QEventサポートされているプラ​​ットフォーム(組み込みLinux、WinCE)では、ソフトウェア入力パネルを表示する必要がある場合、Qtは特別な出力を出します。

QEvent::RequestSoftwareInputPanel   

説明は;

A widget wants to open a software input panel (SIP).
于 2011-01-13T11:36:48.063 に答える