我正在开发一个 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 版。
答案1
经过大量研究后,我了解到,为了触发 Gnome 的屏幕键盘,必须围绕 GTK 开发一个应用程序。任何未能这样做的应用程序在 Gnome 桌面上都被视为“外部”应用程序。显然,Chrome 属于这一类,Electron 也构建了应用程序,因为它们是基于 Chromium 构建的。尽管如此,外部应用程序仍然可以通过 dbus 发送屏幕键盘事件。问题位于https://stackoverflow.com/questions/51434141/centos-on-screen-keyboard-not-showing-for-jawa-swing-text-entry-fields/51476903#51476903描述了这个过程。要打开键盘:
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