share/X11/xkb/rules/evdev/lst に、ctrl のこのオプション セットがあります
ctrl Ctrl key position
ctrl:nocaps Caps Lock as Ctrl
ctrl:lctrl_meta Left Ctrl as Meta
ctrl:swapcaps Swap Ctrl and Caps Lock
ctrl:ac_ctrl At left of 'A'
ctrl:aa_ctrl At bottom left
ctrl:rctrl_ralt Right Ctrl as Right Alt
ctrl:menu_rctrl Menu as Right Ctrl
ctrl:ctrl_ralt Right Alt as Right Ctrl
ctrl:swap_lalt_lctl Swap Left Alt key with Left Ctrl key
ctrl:swap_lwin_lctl Swap Left Win key with Left Ctrl key
ctrl:swap_lalt_lctl_lwin Left Alt as Ctrl, Left Ctrl as Win, Left Win as Alt
それらのいくつかは機能します-実行するsetxkbmap -option -option 'ctrl:nocaps'
と、正しい動作が得られます。ただし、その他の一部は無視されます。たとえば、setxkbmap -option -option 'ctrl:swap_lalt_lctl_lwin'
.
私が行った観察の 1 つは、無視されたオプションは では表示されますが、 では表示されsetxkbmap -query
ないということsetxkbmap -print
です。この動作のデモンストレーションを次に示します。
$ setxkbmap -option -option ctrl:nocaps
$ setxkbmap -query
rules: evdev
model: pc104
layout: us
variant: colemak
options: ctrl:nocaps
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us(colemak)+inet(evdev)+ctrl(nocaps)" };
xkb_geometry { include "pc(pc104)" };
};
$ setxkbmap -option -option ctrl:swap_lalt_lctl_lwin
$ setxkbmap -query
rules: evdev
model: pc104
layout: us
variant: colemak
options: ctrl:swap_lalt_lctl_lwin
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us(colemak)+inet(evdev)" };
xkb_geometry { include "pc(pc104)" };
};
これをこれ以上深く掘り下げる方法がわかりません。その他の環境情報は次のとおりです。
- Linux ディストリビューションは NixOs です
- ウィンドウマネージャーは XMonad、ディスプレイマネージャーは SLiM、デスクトップマネージャーなし
- キーボード レイアウトは colemak です (qwerty に切り替えても問題は解決しません)
- man ページによると、setxkbmap のバージョンは 1.3.0 です。