動機 #
この設定の目的は、Shift + CapsLockで副作用なく全角半角を切り替えられるようにすることです。
私は普段Windows + US配列のキーボードを使用するときは、Shift + CapsLockで全角半角切り替えています。
Linuxでも同じ操作感を実現したいんですが、単にIMEの設定でShift + CapsLockに全角半角切り替えを割り当てただけでは問題があります。
問題は、Shift + CapsLockを押すと全角半角切り替えと同時にCapsLockもトグルされてしまうので、そのままでは使いづらいということです。
そこで、CapsLockのトグル機能を無効化してShift + CapsLockを純粋に全角半角切り替えのみに使用できるよう設定します。
ググってみたところXmodmapでやるのが簡単そうではあったんですが、そちらはWayland環境では使えないのでXKB(X Keyboard Extension)の設定でカスタムキーボードレイアウトを追加します。
私が使ってるディストリビューションはFedora KDE Spinです。他のディストリビューションでは違うかもしれません。
環境 #
- OS: Fedora Linux 41 (KDE Plasma) x86_64
- ディスプレイサーバー: Wayland
- キーボード: US配列
設定方法 #
編集対象のファイル #
XKBの以下の設定ファイルを編集します。
/usr/share/X11/xkb/symbols/us
- US英語キーボードレイアウトのキーシンボル定義ファイル - このファイルへの修正が肝になります/usr/share/X11/xkb/rules/base.lst
- 基本的な(古典的な)キーボードレイアウト、モデル、オプションの一覧- (テキスト形式)/usr/share/X11/xkb/rules/base.xml
- 基本的な(古典的な)キーボード設定の構造化された定義(XML形式)/usr/share/X11/xkb/rules/evdev.lst
- evdevドライバー用(現在主流)のキーボードレイアウト、モデル、オプションの一覧(テキスト形式)/usr/share/X11/xkb/rules/evdev.xml
- evdevドライバー用(現在主流)の構造化された定義(XML形式)
/usr/share/X11/xkb/symbols/us の編集 #
以下の内容を追加します。
|
|
partial alphanumeric_keys modifier_keys
: キーボードのキー定義を部分的に拡張することを示します。xkb_symbols "custom"
: カスタムキーボードレイアウトを定義するセクションです。“custom"はこのレイアウトの名前で、任意の名前を指定できます。include "us(basic)"
: ベースとなるUSキーボードレイアウトをインクルードします。“us(basic)“はこのファイル内に定義されている基本的なUSキーボードレイアウトの名前です。name[Group1]= "English (Custom)"
: キーボードレイアウトの第1グループ(基本レイアウト)に対する人間が読める名前を定義します。ここでは"English (Custom)“としていますが、任意の名前に変更可能です。replace key <CAPS>
: CapsLockキーの定義を置き換えます。type= "TWO_LEVEL"
: CapsLockキーが2つのレベル(通常とShift)のキーであることを示します。repeat= No
: CapsLockキーがリピートしないことを示します。symbols= [ Caps_Lock, Caps_Lock ]
: 通常状態とShift押下状態の両方で同じCaps_Lockシンボルを生成することを示します。actions= [ LockMods(modifiers=Lock), NoAction() ]
: CapsLock単体では従来通りロック機能が働くように設定し、Shift + CapsLock(2番目のレベル)では何もアクションを実行しないように設定します。
/usr/share/X11/xkb/rules/base.lst, /usr/share/X11/xkb/rules/evdev.lst の編集 #
! variant
のセクションに以下の内容を追加します。
|
|
custom us: English (Custom)
: 先ほど定義したカスタムキーボードレイアウトを、USキーボードレイアウトのバリアントとして追加します。
/usr/share/X11/xkb/rules/base.xml, /usr/share/X11/xkb/rules/evdev.xml の編集 #
以下の内容を追加します。
|
|
<variant>
: 新しいキーボードレイアウトのバリアントを定義します。<configItem>
: キーボードレイアウトの設定項目を定義します。<name>custom</name>
: 先ほど定義したカスタムキーボードレイアウトの名前を指定します。<description>English (Custom)</description>
: このレイアウトの人間が読める説明を指定します。
設定の反映 #
デスクトップセッションに再ログインすると、デスクトップマネージャの設定画面から先程追加したキーボードレイアウトを選択できるようになります。
参考 #
困ったときのArch Wiki