Jawa Swing文本输入字段未显示CentOS屏幕键盘

时间:2018-07-20 02:13:27

标签: java swing keyboard centos gnome

我们有一个Java swing应用程序,其文本字段在CentOS上的触摸板上运行,而没有物理键盘。在CentOS中,在通用访问权限下,我们可以打开“屏幕键盘”,只要在任何应用程序上有文本输入,它都应出现。当我们使用Terminal或GEdit或类似的应用程序时,这完美地工作。但是,当我们使用Java Swing应用程序时,操作系统似乎不了解其中存在文本输入字段,并且没有调出键盘。

有一个选项可以使键盘始终保持打开状态,即使它可以解决问题,该选项也不适合我们的应用程序。只有在输入文本时,才应按需出现键盘。同样,不能使用佛罗伦萨等第三方键盘来满足客户要求。

是否有一种方法可以通过代码强制在CentOS的屏幕键盘上启动驯鹿? (在Ubuntu 16.04中,可以通过调用命令“ onboard”调出屏幕键盘“ Onboard”)

update:解决方案不必专门通过Java。即使是命令或Shell脚本,我也可以使用Java中的Processbuilder来调用它。

1 个答案:

答案 0 :(得分:0)

在CentOS 7(GNOME)中,屏幕键盘作为名为“ Caribou”的服务运行。它监听dbus消息以自动显示/隐藏。通过发送适当的dbus信号,我们可以强制显示/隐藏屏幕键盘。 因此,当获得焦点(用于Java Swing控件)时,dbus信号被发送到程序内部以显示/隐藏CentOS 7中的屏幕键盘。

可以尝试使用这些终端命令来模拟

dbus-send --type=method_call --dest=org.gnome.Caribou.Keyboard /org/gnome/Caribou/Keyboard org.gnome.Caribou.Keyboard.Show uint32:0
dbus-send --type=method_call --dest=org.gnome.Caribou.Keyboard /org/gnome/Caribou/Keyboard org.gnome.Caribou.Keyboard.Hide uint32:0

还有一个Java库,用于发送dbus消息。 https://dbus.freedesktop.org/doc/dbus-java/dbus-java/

但是CentOS 7.5中似乎缺少Caribou dbus界面的显示/隐藏界面

在CentOS 7(KDE)中,有键盘小部件,可以将其添加到任务栏,并且可以分配快捷方式以显示/隐藏屏幕上的键盘。在Java程序中,可以模拟该快捷键以显示/隐藏屏幕键盘。

相关问题