我写了一个PyGtk应用程序来控制Pi3上的一些特定功能 . 这个全屏GUI(通过2.8“TFT触摸屏)是用户必须与设备交互的全部 . 没有鼠标,键盘,SSH,VNC等可用 . 因为需要从用户那里获得输入我需要实现一种方法,当文本框获得焦点时显示虚拟键盘,然后在焦点丢失时消失 . 我研究了许多虚拟键盘,而唯一一个似乎提供Gtk支持的功能的是佛罗伦萨 . 但是我当输入文本框获得/失去焦点时,无法自动显示/隐藏它 .
佛罗伦萨依靠at-spi框架来获取事件通知 . 根据"Florence modes"(http://florence.sourceforge.net/english/usage.html)
You should make sure your applications support at-spi if you intend to use Florence in hidden mode.
和
The auto hide mode requires accessibility to be activated, which means the at-spi registry daemon is running and applications are using it.
此外,根据FAQ(http://florence.sourceforge.net/english/how-to.html),需要设置环境变量 .
export GTK_MODULES=gail:atk-bridge
因此我将Florence配置为自动隐藏模式,下载at-spi,运行注册表守护程序并设置环境变量但没有骰子 . 当GUI上的文本框被聚焦时,键盘不会出现 .
我想我有两个问题 . 首先,我不是以任何方式与佛罗伦萨联系在一起,所以如果有另一种解决方案,我愿意实施它 . 但其次,我不清楚的一件事是我如何让PyGtk应用程序“支持at-spi” . 除了环境变量,我如何确保我的应用程序使用at-spi?在这一点上,我没有任何文件清楚 .
1 回答
我还没有树莓派(RPi),所以这个答案可能不适用于RPi .
它适用于Linux,因此您可能希望在RPi上测试它 .
我安装了
OnBoard
(另一个支持DBus的虚拟键盘) .确保OnBoard正在运行,但隐藏了虚拟键盘 .
以下代码将控制虚拟键盘的可见性: