2016-11-07 46 views
0

私はPy3のいくつかの特定の機能を制御するPyGtkアプリを書いています。このフルスクリーンGUI(2.8インチTFTタッチスクリーン経由)は、ユーザーがデバイスとやり取りするすべてのものです。マウス、キーボード、SSH、VNCなどはありません。テキストボックスがフォーカスを取得してからフォーカスが失われたときに仮想キーボードを表示する方法を実装する必要があります。仮想キーボードを数多く研究しましたが、Gtkサポートでこの機能を提供するように見える唯一のものはFlorenceです。入力されたテキストボックスは/がフォーカスを失った取得時に自動的に/非表示を表示することができません。Python PyGtk at-spiを使った仮想キーボードのサポート

フィレンツェは、イベント通知を取得するためにAT-SPIのフレームワークに依存しています。「フィレンツェモード」によると、(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 

だから私は、で-SPIダウンロードした自動非表示モード用にフィレンツェを設定し、レジストリデーモンを実行し、環境変数が、無サイコロを設定します。 GUI上のテキストボックスにフォーカスがあると、キーボードは表示されません。

私は2つの質問があると思います。まず、私はフィレンツェに結びついていないので、別の解決策があればそれを実装することができます。しかし、第二に、私には分かりませんが、PyGtkのアプリを "spi on support"にする方法があります。環境変数以外の方法私のアプリがat-spiを使っていることを確認するにはどうすればよいですか?その点について私には明らかな文書はありません。

答えて

0

ラズベリーパイ(RPi)はまだありません。この回答はRPiでは機能しない可能性があります。

これはLinux上で動作するため、RPiでテストしたい場合があります。

OnBoard(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()