欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Centos禁止屏幕虚拟键盘弹出

程序员文章站 2022-07-03 18:14:31
...

使用centos7.5版本系统的时候,接触摸屏的情况下,点击屏幕老是会触发屏幕虚拟键盘弹出。原本触摸屏下虚拟键盘的作用是便于输入,可以在不用外接键盘的情况下,直接用屏幕键盘作为输入,可是当想把屏幕键盘关掉却发现并不是那么简单。
关闭屏幕键盘的主要原因是运行用户程序时,在触屏界面下操作程序界面,在不点击输入框的情况下,点击界面图标/文字,屏幕虚拟键盘也总会偶尔弹出,影响用户体验。要关掉屏幕键盘,首选项自然是打开控制面板,centos系统下,依次打开桌面左上角应用程序->系统工具->设置->通用辅助功能->打字->屏幕键盘,将其选择关闭。
Centos禁止屏幕虚拟键盘弹出
关闭该功能后,重启系统,查看设置保存成功,可以屏幕键盘还是会弹出。
系统设置不通,首先想到屏幕键盘应该是个应用程序,如果能卸载该应用也是可以的。首先用yum search命令搜索keyboard,得到相关包信息如下。

[aaa@qq.com ~]# yum search keyboard
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
============================================================================================== N/S matched: keyboard ==============================================================================================
system-config-keyboard.noarch : A graphical interface for modifying the keyboard
system-config-keyboard-base.noarch : system-config-keyboard base components
xkeyboard-config.noarch : X Keyboard Extension configuration data
xkeyboard-config-devel.noarch : Development files for xkeyboard-config
xorg-x11-drv-keyboard.x86_64 : Xorg X11 keyboard input driver
caribou.i686 : A simplified in-place on-screen keyboard
caribou.x86_64 : A simplified in-place on-screen keyboard
caribou-antler.x86_64 : Keyboard implementation for caribou
gnome-shell-extension-windowsNavigator.noarch : Support for keyboard selection of windows and workspaces in GNOME Shell
iok.x86_64 : Indic Onscreen Virtual Keyboard
kbd.x86_64 : Tools for configuring the console (keyboard, virtual terminals, etc.)
keybinder3.i686 : A library for registering global keyboard shortcuts
keybinder3.x86_64 : A library for registering global keyboard shortcuts
langtable.noarch : Guessing reasonable defaults for locale, keyboard layout, territory, and language.
libgnomekbd.i686 : A keyboard configuration library
libgnomekbd.x86_64 : A keyboard configuration library
libxklavier.i686 : High-level API for X Keyboard Extension
libxklavier.x86_64 : High-level API for X Keyboard Extension
python2-caribou.noarch : Keyboard UI for caribou

从搜索信息看,caribou包是与屏幕键盘相关的,用yum info caribou命令查看该包是已经安装了的。卸载该包是发现因为图形界面相关包依赖于caribou,卸载该软件包会导致图形界面相关软件也被卸载,故此法不可行。
从google上检索了下,并没有必要卸载对应软件包,只需禁用其开机启动即可。查看caribou软件包的自启动文件为 /etc/xdg/autostart/caribou-autostart.desktop,将这个文件删除后,重启系统,屏幕键盘依旧会弹出。
禁用caribou开机自启后,从进程信息中并不能查看到caribou相关进程了,分析屏幕键盘与它无关。接下来用top命令查看进程资源占用信息,触发屏幕键盘后,重复快速点击虚拟键盘的按键,能明显看到gnome-shell进程的CPU资源占用明显升高,因此,屏幕键盘是由gnome-shell程序生成控制的。gnome-shell软件包就庞大多了,它是窗口管理器、应用启动器、桌面布局的集合,想卸载它除非不用桌面环境了。
继续检索吧,查到一个可行的方案,就是改gnome-shell包的源码,重新编译gnome-shell软件包,或者给gnome-shell添加扩展插件。

--- gnome-shell-3.22.2.orig/js/ui/keyboard.js
+++ gnome-shell-3.22.2/js/ui/keyboard.js
@@ -254,8 +254,7 @@ const Keyboard = new Lang.Class({
     },
 
     _sync: function () {
-        this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD) ||
-                               this._lastDeviceIsTouchscreen();
+        this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD);
         if (!this._enableKeyboard && !this._keyboard)
             return;
         if (this._enableKeyboard && this._keyboard &&

下载gnome-shell源码包,用rpmbuild工具编译时发现依赖包较多,编译配置麻烦,相比较而言,添加扩展插件的方案改动较小,另外想关闭/打开屏幕键盘使用起来也更简单。针对屏蔽虚拟键盘功能,有人写出了一个插件:https://extensions.gnome.org/extension/1326/block-caribou/,下载该gonme-shell扩展插件文件aaa@qq.com查看,是一个zip压缩文件。
回到centos系统,用sudo gnome-tweak-tool命令打开优化控制面板,选择扩展->安装shell扩展,选中下载的文件,发现控制面板中多了一个"Block caribou"选项,将该选项打开。
Centos禁止屏幕虚拟键盘弹出
重启之后,发现扩展插件的配置生效了,屏幕虚拟键盘不再弹出了。

相关标签: 疑难杂症