Python PyGtk虚拟键盘支持at spi

Python PyGtk虚拟键盘支持at spi,python,raspberry-pi,accessibility,pygtk,raspberry-pi3,Python,Raspberry Pi,Accessibility,Pygtk,Raspberry Pi3,我编写了一个PyGtk应用程序来控制Pi3上的一些特定功能。此全屏幕GUI(通过2.8英寸TFT触摸屏)用户只需与设备交互即可。没有鼠标、键盘、SSH、VNC等可用功能。因为需要从用户那里获取输入,所以我需要实现一种方法,让虚拟键盘在文本框获得焦点时出现,然后在焦点丢失时消失。我研究了许多虚拟键盘,其中只有一个是tFlorence似乎在Gtk支持下提供了此功能,但我无法让它在输入文本框获得/失去焦点时自动显示/隐藏 Florence依靠at spi框架获取事件通知 及 此外,根据FAQ()的要求

我编写了一个PyGtk应用程序来控制Pi3上的一些特定功能。此全屏幕GUI(通过2.8英寸TFT触摸屏)用户只需与设备交互即可。没有鼠标、键盘、SSH、VNC等可用功能。因为需要从用户那里获取输入,所以我需要实现一种方法,让虚拟键盘在文本框获得焦点时出现,然后在焦点丢失时消失。我研究了许多虚拟键盘,其中只有一个是tFlorence似乎在Gtk支持下提供了此功能,但我无法让它在输入文本框获得/失去焦点时自动显示/隐藏

Florence依靠at spi框架获取事件通知

此外,根据FAQ()的要求,需要设置一个环境变量

export GTK_MODULES=gail:atk-bridge
因此,我将Florence配置为自动隐藏模式,在spi下载,运行注册表守护程序并设置环境变量,但不设置骰子。当GUI上的文本框被聚焦时,键盘不会出现


我想我有两个问题。首先,我与佛罗伦萨没有任何联系,因此如果有其他解决方案,我愿意实施它。但第二,我不清楚的一件事是,我如何在spi获得PyGtk应用程序“支持”。“除了环境变量外,我如何确保我的应用程序在spi上使用?关于这一点,我没有一个文档是清楚的。

我还没有树莓pi(RPi),所以这个答案可能对RPi不起作用

它在linux上工作,所以您可能希望在RPi上测试它

我在板上安装了
(另一个支持DBus的虚拟键盘)

确保您正在运行,但虚拟键盘处于隐藏状态

以下代码将控制虚拟键盘的可见性:

import dbus

# initialize session bus, you can put the following lines into 
# your initialization block, or something or use a class
sess_bus = dbus.SessionBus()

# get the object proxy for the virtual keyboard, 
# won't work if OnBoard is not already running
kbd = sess_buss.get_object('org.onboard.Onboard', 
                           '/org/onboard/Onboard/Keyboard')


# display virtual keyboard
kbd.Show()

# hide virtual keyboard
kbd.Hide()
export GTK_MODULES=gail:atk-bridge
import dbus

# initialize session bus, you can put the following lines into 
# your initialization block, or something or use a class
sess_bus = dbus.SessionBus()

# get the object proxy for the virtual keyboard, 
# won't work if OnBoard is not already running
kbd = sess_buss.get_object('org.onboard.Onboard', 
                           '/org/onboard/Onboard/Keyboard')


# display virtual keyboard
kbd.Show()

# hide virtual keyboard
kbd.Hide()