nixosでカスタムxkb_keymapを設定する方法

nixosでカスタムxkb_keymapを設定する方法

私は次のレイアウトを持っていますlayouts/en_ru

xkb_keymap {
  xkb_keycodes      { include "evdev+aliases(qwerty)" };
  xkb_geometry      { include "pc(pc104)" };
  xkb_types         { include "complete" };
  xkb_compat        { include "complete" };

  xkb_symbols {
    include "pc+us+ru:2+inet(evdev)"
    include "group(rctrl_rshift_toggle)"
    include "capslock(swapescape)"

    // swap right alt and left control
    replace key <RALT> { [ Control_L ] };
    modifier_map Control { <RALT> };

    // swap ; and : only in us layout
    replace key <AC10> { [ colon, semicolon ],
                        [ Cyrillic_zhe, Cyrillic_ZHE ] };

    // helpers //
    // xinput list
    // xinput test 16
    // xkbcomp $DISPLAY out.xkb
    // cat /usr/share/X11/xkb/rules/base.lst
  };
};

これはにロードされます $HOME/xinitrcこのように

xkbcomp $HOME/.config/layouts/en_ru $DISPLAY

これらすべてをどのように移動しますかconfiguration.nix


最初の部分を追加して実装しました。

xserver = {
  enable = true;
  layout = "us,ru";
  xkbOptions = "caps:swapescape,grp:rctrl_rshift_toggle";
};

私のものですが、configuration.nixこの部分を追加してシステム全体にする方法がわかりません。

// swap right alt and left control
replace key <RALT> { [ Control_L ] };
modifier_map Control { <RALT> };

// swap ; and : only in us layout
replace key <AC10> { [ colon, semicolon ],
                    [ Cyrillic_zhe, Cyrillic_ZHE ] };

ベストアンサー1

これは一時的な問題です。 systemdには修正がありますが、systemdのバージョンはまだNixOSに含まれていません。

https://github.com/systemd/systemd/commit/5016eb56352a7ea1f61ea106fa4f5639fbf6ddd8

何を言っているのか分かります! 「それは答えではない!」そして私も同意する!幸いなことに、.NETservices.udev.extraHwdbファイルに独自のudevルールを追加するオプションがありますconfiguartion.nix

現在作業中の最終修正は次のとおりです。

services.udev.extraHwdb = ''
  evdev:atkbd:dmi:bvn*:bvr*:bd*:svnPurism*:pn*Librem13v4*:pvr*
    KEYBOARD_KEY_56=backslash
''

おすすめ記事