问题说明:虚拟键盘在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信号来解决的。
所以现在在这里我有另一个问题。
发生这种情况是因为第二个可编辑框发出“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).