Как настроить Deepin Desktop Environment (DDE) для изменения раскладки клавиатуры с помощью Caps Lock?

Как настроить Deepin Desktop Environment (DDE) для изменения раскладки клавиатуры с помощью Caps Lock?

Моя система 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']

Связанный контент