当用户按下可编辑的UI组件时,在Linux中自动启动键盘

问题说明:虚拟键盘在Linux环境下是必需的,每当用户按下可编辑的UI组件,如iPhone,iPad,Android等虚拟键盘时,都应该启动虚拟键盘。

解决scheme概述:作为虚拟键盘的基础,采用了火柴盒键盘这是一个开源应用程序,并提供丰富的function。 通过修改QT和GTK源,在“on_press”信号(当用户按下可编辑的UI编辑器时)发送Dbus信号到一些使虚拟键盘开启的守护进程,来解决自动切换的机制。

问题:当用户按下或点击UI组件时,即在QT和GTK的“on_click”事件中,发送“on_press”Dbus信号。 虚拟键盘隐藏在QT和GTK的“focus_out”事件中。 键盘在“focus_in”事件过程中没有打开,因为一些应用程序在启动的时候正在发射“focus_in”事件,然后发出“focus_out”事件,所以虚拟键盘显示的时间很短,然后隐藏,这是不准确的。 这是通过在“on_click”GTK和QT事件中产生“on_press”Dbus信号来解决的。

所以现在在这里我有另一个问题。

  1. 让用户按下可编辑框,虚拟键盘出现,“on_click”(GTK,QT事件) – >“on_press”(Dbus信号) – >虚拟键盘启动
  2. 然后用户按Tabbutton切换到其他可编辑框。 “focus_out”(GTK,QT事件) – >“hide_keyboard”(Dbus信号) – >虚拟键盘被隐藏,不会再次启动。

发生这种情况是因为第二个可编辑框发出“focus_in”事件而不是“on_click”事件。

所以请帮助find解决scheme的情况下,当用户切换可编辑框与标签button。 或者如果你有完全的其他解决scheme,请提出build议。

在此先感谢,Levon

我是佛罗伦萨虚拟键盘的作者: http : //florence.sourceforge.net 。 我用at-spi(http://en.wikipedia.org/wiki/Assistive_Technology_Service_Provider_Interface)来解决这个问题。 at-spi的优势在于它不仅可以用于GTK和Qt,还可以用于java,Firefox和Libre / OpenOffice。

在支持的平台(嵌入式Linux,WinCE)上,当显示软件输入面板时,Qt会发出一个特殊的QEvent ;

 QEvent::RequestSoftwareInputPanel 

说明是;

 A widget wants to open a software input panel (SIP).