我的系统是 Manjaro Linux。但我认为这并没有什么关系。
在设置面板中,我无法CapsLock
作为键盘布局更改器。
请帮忙。
答案1
安装ibus
到您的系统中。
在一些启动脚本中运行它:
ibus-daemon -drx
现在小黑客。当你绑定 Caps_Lock 来改变布局时,大小写也会改变。为了防止它的行为,需要映射 Caps 选项。一个解决方案:
setxkbmap -option 'lv3:caps_switch_latch'
转至 ibus 首选项以更改所需的布局和快捷方式。当您按 Caps 时,它被定义为ISO_Level3_Shift
。一切都完成了!
笔记:
编辑/etc/X11/xorg.conf.d/00-keyboard.conf
持久 xkb 选项
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbOptions" "lv3:caps_switch_latch"
EndSection
更新:
后来我发现了另外两种方法,基于独立的热键监听器。第一种方法使用 xbindkeys 和 xdotool,它有一个滞后。
; layout
(xbindkey '(release "c:66") "xdotool key Super_L+space")
第二个通过D-Bus代替xdotool,描述一下这里
#!/bin/sh
LANG=$(dbus-send \
--type=method_call \
--print-reply=literal \
--dest=com.deepin.daemon.InputDevices \
/com/deepin/daemon/InputDevice/Keyboard \
org.freedesktop.DBus.Properties.Get \
string:"com.deepin.daemon.InputDevice.Keyboard" \
string:"CurrentLayout" | awk '{print $2}')
if [[ $LANG = 'us;' ]]; then
dbus-send \
--type=method_call \
--dest=com.deepin.daemon.InputDevices \
/com/deepin/daemon/InputDevice/Keyboard \
org.freedesktop.DBus.Properties.Set \
string:"com.deepin.daemon.InputDevice.Keyboard" \
string:"CurrentLayout" \
variant:string:"ru;"
else
dbus-send \
--type=method_call \
--dest=com.deepin.daemon.InputDevices \
/com/deepin/daemon/InputDevice/Keyboard \
org.freedesktop.DBus.Properties.Set \
string:"com.deepin.daemon.InputDevice.Keyboard" \
string:"CurrentLayout" \
variant:string:"us;"
fi
答案2
打开dconf-editor
,导航到深度操作系统的开关布局键(应该是/com/deepin/dde/keybinding/system/switch-layout
)并将其设置为['Caps_Lock']