system/keyboard.nix
{ pkgs, ... }:
{
services.xserver.enable = true;
services.xserver.xkb = {
layout = "fr";
};
services.udev.packages = [
pkgs.vial
pkgs.qmk-udev-rules
];
console.keyMap = "fr";
boot.kernelModules = [ "uinput" ];
users.groups.uinput = {
gid = 77;
};
hardware.uinput.enable = true;
services.kanata = {
enable = true;
keyboards.default.config = ''
(deflocalkeys-linux
a 16
q 30
z 17
w 44
m 39
, 50
; 51
: 52
! 53
ù 40
* 43
^ 26
$ 27
² 41
& 2
é 3
dq 4
' 5
op 6
- 7
è 8
udr 9
ç 10
à 11
cp 12
= 13
< 86
)
(defsrc
² & é dq ' op - è udr ç à cp = bspc
tab a z e r t y u i o p ^ $
caps q s d f g h j k l m ù * ret
lsft < w x c v b n , ; : ! rsft up
lctl lmet lalt spc ralt rctl left down right
)
(defalias
cap (tap-hold 200 200 caps lrld)
tab_a (tap-hold 200 200 tab (layer-switch azerty))
tab_c (tap-hold 200 200 tab (layer-switch colemak))
)
(deflayer azerty
² & é dq ' op - è udr ç à cp = bspc
@tab_c a z e r t y u i o p ^ $
@cap q s d f g h j k l m ù * ret
lsft < w x c v b n , ; : ! rsft up
lctl lmet lalt spc ralt rctl left down right
)
(defalias
dot S-;
1 S-&
2 S-é
3 S-dq
4 S-'
5 S-op
6 S--
7 S-è
8 S-udr
9 S-ç
0 S-à
ctrl (layer-while-held colemak-ctrl)
switch1 (tap-hold-press 0 500 (one-shot 1000 (layer-while-held colemak-accent)) (layer-while-held colemak-code))
switch2 (tap-hold-press 0 500 (one-shot 1000 lsft) (layer-while-held colemak-code))
)
(deflayer colemak
XX @1 @2 @3 @4 @5 @6 @7 @8 @9 @0 XX XX XX
@tab_a q w f p b j l u y @dot XX XX
lsft a r s t g m n e i o , XX ret
bspc z x c d v k k h ' dq XX XX up
@ctrl lmet @switch1 spc @switch2 XX left down right
)
(deflayer colemak-ctrl
XX XX XX XX XX XX XX XX XX XX XX XX XX XX
@tab_a C-a C-z XX C-r C-t C-y C-u C-i C-o C-p XX XX
XX XX C-s C-d C-f home end C-S-left C-S-up C-S-right C-m XX XX XX
C-bspc XX C-w C-x C-c C-v XX XX XX C-S-down XX XX XX up
XX XX XX spc XX XX left down right
)
(defalias
% S-ù
at RA-à
# RA-dq
^ (macro ^ ^)
+ S-=
> S-<
[ RA-op
] RA-cp
{ RA-'
} RA-=
/ S-:
\ RA-udr
| RA--
? S-,
` RA-è
~ RA-2
)
(deflayer colemak-code
XX ! @at @# $ @% @^ & * op cp XX XX XX
@tab_a XX @[ = @] XX XX @+ udr - XX XX XX
XX tab @{ : @} XX @` left up right ret ; XX XX
bspc XX @/ XX @\ @| @~ @? < down @> XX XX up
lctl XX XX spc XX XX left down right
)
(defalias
â (macro ^ a)
ê (macro ^ e)
î (macro ^ i)
ô (macro ^ o)
û (macro ^ u)
ë (macro S-^ e)
ï (macro S-^ i)
)
(deflayer colemak-accent
XX XX XX XX XX XX XX XX XX XX XX XX XX XX
@tab_a q w f p b j @û ù @ï @ë XX XX
XX à @â s t g @ê è é @î @ô XX XX XX
bspc XX XX ç d XX XX XX XX XX XX XX XX up
XX XX XX XX XX XX left down right
)
'';
};
}