我有一个运行Debian的BeagleBone Black,附有一个480x272像素的斗篷(触摸屏)。我使用wicd作为有线/无线接口,因为它已经为最终用户提供了非常好的python/gtk-based solution,可以轻松设置各种网络配置。
问题是最终用户无法访问物理键盘,因此为了进入wifi设置,他们需要一个虚拟键盘。
我的主要项目是基于单声道的(C#),我有一个用GtkSharp(C#)编写的虚拟键盘。我可以从我的其他C#项目文件中调用它,但不能从这个python模块打开它。
我通常使用以下代码调用wicd
客户端
private void CallWicdDialaog()
{
Process proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "/usr/bin/wicd-client",
Arguments = "-n",
UseShellExecute = false,
RedirectStandardOutput = false,
CreateNoWindow = true
}
};
proc.Start();
}
这将启动本机Debian OS中的python进程,而不是通过mono / C#项目。我不需要"沟通" wicd
和我的单声道项目之间的其他任何地方,除了这个虚拟键盘。
wicd
项目在其guiutil.py
文件中挂起了一个gtk 焦点事件,如下所示:
class LabelEntry(gtk.HBox):
""" A label on the left with a textbox on the right, 370 pixels wide. """
def __init__(self,text):
...
self.entry.connect('focus-in-event', self.show_characters)
...
def show_characters(self, widget=None, event=None):
# When the box has focus, show the characters
""" I would like to hook my virtual keyboard in here """
if self.auto_hide_text and widget:
self.entry.set_visibility(True)
我想做的是在show_characters
定义中调用我的虚拟键盘。
我该怎么做?
答案 0 :(得分:0)
嗯。这些系统集成问题永远不容易解决。以下是我要看的一些内容。
启动键盘时。弄清楚如何使用终端中的线路来完成它。一旦你有了,你就可以找出控制流程。
传输数据可能很有趣。首先想到的两件事是:
答案 1 :(得分:0)
您可以将您的python代码移植到IronPython这应允许双向调用,但您可能必须为目标环境构建IronPython。
如果您可以为键盘提供C / C ++接口,则可以将其用作扩展模块,这可能比将其直接移植到Python上要少。
或者,您可以将键盘称为外部进程,并使用子进程内的管道。
答案 2 :(得分:0)
您可以使用键盘制作独立的GtkSharp应用程序,打印到stdout并使用subprocess.check_output从python运行它。