2011-01-13 59 views
6

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

解决方案概述:作为虚拟键盘的基础是采用火柴盒键盘,它是一个开源应用程序并提供丰富的功能。通过修改QT和GTK源,在“on_press”信号(当用户按下可编辑的用户界面组件时)发送Dbus信号到打开虚拟键盘的某个守护程序,解决了自动切换的机制。

Issue:“on_press”当用户按下或点击UI组件时,即在QT和GTK的“on_click”事件期间,发送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”(乌思信号) - >虚拟键盘启动
  2. 然后用户按下选项卡按钮切换到其他可编辑框。 “focus_out”(GTK,QT事件) - >“hide_keyboard”(Dbus信号) - >虚拟键盘被隐藏,不会再次启动。

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

因此,当用户在带有标签按钮的可编辑框之间切换时,请帮助找到解决方案。或者,如果您完全有其他解决方案,请提出建议。

由于提前, 列翁

回答

1

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

QEvent::RequestSoftwareInputPanel 

说明是;

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

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

相关问题