问题:在麒麟系统内无法使用Win+D快捷显示桌面

解决方案

一.使用麒麟系统的默认快捷键 Ctrl+Alt+D

在终端内运行以下命令可查看当前的显示桌面功能所对应的快捷键。

gsettings get org.gnome.desktop.wm.keybindings show-desktop

返回结果为

['<Control><Alt>d']

要按三个键才能返回桌面,太麻烦了!

二.使用键位较接近的快捷键进行替代

可以在终端内对显示桌面功能的快捷键进行修改。

gsettings set org.gnome.desktop.wm.keybindings show-desktop "['<Alt>d']"

但笔者已经习惯了Win+D的手法,即使换成Alt+D也仍然很不适应。此外,这组快捷键本应该用于在浏览器内定位至地址栏,已经“名花有主”了。

三.使用xmodmap修改键盘映射

在Linux里,Win键的名称通常为<Super>。一个自然的想法是,直接将显示桌面的快捷键修改为['<Super>d']

gsettings set org.gnome.desktop.wm.keybindings show-desktop "['<Super>d']"

但这样并不会奏效。原因在于,左右Win键在麒麟系统中被锁定,只能用于呼出开始菜单,并拦截组合键信号。

在终端中运行

xmodmap

得到当前的键盘映射

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

可以看到,mod4绑定了Super_L(左侧Win键,物理码133,即0x85), 和Super_R(左侧Win键,物理码134,即0x86),导致其无法用于其它的快捷键组合。

根据此情况,设立目标为“解放左侧Win键,用于Win+D显示桌面等快捷功能;保留右侧Win键用于呼出开始菜单”

第一步,把Super_LHyper_L从默认的mod4组里剥离出来
释放键盘物理码的占用

xmodmap -e "remove mod4 = Super_L"

释放Hyper代号的占用

xmodmap -e "remove mod4 = Hyper_L" 

第二步,把左侧Win键(物理码 133)改名为Hyper_L

xmodmap -e "keycode 133 = Hyper_L"

第三步,把Hyper_L添加进空闲的mod3

xmodmap -e "add mod3 = Hyper_L"

第四步,把Super_L重新放回mod4(不放回去貌似也没问题)

xmodmap -e "add mod4 = Super_L"

第五步,修改显示桌面快捷键

gsettings set org.gnome.desktop.wm.keybindings show-desktop "['<Hyper>d']"

此时可以正常使用左侧Win+D的快捷键回到桌面。
由于xmodmap的参数会在重启系统后重置,因此需要将这套命令写入开机自启动。
新建一个文本文档,写入以下内容,在麒麟系统的控制面板内将其设置为启动项即可。

[Desktop Entry]
Type=Application
Name=Remap Left Win Native
Comment=开机自动将左Win映射为Hyper以支持Win+D显示桌面
Exec=bash -c "sleep 3 && xmodmap -e 'remove mod4 = Super_L' && xmodmap -e 'remove mod4 = Hyper_L' && xmodmap -e 'keycode 133 = Hyper_L' && xmodmap -e 'add mod3 = Hyper_L' && xmodmap -e 'add mod4 = Super_L'"
StartupNotify=false
Terminal=false
X-GNOME-Autostart-enabled=true

后记

本文的Linux命令完全由Gemini提供。
出于笔者不知道的原因,每次重启后,必须在先用左Win键唤起一次开始菜单后,快捷键的修改才会生效。
总之目前马马虎虎,能将就着够用了。欢迎读者不吝赐教。

添加新评论