在电子应用程序中控制 Gnome-3 屏幕键盘的可见性

问题描述

我正在开发一个 Electron 应用程序,该应用程序旨在在运行 Debian 的面板触摸屏计算机上运行。我在桌面设置中启用了屏幕键盘板,并且可以在其他应用程序(例如终端)中看到它出现。但是,当文本输入获得焦点时,屏幕键盘不会出现在我的电子应用程序中。我读到这可能是 Chromium 的某种奇怪之处(请参阅 https://askubuntu.com/questions/939616/why-the-onboard-on-screen-keyboard-doesnt-auto-show-in-google-chrome),但找不到任何解决方法。 我想我的问题分为两部分: 1 - 我能做些什么来让 Electron 与 gnome 3 内置键盘一起很好地玩吗? 2 - 有没有我可以调用的程序来显示和/或隐藏屏幕键盘

我的目标操作系统是带有 Gnome 桌面的 Debian 10.3 版。

解决方法

经过大量研究,我了解到,为了触发 Gnome 的屏幕键盘,必须围绕 GTK 开发一个应用程序。任何未能这样做的应用程序都被视为 Gnome 桌面上的“外来”应用程序。显然,Chrome 属于这一类,Electron 构建的应用程序也属于这一类,因为它们是基于 Chromium 构建的。 尽管如此,外部应用程序仍然可以通过 dbus 发送屏幕键盘事件。 CentOS On screen keyboard not showing for Jawa Swing Text entry fields 处的问题将这些事件描述如下: 打开键盘:

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