キーボード設定¶
xkb¶
xserverでキーボードレイアウトを設定するおなじみのモジュール。
以下がNixOSでの設定例
services.xserver.xkb = {
layout = "us";
variant = "";
options = "terminate:ctrl_alt_bksp,ctrl:nocaps,fkeys:basic_13-24";
};
キーボードレイアウトがUSであることを設定している。また、以下のオプションを設定している。
| オプション | 説明 |
|---|---|
terminate:ctrl_alt_bksp |
NixOSのxkbオプションでデフォルトで有効化されているので入れている。<C-A-BS> でXorgのセッションを強制終了するようだが、Waylandでは関係ない。 |
ctrl:nocaps |
CapsLockをCtrlに変える。人権。 |
fkeys:basic_13-24 |
xkbではデフォルトで、F13がXF86Tools,F14がXF86Launch5などの特殊キーに再割り当てされていてアプリケーションに渡せないので、これで戻す。↓のkeydおよびfcitx5設定用。 |
Note
niriなどのコンポジタでxkb設定をするところがあったりするが、これを設定するとそのセッション内でオプションが上書きされる。例えばシステムで ctrl:nocaps 、コンポジタで fkeys:basic_13-24 としていたら ctrl:nocaps は消えてしまうので、一番上のレイヤで全部設定しよう!
システムとコンポジタのどっちで設定するかは好みかな。niriの設定をhome-managerに移植できたら自分もxkbはそっちに書くかも…?
keyd¶
カーネルレベルのキーリマップ。fcitx5 のAltでの切り替えのために使用している。NixOSで以下のように設定している。
services.keyd = {
enable = true;
keyboards.default = {
ids = [ "*" ];
settings.main = {
rightalt = "overload(altgr, f13)";
leftalt = "overload(alt, f14)";
};
};
};
overload を使うことで、長押し(押下しながら他のキーを押下したとき)と単押しで挙動を変えられる。右Altの単押しをF13に、左Altの単押しをF14に変えている。右ALtは altgr となっているのでリマップ後も区別が残っている。
Note
右AltはISO_Level3_Shiftとして特殊文字を打つために使われるキーコードになってることもあるらしい。これを使っている場合はむやみに上書きするべきではない。なお、keydのaltgr はこれのことではなく通常の右Altを表す識別子なので、この設定では右Altから正しく右Altに戻せている。