在Kylin V10系统上修改“显示桌面”的快捷键
问题:在麒麟系统内无法使用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_L和Hyper_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键唤起一次开始菜单后,快捷键的修改才会生效。
总之目前马马虎虎,能将就着够用了。欢迎读者不吝赐教。