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

问题描述 投票:0回答:1

我们有一个 Java swing 应用程序,其中的文本字段在 CentOS 上运行在触摸屏上,没有物理键盘。在 CentOS 中,在通用访问下,我们可以打开屏幕键盘,只要在任何应用程序上输入文本,该键盘就会出现。当我们使用终端或 GEdit 或类似应用程序时,这非常有效。但是当我们使用 Java Swing 应用程序时,操作系统似乎不知道有一个文本输入字段,也没有调出键盘。

有一个选项可以保持键盘始终打开,尽管它解决了问题,但不适合我们的应用程序。仅当有文本输入时,键盘才应按需出现。此外,像 Florence 这样的第三方键盘也无法满足客户的要求。

有没有办法通过代码强制以编程方式调出 CentOS 的 Caribou 屏幕键盘? (在Ubuntu 16.04中,可以通过调用命令“onboard”来调出屏幕键盘“Onboard”)

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

java swing keyboard centos gnome
1个回答
1
投票

在 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程序中可以模拟这个快捷键来显示/隐藏屏幕键盘。

© www.soinside.com 2019 - 2024. All rights reserved.