나는 다음과 같은 레이아웃을 가지고 있습니다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
무슨 말인지 알아요! "그건 답이 아니야!" 그리고 나도 동의한다! 다행히도 .NET services.udev.extraHwdb
파일에 자체 udev 규칙을 추가할 수 있는 옵션이 있습니다 configuartion.nix
.
현재 작업 중인 최종 수정 사항은 다음과 같습니다.
services.udev.extraHwdb = ''
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnPurism*:pn*Librem13v4*:pvr*
KEYBOARD_KEY_56=backslash
''
답변2
sessionCommands = ''
${xorg.xkbcomp}/bin/xkbcomp ${layout} $DISPLAY &
'';
};