Centos禁止屏幕虚拟键盘弹出
使用centos7.5版本系统的时候,接触摸屏的情况下,点击屏幕老是会触发屏幕虚拟键盘弹出。原本触摸屏下虚拟键盘的作用是便于输入,可以在不用外接键盘的情况下,直接用屏幕键盘作为输入,可是当想把屏幕键盘关掉却发现并不是那么简单。
关闭屏幕键盘的主要原因是运行用户程序时,在触屏界面下操作程序界面,在不点击输入框的情况下,点击界面图标/文字,屏幕虚拟键盘也总会偶尔弹出,影响用户体验。要关掉屏幕键盘,首选项自然是打开控制面板,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"选项,将该选项打开。
重启之后,发现扩展插件的配置生效了,屏幕虚拟键盘不再弹出了。