Моя система 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
, перейдите к клавише переключения раскладки для deepin (она должна быть /com/deepin/dde/keybinding/system/switch-layout
) и установите ее в положение['Caps_Lock']