Caps Lock でキーボード レイアウトを変更するには、Deepin デスクトップ環境 (DDE) をどのように構成すればよいですか?

Caps Lock でキーボード レイアウトを変更するには、Deepin デスクトップ環境 (DDE) をどのように構成すればよいですか?

私のシステムは Manjaro Linux です。しかし、これは問題ないと思います。
設定パネルでCapsLockキーボード レイアウト チェンジャーを作成できません。
助けてください

答え1

ibusシステムにインストールします。

起動スクリプトで実行します: ibus-daemon -drx

ここでちょっとしたハックです。レイアウトを変更するために Caps_Lock をバインドすると、大文字と小文字も変更されます。この動作を防ぐには、Caps オプションをマップする必要があります。1 つの解決策: 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

追記:

しばらくして、独立したホットキー リスナーに基づく 2 つの方法を見つけました。最初のアプローチでは xbindkeys と xdotool を使用しますが、遅延があります。

; layout
(xbindkey '(release "c:66") "xdotool key Super_L+space")

2番目はxdotoolの代わりにD-Bus経由で説明しましたここ

#!/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']

関連情報