问题陈述:虚拟键盘在linux环境下是必需的,每次用户按下可编辑的UI组件时都应该启动虚拟键盘,如iPhone、iPad、Android等的虚拟键盘。
解决方案概述:作为虚拟键盘的基础,采用了 matchbox-keyboard,它是一个开源应用程序并提供了丰富的功能。通过修改 QT 和 GTK 的源以将“on_press”信号上的 Dbus 信号(当用户按下可编辑的 UI 组件时)发送到某个打开虚拟键盘的守护程序,解决了自动切换机制。
问题:当用户按下或单击 UI 组件时发送“on_press”Dbus 信号,即在 QT 和 GTK 的“on_click”事件期间。虚拟键盘隐藏在 QT 和 GTK 的“focus_out”事件中。在“focus_in”事件期间未打开键盘,因为某些应用程序在启动时会发出“focus_in”事件片刻然后发出“focus_out”事件,因此虚拟键盘会在短时间内显示然后隐藏,这是不准确的。这是通过在“on_click”GTK 和 QT 事件期间生成“on_press”Dbus 信号来解决的。
所以现在我有另一个问题。
- 假设用户按下可编辑框,出现虚拟键盘,“on_click”(GTK,QT事件)->“on_press”(Dbus信号)->启动虚拟键盘
- 然后用户按下 Tab 按钮切换到其他可编辑框。"focus_out" (GTK, QT 事件) -> "hide_keyboard" (Dbus 信号) -> 虚拟键盘被隐藏并且不再启动。
发生这种情况是因为第二个可编辑框发出“focus_in”事件而不是“on_click”事件。
因此,当用户在带有选项卡按钮的可编辑框之间切换时,请帮助找到解决方案。或者,如果您有完全其他的解决方案,请提出建议。
在此先感谢,列文