我为我的Ubuntu桌面构建了Maliit(https://wiki.maliit.org/Main_Page)虚拟屏幕键盘,它适用于附带的示例应用程序。我还能够制作自己的简单Qt示例应用程序,该应用程序可以在小部件呈现焦点时显示键盘。Qt虚拟键盘和QInputContextFactory
我正在尝试将虚拟键盘部署到在触摸屏上运行在我的目标板上的嵌入式Linux系统。目标板上没有安装X11,我使用QWS(-qws)运行了不少Qt应用程序。
Maliit体系结构(http://maliit.org/doc/framework/latest/architecture.html)需要服务器实例与应用程序进行通信,应用程序使用QApplication :: setInputContext将其设置为输入上下文。
在Ubuntu上我简单地做:
export QT_IM_MODULE=Maliit
maliit-server -software &
maliit-exampleapp-plainqt
而且键盘出现,一切正常(当然我有X11)!
在嵌入式主板我在一个SSH会话做:
export QT_IM_MODULE=Maliit
dbus-launch --auto-syntax maliit-server -software -qws
然后又是SSH会话:
export QT_IM_MODULE=Maliit
source /find_dbus_address.sh
echo $DBUS_SESSION_BUS_ADDRESS
maliit-exampleapp-plainqt -qws
但我总是得到错误:
QApplication::setInputContext: called with 0 input context
哪意味着示例应用程序在下列行中主要失败:
// Workaround for lighthouse Qt
kit.setInputContext(QInputContextFactory::create("Maliit", &kit));
的嵌入式主板的“PS”命令的输出显示以下内容:
191 user 1692 S -sh
192 user 39608 S maliit-server -software -qws
196 user 2092 S /usr/bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
201 user 1692 R ps
所以服务器没有积极跑动像它在Ubuntu ......但在一个“可中断睡眠'状态。鼠标确实在这种状态下移动。我仍然得到0输入上下文错误。
这里有一个错误 - 声称QWS与Maliit正在为他工作,他至少可以看到输入>https://bugs.maliit.org/show_bug.cgi?id=185 ..
还有Maliit的模式,理应绕开DBUS(见这里 - - >http://www.jonnor.com/2012/03/),并与我仍然得到 '0输入上下文' 错误:
于是,我就做我的嵌入式主板:
export QT_IM_MODULE=MaliitDirect ; echo $QT_IM_MODULE ; maliit-exampleapp-embedded -qws
并始终接受:
QApplication::setInputContext: called with 0 input context
Unable to embedded Maliit input method widget
我构建的Qt 4.8.2嵌入在Ubuntu 12.04桌面上,可以使用-qws和示例应用程序启动maliit服务器,并且可以使用QWS查看虚拟键盘的工作情况。我使用git repo的最新克隆插件和maliit框架。
我的问题是运行相同的maliit服务器和示例应用程序编译为我的ARM板在目标上。我经常得到错误QApplication :: setInputContext:用0输入上下文调用。
我用DBUS dbus-monitor工具做了一些监测。我最初打开1个SSH会话到我的主板,然后运行eval dbus-launch --auto-syntax
并复制DBUS_SESSION_BUS。然后我打开了2个新的SSH会话。
在第一个我做:
$ export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-vVNCW9zP7e,guid=75ecd72645dfb9b4358048db506dfec
$ export QT_IM_MODULE=Maliit
$ maliit-server -software -qws
在第二个我做:
$ export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-vVNCW9zP7e,guid=75ecd72645dfb9b4358048db506dfecb
$ export QT_IM_MODULE=Maliit
$ maliit-exampleapp-settings -qws
不过,我马上面临着:
[9;0]QApplication::setInputContext: called with 0 input context
SettingsWidget::connected()
SettingsWidget::pluginSettingsReceived()
Setting layout QVariant(QString, "nemo-keyboard.qml:")
而在dbus-monitor外壳我看到:
desktop.DBus; member=NameOwnerChanged
string ":1.6"
string ""
string ":1.6"
method call sender=:1.6 -> dest=org.freedesktop.DBus serial=1 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=Hello
signal sender=org.freedesktop.DBus -> dest=(null destination) serial=8 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
string "org.maliit.server"
string ""
string ":1.6"
method call sender=:1.6 -> dest=org.freedesktop.DBus serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RequestName
string "org.maliit.server"
uint32 4
signal sender=org.freedesktop.DBus -> dest=(null destination) serial=9 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
string ":1.7"
string ""
string ":1.7"
method call sender=:1.7 -> dest=org.freedesktop.DBus serial=1 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=Hello
method call sender=:1.7 -> dest=org.maliit.server serial=2 path=/org/maliit/server/address; interface=org.freedesktop.DBus.Properties; member=Get
string "org.maliit.Server.Address"
string "address"
method return sender=:1.6 -> dest=:1.7 reply_serial=2
variant string "unix:abstract=/tmp/maliit-server/dbus-CPgFHrxwAi,guid=dfc1dfc367a647e36e6e4c3c506e00db"
有没有人有关于这里发生了什么的想法? DBUS可能与QInputContextFactory失败有关吗?我能以某种方式获得更多有关失败的信息以及为什么我无法设置输入上下文的信息吗?
谢谢你的帮助 -
你有过这样的问题http://stackoverflow.com/questions/33283961/maliit-keyboard-black-box-on-letters来的?对不起,我知道你发布这个问题已经很长时间了。 – ramtheconqueror